Development
LibreCube projects are community-maintained and we appreciate contributions from anyone. Everyone is welcome to join the LibreCube community, there is no formalism attached to it. Simply start contributing!
In order to ensure efficient and effective contributions that are of good quality, we have put in place some rules and guidelines. Please make sure to read them before making your first contribution.
Git Repositories
All our hardware and software projects are hosted on GitLab. They are categorized as following:
- Prototypes: New developments usually start out as prototypes. They are under more or less heavy development until they reach a point where they are then moved into one of the following categories.
- Library: In this category we have software modules that serve specific purposes. Most of them are Python packages. They can be integrated into other projects (for example, by the projects in the Elements category) to provide their functionality. A lot of communication protocol implementations are found here.
- Elements: Here is the core of what we are doing. This are the hardware and software repositories that are the components of the LibreCube ecosystem. Everything in this category is stable and ready to be used in production. Expect very infrequent changes here, apart from occasional updates and bug fixes.
- Templates and Tools: Various stuff to help you during development.
Contribution Guidelines
Read the Coding Style guideline to learn how to write beautiful and coherent code. This is crucial, because your code will be read by a lot of people, including your future self 😄.
Typically, there is more than one person to contribute code to a project. Thus, we need to have a proper workflow to ensure that this works smoothly. Please read the Git Workflow guidelines on how to do that.
Work Organization
LibreCube contributors come from various parts of the world and from all walks of live. Different time zones and availability makes it a challenge to coordinate the overall work. Therefore, lots of organization is coordinated offline. We have an OpenProject Server to help us with that.
While you can and should raise specific issues and merge requests on the individual git repositories directly, the overall planning for tasks and activities will be done on the OpenProject server.
And remember, there is always the Chat where you can start/join a discussion!
Learning Resources
In the effort to provide you with learning resources that are easy to follow and can be used for example for teaching in a class or running a workshop, we publish such resources in the Lectures and Tutorials section.