Collaboration Model - alice-adventures/Alice GitHub Wiki

Collaboration Model in Alice

A Unified Approach for Participants and Developers

The proposed collaboration model for Alice involves three key artifacts

  • The Alice framework
  • A data repository for each Problem Source
  • The Participant's own repository

Alice Framework

The Alice framework, with all the required interfaces and implementations, will be available via Alire. This means that Participants can easily download and update the framework, while Developers can distribute it in a uniform way.

Alice framework supports different Problem Sources by providing a set of interfaces that Participants must implement. Each Problem Source has its own requirements and there will be big differences among them. For example, for Project Euler there are two interfaces that Participants can choose: a CLI or a GUI. On the other hand, CodinGame will require more complex interfaces and Problem Runners to allow interaction in graphical puzzles.

Problem Source Repository

There will be a separate place for each Problem Source, for example Alice_Project_Euler, where common Problem specifications and solutions¹ will be shared among all Participants. Depending on the complexity, this place will be simply a GitHub repository (most probably in the case of Project Euler) or another Alire crate (most probably in the case of CodinGame).

Participants interested in an specific Problem Source can integrate its personal repository² or Alire crate to start solve Problems. In some cases, Participants will be allowed to upload new content as well. This will enable a collaborative environment where Participants can share and learn from each other's solutions.


Please note that Alice is still in early development stage and this model can change over time. Take a look of the first proof of concept of this model in Getting Started.


¹This does not mean that solutions will be made publicly available, but there will be means to check if an answer is correct or a set of test cases to check Participant's implementations.

²Possibly as a GitHub submodule.