I have some wonderful news. I had proposed a project with RTEMS for Google Summer of Code (GSoC) which got selected. 🎉 Which means that this blog post is going to be one of those GSoC’s customary blog posts where I summarize my application.
In fall 2018, I participated in Google Code-in . It opened me up to the idea behind FOSS and various other things including global collaboration. Fast forward five years to today, and now I am a developer of various open-source projects.
What drew me to open-source was the transparency it provides. One can simply read the source to see how their favourite feature was implemented. This fosters growth and in turn leads to the development of a variety of new other software.
I have learned and benefited a lot from open-source software, which is why I love giving back to the community. Extending that same belief, I decided to participate in the Google Summer of Code (GSoC) programme this year.
Choosing an organization #
I love working with hardware and writing firmware for embedded devices. There were not many organizations on GSoC who were involved in firmware projects. This made the short-listing process easier as I did not face any choice overload. Among these organizations, Real-time Executive for Multiprocessor Systems (RTEMS) stood out as it was an RTOS and had projects involving a Raspberry Pi. Both topics were something I wanted to start. Therefore, I applied for a project with RTEMS. It is an open-source real-time operating system (RTOS) which widely used in space flight, medical devices, networking and many more embedded systems across a wide range of processor architectures including ARM, PowerPC, Intel, SPARC, MIPS, RISC-V, Blackfin, MIPS, Microblaze and more.
Domain relevance, although important, was not completely why I chose RTEMS. Their active and helpful community made me feel right at home from the get go. Therefore, I felt confident in spending my summer working with them.
Fun fact, RTEMS is also a part of the Curiosity Rover on Mars.
Pre-application tasks #
Majority of the organizations in GSoC ask the applicants to finish a few basic tasks with the following motives:
- To ensure that the applicant gets used to the development workflow
- To ensure that they have the motivation to learn new things
In case of RTEMS they had the following pre-requisites for the application:
- Submitting a couple of patches
- Subscribing to their mailing lists and reaching out to mentors
- Compiling the kernel and toolchain from source and running a “Hello, world!” program on one of their board-support packages (BSPs).
During the application period, I submitted a couple of patches on improving the documentation, and I ran the “Hello, world!” program on my Raspberry Pi 4B.
The project I went with #
The project which I proposed is on improving Raspberry Pi 4B support in the kernel. This wasn’t listed on the project ideas page. I formulated this proposal through interactions with the developers by asking them what they would like to see in RTEMS.
Finally, I ended up with a proposal suggesting the implementation of the following:
- Drivers for basic peripherals like GPIO, I2C, SPI
- SD card R/W access drivers
- Framebuffer support
- Flattened device trees for board specific metadata
In GSoC speak, this would be large project which would span across three months starting from July.
I think this will be a fun and challenging project as I have zero experience with Raspberry Pi firmware as of now. But I’m pretty sure it’s something I can manage with perseverance and some guidance from my mentors.
I’ll also try to provide updates about the development progress as time goes on.