Redox OS has selected 5 students to sponsor for the following projects:
- Deepak Sirone - FAT32
- Ioannis Valasakis - ARM64
- jD91mZM2 - Tokio
- 董瑜亮 - Network Config
- Tavish McDonald - RedoxFS
We would like to thank all of the 88 applicants for their applications - we hope that you will consider contributing to Redox OS in the future!
For archival purposes, here is the previous page:
Becoming a Sponsor
At the moment, Redox OS has $10,800 in donations from various platforms to use to fund students. This will give us three students working for three months, if each student requests $1200 per month on average as described in Payment.
In order to fund more students, we are looking for sponsors who are willing to fund RSoC. Donations can be made on the Donate page. All donations will be used to fund Redox OS activities, with about 90% of those over the past year currently allocated to RSoC.
Becoming a Student
RSoC provides more freedom than the GSoC program. Any person can participate, on a schedule of their choosing, for the payment of their choosing.
If you would like to sign up as a RSoC student with Redox OS, please send an
email to firstname.lastname@example.org with the following
[RSoC] in the subject:
Your name, or whatever you would like to be referred to as.
Your location, ideally identifying which time zone you are in.
Your programming background, with links to source code if available.
Your project idea, please see Projects for examples.
Your estimated start and end date, ideally from June 1st to August 31st.
Your desired payment, see Payment for more information.
Any other information you would like to provide.
The deadline for submissions is May 1st, 2018. Due to the number of applications, it will be good to provide more than one potential project you are interested in. When considering payment, understand that it is important for the selection process.
Students are free to request any amount, to be paid monthly. A good guideline is to use this cost of living index times $12 per month.
For example, if the index is 100, such as in Prague, the student would be expected to request $1200 per month, or a total of $3600 for three months.
This matches with the GSoC stipends, but provides more accuracy than on a per-country measurement.
The following is a list of project ideas. This list is meant to provide suggestions, as students can propose working on a project not included below.
- ARM 64-bit Support
- USB HID Input Driver
- Intel Graphics Framebuffer Driver
- Port Mesa with Software Rendering
- Network Configuration
- Port Tokio
- FAT32 Filesystem Driver
ARM 64-bit Support
Port Redox OS to the AArch64 architecture
The purpose of this project is to port Redox OS to a 64-bit ARM device, such as the Raspberry Pi. This project will begin with porting the kernel, implementing memory detection, paging, and security ring support. After userspace binaries can be launched, the cookbook recipes required to launch a shell on a serial port should be ported. If the project is finished early, work could begin on framebuffer support, allowing the graphics stack of Redox to be ported.
The expected outcome of this project is to run Redox OS on a device such as the Raspberry Pi, with full support for a shell on a serial port.
Experience with ARM devices is preferred. The student is expected to learn about the Redox OS kernel and to research their device of choice thoroughly during the project.
USB HID Input Driver
Implement a USB HID input driver for Redox OS
The purpose of this project is to implement a userspace driver for USB HID devices that correctly provides keyboard and mouse information to the Redox input stack. This project will begin with working on the USB stack to support userspace class drivers. After support for class drivers is complete, work can begin on a HID descriptor parser. After parsing the HID descriptor, input data can be collected and then passed to the input stack. Any modification necessary to the input stack to support various HID input should be made to complete this project. Should this project be finished early, work could begin on supporting other HID devices, such as game controller input.
The expected outcome of this project is to support multiple off-the-shelf USB keyboards and mice to be used for input on a computer running Redox OS.
Experience with USB devices is preferred, but not strictly required. The student is expected to learn about the Redox OS input stack and USB stack during the project.
Hard, mainly due to the complexity of the USB HID descriptor
Intel Graphics Framebuffer Driver
Implement an Intel Graphics framebuffer driver for Redox OS
The purpose of this project is to implement a userspace driver for Intel Graphics devices that allows for setting native display resolutions and provides a linear framebuffer to the orbital display daemon. First, a PCI driver that detects and initializes Intel Graphics devices will need to be written. After the devices can be initialized, the EDID information will need to be retrieved and parsed. Using the EDID information, the resolution of the primary output will need to be set to its native resolution, and a linear framebuffer will need to be acquired. This framebuffer is then provided to orbital, the Redox display server, using a memory-mapped file. If this project is finished early, work could begin on implementing multi-display support.
The expected outcome of this project is to support several common Intel Graphics devices, allowing for EDID information to be read, resolutions to be set, and a linear framebuffer to be acquired.
Experience with writing graphics-related code is preferred, but not required. The student is expected to learn about the Redox OS graphics stack and to research Intel Graphics during the project.
Port Mesa with Software Rendering
Port Mesa with Software Rendering using the llvmpipe driver
The purpose of this project is to port Mesa and the llvmpipe driver to Redox OS. This project will begin with making modifications to Mesa so that it compiles correctly with the Redox cross compiler. After it compiles correctly, a simple application making use of OSMesa will be written and tested. Modifications will be made to Mesa, newlib, and other parts of Redox as necessary to fix any test failures. After OSMesa works correctly, a backend for orbital will be added to Mesa. Finally, llvmpipe will be ported, utilizing this new backend, and a test application such as glxgears will be demonstrated.
The expected outcome of this project is to be able to run a simple OpenGL example, such as glxgears, on Redox OS using llvmpipe as the rendering backend.
Experience with 3D graphics is preferred, especially experience with OpenGL on Linux. The student is expected to learn about the Redox OS graphics stack during the project.
Improve Network and DNS configuration
The purpose of this project is to improve the user interface provided to configure a network interface. This project will begin with adding better support for configuring network interfaces and DNS nameservers as summarized in netstack#19, netstack#20, and netstack#21. If the project is finished early, work could begin on adding support to configure IPv6 addresses and DNS for IPv6.
The expected outcome of this project is that users are able to easily configure network interfaces.
Port tokio to support a number of asynchronous Rust programs
The purpose of this project is to port mio and tokio to Redox OS. This project will begin by making modifications to mio and tokio to have them compile correctly on Redox OS. After they compile, examples of tokio usage here will be tested. Test failures will be addressed until a majority of the examples work on Redox OS. If the project is finished early, work could begin on porting the net2 crate, and addressing the remaining test failures.
The expected outcome of this project is to support a number of asynchronous Rust programs on Redox OS, such as the examples here.
Experience with asynchronous I/O is preferred, but not required. The student is expected to learn about the Redox OS event stack and to research mio and tokio during the project.
FAT32 Filesystem Driver
Implement a FAT32 filesystem driver for Redox OS
The purpose of this project is to implement a driver for FAT32 filesystems on Redox OS. This project will begin with partition detection using MBR and GPT partition tables. After partitions can be detected, filesystems will be checked for known filesystem types. A FAT32 driver will be launched for any detected FAT32 filesystem. This driver will support both read and write functionality, using RedoxFS as an example implementation to compare against. If the project is finished early, work could begin on other filesystem types.
The expected outcome of this project is for Redox OS to automatically launch a FAT32 driver for all detected FAT32 filesystems, allowing for those filesystems to be read and modified.
Experience with filesystems is preferred, but not required. The student is expected to learn about the current Redox OS filesystem and to research FAT32 during the project.