Lemma Open source note-taking for Linux

Development

Lemma is free software licensed under GPL version 3 or later. See the COPYING file for details. The source is managed on GitHub, and we also use the GitHub issue tracker.

Development usually proceeds in four steps.

  1. Raising an Issue
  2. Design Phase
  3. Coding a Solution and Creating a Pull Request
  4. Code Review

You don't have to do all of the steps yourself. You could just open an issue, just participate in resulting discussions, just contribute code, or just help with code reviews.

Raising an Issue

If something in Lemma doesn't work the way you expect, or you want to suggest improvements, please use the issue tracker. You can also suggest improvements to the documentation.

Try to suggest only one thing in any given issue.

After the issue is opened, we will usually repond to it quickly. If we don't think the issue applies or can be fixed, we will close it with a comment. Otherwise we will attach a label to it, saying either bug or enhancement. If it's a bug, that means something doesn't work right, and the issue should have high priority. If it's an enhancement, that means solving this issue will be a good thing, but it's not urgent.

Design Phase

Now we need to agree on how to proceed.

If the issue involves changes to the user interface, we usually attach the label needs design. This means there should be a mockup first, usually in the form of an image. You can create and discuss mockups in the respective issue on GitHub. When we agree on a candidate, the needs design label is removed.

If the issue touches the fundamental code architecture of Lemma or it's a big new feature, we attach the label epic. There should be some discussion on how best approach such an issue. When we agree on a solution, the epic label is removed.

But there is not always a need for design dicussions. If the issue at hand is a bug and you found a quick fix, you can just open a pull request directly. You can do that also if you have participated before, have a good grasp on the way Lemma is build, and you find there's a obvious way of coding a solution. But it's often best to first ask for an opinion if your code touches many modules.

Coding and Pull Requests

You can propose code changes by opening a pull request on GitHub.

Explain (briefly) what the code does.

Try to keep the changes as small as possible, but not smaller. That means don't change many things at once, but a pull request should contain a full solution. We might ask you to split it up in the code review (see below).

Add a link to the issue the pull request relates to.

Code Review

After you created a pull request, it undergoes a review process. There are usually some changes to the request in the course of this process. If all issue that are raised are resolved, the code is merged and will be in a future release of Lemma.