Code review


English | Español

Return to index

Our short term plans and need for help

GNU Boot is seeking contributors for various jobs, both simple and technical.

Information

The Libreboot name has a long history in the free software community. Most occurrences of the uses were intended to refer to boot software that was libre, and there is no way to edit those occurrences to refer to libre boot software by a different name. Therefore, we need help from the wider community to inform people about the inclusion of nonfree software in the Libreboot releases.

Another way to help GNU Boot and take a stand for fully free software is to change URLs across the web from <libreboot.org> to <gnu.org/software/gnuboot>, to make sure that the mentioned software is reliably free software.

You can also help our project by informing people about GNU boot or other 100% free boot software.

Documentation and/or testing

We need help for reviewing and fixing this website (which also contains the documentation). Many pages are inherited from Libreboot and might be outdated or specific to Libreboot.

If you have a working flash chip programmer (this is special hardware that is required to install GNU Boot on some computers) and that you know how to use it without breaking computers, we really need your help, especially because few people know how to do that.

We don’t have good instructions yet for using such hardware safely, but until we do, we also need help from people who know how to use these, at least for testing untested releases and for testing or updating the installation instructions.

We currently have a list of what computers aren’t tested yet in the bug 64754.

As for reporting what you tested, you can open a new bug or send a mail to the gnuboot or Bug-gnuboot mailing list.

Technical contributions

GNU Boot is currently using old versions of upstream software (like Coreboot, GRUB, etc) and so they need to be updated. Patches for that need to be sent on the gnuboot-patches mailing list.

We also have a bug tracker at https://savannah.gnu.org/bugs/?group=gnuboot that contains a list of bugs that needs to be fixed.

How to contribute

GNU Boot repositories

GNU Boot development is done using the Git version control system. Refer to the official Git documentation if you don’t know how to use Git.

The main GNU Boot repository is at https://git.savannah.gnu.org/cgit/gnuboot.git. It also contains the documentation/website and code to build it.

GNU Boot also has two additional repositories: one for presentations done at conferences or for mirroring source code that disappeared.

You can download any of these repositories, make whatever changes you like, and then submit your changes using the instructions below.

Testing your modifications

For technical contributions or for contributing to the website, you might need to test your modifications.

This currently requires to use a GNU/Linux distribution as building GNU Boot or its website on other operating systems is completely untested.

For instructions on building GNU Boot, you can refer to the build instructions.

Website

The website is in the GNU Boot source code inside the website/pages directory.

It is currently written in Markdown, specifically the Pandoc version of it and the static HTML pages are generated with lbssg, a static website generator.

The documentation that explains how to build it is in the README inside the website directory.

Name not required

Many projects using free software licenses do accept contributions from anyone but in many cases they also need to be able to track the copyright ownership of the contributions for various reasons.

This usually makes anonymous or pseudonymous contributions to the code more complicated, but that doesn’t make them impossible.

The main difficulty for GNU Boot is that GNU boot wants to contribute some of its changes to other projects it reuses such as Coreboot, GRUB, Guix, and so we need GNU Boot code or documentation contributions to be compatible with the way other projects track copyright ownership.

Because of that, if you want to contribute anonymously or pseudonymously the best way is to contact us publicly (for instance on our mailing list, using a mail and name that you use only for that) so we could look into it and try to find ways that work for GNU Boot but also potentially for other upstream projects as well and this way enable you to contribute to a wide variety of projects under free licenses with way less friction.

We already looked into it for various cases, and pseudonymous contributions should not have any special issues for contributing to most of the GNU Boot documentation/website and for translating them, for Guix packages, and for most parts of the GNU Boot build system. As for contributions that include patches to other upstream projects like Coreboot, we would need to look into it.

Note that if you send patches to GNU Boot, the contributions that you make are publicly recorded, in a Git repository which everyone can access.

And these contributions include a name, an email address and even a precise date in which the contribution was made. It is relatively easy to change the name and email with the ones you want as the git commit command has options for that.

If you do that, before sending patches make sure to use git log git --pretty=fuller and git show --pretty=fuller to confirm that you used the right name and email before publishing your changes.

Note that even if you do that, it might still be possible to link your contributions to your identity for instance with stylometry, by looking at network connections if you don’t use Tor, by looking at the time/timezone of the contribution, etc.

Licenses

We require all patches to be submitted under a free license: https://www.gnu.org/licenses/license-list.html.

Always declare a license on your work! Not declaring a license means that the default, restrictive copyright laws apply, which would make your work non-free.

GNU/Linux is generally recommended as the OS of choice, for GNU Boot development. However, BSD operating systems also boot on GNU Boot machines.

Contributing patches to GNU Boot

You can submit your patches to the gnuboot-patches mailing list, preferably by using git send-email.

A simple guide to properly configure your git installation to send emails has been made by sourcehut or you can use the sourcehut interface to create patches.

You’ll have to specify the mailing list address:

git config --local sendemail.to gnuboot-patches@gnu.org

Please also sign-off your patches, which you can configure with:

git config format.signOff yes

Once you have submitted your patch, the GNU Boot maintainers will be notified via the mailing list and will start reviewing it.

All the patches that are added to GNU Boot require (at least) the agreement of its two maintainers. The maintainer agreement is often indicated with text like that:

Acked-by: <maintainer name> <maintainer email>.

in an (email) reply form the given maintainer.

The maintainers agreement on a patch doesn’t necessary mean that there is an agreement on the order in which the patch will be added. So the patches can also land into a ‘gnuboot-next’ branch temporarily and potentially be re-ordered until all the GNU Boot maintainers agree to push all the commits in the chosen order into the main branch.

That ‘gnuboot-next’ branch can also be used when the GNU Boot maintainers agree to merge the patches but need to wait for the approval of the GNU project for instance if there are legal questions that also require the approval of the GNU Project.

Translations

If your patch contains a Spanish translation, or touches files that are in English but that are also translated in Spanish, it will also require the agreement of Jordán ‘iShareFreedom’ / isf who is responsible for translations.

Technical contributions that impact translations in some way will also require the agreement of Jordán ‘iShareFreedom’ / isf.

Testing for common issues in patches

Once you built GNU Boot images or the GNU Boot website, it is possible to run various automatic tests. You can run them with the following command:

make check

either in the website directory (if you want to test the website) or in the top directory (if you want to test the rest).

We also have a script that can test your patch for common issues we identified. It can be used in this way (with 0001-fix-bug-#1234.patch being the patch you are about to send):

$ guile ./scripts/checkpatch.scm ./0001-fix-bug-#1234.patch
  [...]
  total: 0 error, 0 warning, 88 lines checked

  ./0001-fix-bug-#1234.patch has no obvious style problems and is ready for submission.

While running all these tests is not mandatory (unless you are a GNU Boot maintainer), it can still be helpful and save time for everybody as it can spot issues before sending patches to the mailing lists, and this will let you fix the issue faster than waiting for other people to run tests and asking you to fix your patch and resend it once it is fixed.

Maintainers

Adrien ‘neox’ Bourmault and Denis ‘GNUtoo’ Carikli are the current maintainers of this GNU Boot project. They will also review patches sent to the mailing list.

What to contribute or not contribute?

Support for more computers

GNU Boot welcomes contributions to add support for more computers.

But unless GNU Boot already works on computers that for some reasons are not yet listed as supported, there will be some more work to do than just testing and reporting what works.

GNU Boot is a 100% free distribution similar to other 100% free distributions like Parabola or Trisquel, and like Parabola or Trisquel, it reuses other software to make something that can be installed.

Most of the work on GNU Boot consists in testing already supported computers, improving the documentation and various packaging work.

Like with many other free software projects, the GNU Boot maintainers are very busy running the project and doing improvements that will benefit the project in the long term, they most likely don’t have the time to add support for newer computers themselves at the moment, but they can help you getting the job done with some guidance and by reviewing patches.

So if you want to add a new computer, the first part of the job is to verify if the computer can boot and is usable without nonfree software. It’s a good idea to start by reading the “Hardware compatibility” section of this FAQ to avoid the most common mistakes with that.

Then once you’re confident enough that your computer can boot with fully free software, you can open a bug report and/or contact the GNU boot project in one of its mailing list to notify the GNU Boot maintainers and other contributors about that as this way the information about this computer will not be lost.

This way if you don’t have time anymore to work on it, maybe it would interest other people later on, or maybe not. In addition, this will help you getting some feedback from other people to help you understand if you’re on the the right track or not with the computer you want to add support for.

Then once this is done, the computer will need to be supported well by other project: like Parabola or Trisquel, GNU Boot reuses other projects to support hardware. For instance Parabola relies on linux-libre for its drivers.

GNU Boot relies on software like Coreboot or U-Boot instead. So you will have to add support for your computer in such projects. This can be very complicated to do if you’re not used to work on low-level software like drivers, kernels, microcontrollers, etc, unless there is already a computer very similar to the one you want to add support for (in that case it might be a good way to get started, though expect to have to learn many things along the way).

Once this is done, you can add support for that computer in GNU Boot by doing some packaging work, testing, and writing some documentation. This is relatively easy to do.

Misinformation

There is some misinformation on the internet on GNU Boot, the former Genuine Libreboot project (which is the ancestor of GNU Boot) and their maintainers.

Note that opinions on GNU Boot or its ancestor, including negative ones are not misinformation.

An example of misinformation that doesn’t require a trigger warning is that it was the FSF who started the ancestor of GNU Boot.

While some people employed at FSF helped significantly in various ways, most of the time indirectly (by helping people install GNU Boot, by enabling us to use rsync instead of CVS in the GNU infrastructure, etc), and that we appreciate a lot this help, most of the work on GNU Boot or its ancestor was not made by the FSF or its employees.

This can easily be verified by looking at the GNU Boot release announcements and by downloading the GNU Boot source code and looking at the authors of the changes. Even anonymous contributions are recorded as such.

All that is also easy to verify because GNU Boot also includes all former changes from Genuine Libreboot.

As the GNU Boot maintainers are already busy with GNU Boot, they don’t have the time nor the will to look into each of the misinformation out there (depending on the content and the amount of things to look at, this can also be toxic).

So if you found obvious misinformation, insults, etc, on the internet, about GNU Boot or its maintainers, the way to deal with it is to not notify the GNU Boot maintainers about it but instead to archive it on https://web.archive.org/ and then to contact the service hosting this content to make it go away.

If you instead found false information on the GNU Boot website or manual instead, since all that is already recorded in the changes history of GNU Boot, it is already archived, so the way to fix is either to notify the GNU Boot maintainers about it with a bug report or through one of the GNU Boot mailing list, or simply to send a patch to fix it.

Markdown file for this page: https://gnu.org/software/gnuboot/contribute.md