Intern Projects for GSoC or RSoC
For GSoC, we should assume that our intern will have completed 3rd year undergrad, and who is a competent Rust programmer with some understanding of physical hardware, but may not have hands-on operating system experience. Project size should be one of 90 hours (12 weeks spare time), 175 hours (12 weeks part time) or 350 hours (12 weeks full time). I think we should mainly request 350 hour projects, but Google is looking for us to request medium projects as well. We want projects that attract a range of interns, to engage the most competent (10x) people but not scare away people that are less experienced. Here are some suggestions. Feel free to edit or add here, use strikethrough to remove items.
GSoC recommends that the items be part of our regular suggestions to our contributors, so we should consider posting these projects on the CONTRIBUTING.md.
- Port a written-in-Rust web server to Redox. Get Redox to run in a VM (e.g. QEMU) on a cloud server, and enable Redox's website to be self-hosted. (low-hanging fruit, medium)
- Improve Redox's USB/HID support. (core, large)
- Help improve Redox's performance by developing end-to-end profiling tools and libraries, analyzing bottlenecks and helping implement optimizations. (exploratory, large)
- Implement "io_uring" for Redox's filesystem, RamFS and NVMe driver. (exploratory, large)
- Improve Redox's automated testing suite and continuous integration testing processes. (core, medium to large)
- Implement a user-space process manager that can safely modify process context information shared with the kernel. Implement the Session/Process Group/Process/Thread hierarchy. (exploratory, medium to large)
- Create a System Health profiling library, a GUI and a command-line interface to display activity levels for Redox's daemons and drivers. (peripheral, medium)
- Begin a port of WASM Rustix to Redox's written-in-Rust libc alternative, "relibc". Refactor relibc where needed to support both libc and Rustix interfaces. Implement additional functionality where feasible. (core, medium to large)
- Port a variety of Linux applications to Redox. This involves implementing functions in our libc alternative, "relibc" and possibly some GUI functionality. (core, medium to large)
- Perform a "survivability analysis" of Redox - What tasks can be killed and restarted, and still have Redox able to function? What will the effect on running applications be? What additional work needs to be done to improve survivability? Implement the proposed functionality and tooling. (exploratory, medium to large)