Contributing

Contributing #

All the LionsOS code is available on GitHub under an open-source licence.

Key repositories are

Currently, the main LionsOS repository has all the projects it depends on (such as sDDF and libvmm) as Git submodules.

To contribute, first get the examples working. Then generate pull requests to the appropriate repository.

General Guidelines #

We use the same conventions as the seL4 microkernel which can be found here:

Please read and abide by these — especially the Code of Conduct.

Areas of contribution #

Bugs and feature requests #

If you have issues with building, running or using LionsOS please file an issue on GitHub or see the getting help section.

GitHub is used to track bugs and features.

Please open bug and feature requests in the respective repository that fits most with the issue. If you are not sure what repository is best, please open an issue on the LionsOS repository.

Documentation #

If you try LionsOS and blog or vlog about it, please tell us via the devel@sel4.systems email list. Noteworthy blogs will be linked from our site(s).

If you find issues (things that are documented wrong, missing documentation, or are confusing) raise issues in the appropriate repository, and/or generate pull requests to fix the issue. That includes pull requests to the documentation repository.

New device drivers and device virtualisers #

All drivers and virtualisers are a part of the seL4 Device Driver Framework and hence they should be contributed there.

When writing a new driver or virtualiser you will need to be familiar with the general design of sDDF as well as the design of the device class you are working with. This can be found in the design documentation.

New drivers and virtualisers are welcomed. These will generally be contributed via pull requests to the sDDF repository.

Upstreaming a new device class is much more work as it involves a signifcant amount of design, evaluation and experimentation. If you wish to add a new device class to sDDF please get in touch.

As drivers are not of much use on their own, please add in addition to the driver, an example that uses it, and CI rules to test it, at least to the ‘it builds cleanly’ stage. The example can either be in the LionsOS examples directory, or in the sDDF examples directory.

Virtual machines #

For creating and managing virtual machines in LionsOS we use libvmm. This is a minimal library for allowing users to run a guest OS such as Linux in a LionsOS system.

The main area contribution for libvmm is more virtIO devices (also known as backends). The virtIO specification outlines a number of various device classes, some of which we have such as block and network.

Complete Systems #

The intention is that (eventually) LionsOS systems can be built entirely out-of-tree. If you build an open-source LionsOS-based system, please add a link to the documentation by submitting a PR to the LionsOS docs repository.

Getting Help #

LionsOS was built and is supported by a small team at UNSW, Sydney. We try to respond to queries on the devel@sel4.systems mailing list (sign up here) and via the seL4 Mattermost chat server.