Development

On this site

External links

Thanks for considering contributing to Ironclad, it means a lot.

There are several ways one can help the Ironclad project, from writing and correcting documentation to contributing source code. A great way to help Ironclad as well is sharing it with people that may find it interesting!

Finding what to contribute

For all of Ironclad's projects, like ironclad itself, this website, and util-ironclad, open tasks, along with their progress, effort required, and priority, are tracked on the Savannah task manager (Submit a new item). Feel free to read the available items to give input, take the lead and contribute, or submit your own items.

Testing changes

For testing changes to Ironclad itself, one will need a system running Ironclad. Our recommendation is using Gloire in a virtual machine or real hardware to test modifications. For a guide on how to modify Gloire's Ironclad, building images with custom kernels, and testing them, please check this article.

Submitting changes

One can send a patch to any of the Ironclad's Patch Manager (create an item) or the project's mailing lists as well.

When submitting contributions, only contributions licensed under the GPL, or alternatively, a GPL-compatible license, will be accepted.

In order to ensure this is the case, submitted patches will need to certify their work by accepting the project's Developer Certificate of Origin (DCO). This is done by either adding Signed-off-by to the patch, either manually or using git's -s flag, or by stating compliance in the patch submission.

DCOs are not CLAs!

DCOs do no copyright assignment, and the contributor keeps each and every right over their contribution. Individual contributor copyright is one of the core pillars of free software. This process only gives a bit of legal shielding for the project if that is not the case.

Reproducible builds

Reproducible builds enable anyone to reproduce bit by bit identical binary packages from a given source, so that anyone can verify that a given binary derived from the source it was said to be derived. There is more information about reproducible builds on the Debian wiki and on https://reproducible-builds.org. These pages explain in more depth why this is useful, what common issues exist and which workarounds and solutions are known.

We try to apply these principles to Ironclad. We periodically check ironclad master branch and each release tarball before releasing for variations using reprotest.

Build variables

Here are listed the expected variables that will change build output, if they remain constant, Ironclad builds will be reproducible.

Variable Reason
Compiler/linker versions Generated code will change
gprbuild/gnatmake versions Different tooling versions may change flags
OS directory listing order gprbuild/gnatmake use OS directory listing order to fetch source directory contents for compilation and linking, which makes them a compilation variable. Hopefully, that gets fixed soon.

Development contact

Ironclad has several mailing lists and official servers and services for users as well as developers to talk with each other and coordinate, feel free to check them out at the community page.

Userland development

A kernel is really dependent on its user programs. Here is a list of projects that are a great option to get involved with, without having to do kernel development: