Interested in Contributing to SeL4
Hi Developers, This is Aditya Upadhyay, would like to contribute in SeL4 microkernel. I am trying to figure out any open projects on wiki page of SeL4 Systems. One project that is related to POSIX Compliance. I can see here: https://docs.sel4.systems/SuggestedProjects.html but I am still figuring out the stuff to contribute. Any Valuable suggestions would be appreciated. Would you like to point any blogs related to SeL4? I have some experience of contributing the code in Open Source Organisation Newlib-Cygwin. I was working on POSIX Compliance for RTEMS as a part of Google Summer of Code 2017 Students internship. To stick to Open Source, I am mentoring RTEMS Google Summer of Code Project this year also. I have always learned from mentoring and contributing to open source. I have deep understanding of Linux Operating System Internals and Monolithic Kernels as well. I am also looking for Research Internship in Distributed Systems especially in Microkernel and Microhypervisor field. I am open for any research oriented projects in this field. Regards, Aditya Upadhyay
Hi Aditya, We have several blog posts about seL4 (and related topics) on https://research.csiro.au/tsblog/ . Also Gernot blogs about seL4-related topics on https://microkerneldude.wordpress.com/ With regards to seL4 projects, you’ve already found our wiki page of suggested projects, which has some ideas, but is by no means an exhaustive list. The project to develop a POSIX environment on seL4 is great, however it’s also a huge project to jump into. It can be broken down into smaller parts such as providing dynamic memory management, process management, file operations, etc. However doing any of these generally results in developing a POSIX-compatible OS model on top of the microkernel, and that in itself is a large task (have a look at the robigalia project[1] which is aiming to design and develop an OS on top of seL4). Smaller projects that provide a (relatively) more gentle introduction to seL4 include: - platform ports (a kernel port is the first step, but also important are the various drivers necessary to use a platform or particular board); - support for other languages on seL4 (we mainly support C, but also have some support for Rust, but languages like C++, Java, etc. are not well supported); - developing useful services such as file systems (e.g. port LittleFS), web server, database server, display server, etc.; - developing debugging tools, - etc. One of the best ways to figure out what to contribute is to try to build a (simple) system based on seL4 (e.g. using CAmkES) and then make note of all the things that are difficult or awkward to do or are missing and improve those. More research-related topics include figuring out how to do any of the above suggestions in a trustworthy way (i.e. in a way where there is high assurance of their correctness, e.g. through formal verification). How to specifically contribute depends on whether you’re working on an existing code base (e.g. modifying kernel, CAmkES, or our existing libraries), in which case you’d contribute as per our contribution policy[2], or whether you’re doing something independent, in which case you can also host it yourself (e.g. in your own github account). Ihor. [1] https://robigalia.org/ [2] https://docs.sel4.systems/Contributing.html
If you're interested in contributing to a POSIX-compatible seL4-based OS, you could take a look at my OS project, UX/RT https://gitlab.com/uxrt/. It will be a QNX-like OS written in Rust and C, using a fork of feL4 as its kernel binding library, along with ports of a few of Robigalia's mid-level libraries to feL4 (the Robigalia kernel binding library doesn't use libsel4 and is broken much more readily by kernel changes than feL4, which does link with libsel4). Currently I'm not very far along with it though. I have a bootloader (UX/RT will use a somewhat QNX-like single image boot architecture, unlike any other L4-based OS) and build infrastructure, along with a completely nonfunctional root server that prints some of the bootinfo to the serial port, as well as the aforementioned library ports. I just finished porting Robigalia's allocator to feL4, and I am about to start writing code to initialize and test it. I've got most of the design planned out, although I'm still undecided on some of the specifics of the implementation. My (not particularly well organized) notes on what I've got planned are at https://gitlab.com/uxrt/uxrt-toplevel/blob/master/architecture_notes.
participants (3)
-
Aditya Upadhyay
-
Andrew Warkentin
-
Ihor.Kuz@data61.csiro.au