Google Summer of Code is a global program focused on introducing students to open source software development. Students work on a 3 month programming project with an open source organization during their break from university. Since its inception in 2005, the program has brought together 12,000+ student participants and 11,000 mentors from over 118 countries worldwide. Google Summer of Code has produced 30,000,000+ lines of code for 568 open source organizations.
[... from the Google Summer of Code 2017 site.]
We are a confederation of free software and open source projects that promote the ideas of microkernel-based operating systems. We want to extend our previous cooperation in FOSDEM's Microkernel devroom (that has been organized in turn by one of the open source microkernel projects since 2012) into the realm of Google Summer of Code.
Projects participating this year:
We are looking for students with real interest in operating systems (especially microkernel-based operating systems), system-level programming and software design. We are looking for people who will play nicely with our community and by our guidelines. We are looking for those who are willing to give their project the necessary time and care. If a student only wants to pass Google Summer of Code with the minimum effort, our organization is not a good match for him or her. We are looking for already experienced coders (although specific experience with microkernel-based operating systems is not necessary) because most of our projects start at the medium difficulty level and the code itself is not trivial. The successful candidate should be a good communicator, too.
We would like to invite prospective students to demonstrate their abilities and determination to work on a microkernel-based operating system during the Google Summer of Code 2017 by completing a simple task before the student application deadline on April 3rd 2017. The student should check out the sources of a microkernel-based operating system represented by our organization (see the list below), build the system, then either pick an existing bug or enhancement or think of their own improvement, implement it, test it and submit the patch to the developers. Note that the exact means of submitting the patch differs from one project to another. Do not hesitate to introduce yourself and your intentions to the core developers of the given microkernel-based operating system and ask for initial guidance (see the links below).
Students interested in applying for a Google Summer of Code project also need to fill out the application form and attach it to their application.
If a student is accepted, he or she will be invited to participate in the community of the given microkernel-based operating system project from day one. The community will also ask him or her to periodically document his or her progress via email write-ups and/or blog entries. The mentor will act as a buddy in the core development team who will monitor the development and provide the student with guidance when necessary. However, as a first-class member of the development community the student will also receive feedback from other developers besides the designated mentor.
The project ideas for the Google Summer of Code in the context of the Microkernel devroom are divided primarily by the microkernel-based operating system the student wants to contribute to. The ideas can be characterized as things that will improve the usability of the given microkernel-based operating system while building on the functionality already present in the code base. No project in the list poses an open-questions topic in the academic sense. Instead, each project is rather implementation-oriented. We expect the students to deliver code that could be seamlessly integrated with the existing code base. However, note that the extent of some of the ideas listed below needs to be scaled down (e.g. implementing only the essential parts) in order to be achievable in one trimester.
Note that contributing to a microkernel-based operating system does not have to involve kernel programming. In a microkernel-based operating system, most of the features involve work on the user space parts of the system, such as libraries and server tasks. Having said that, we do not object pure kernel projects either.
The Ideas List should be understood just as a small subset of all possible topics. If you do not see an appealing topic on this list, you might want to consider talking to the core developers of the given microkernel-based operating system about your own ideas. Remember that the ideas are not set in stone and, after all, it is the student who is going to propose the project to the core developers.
Genode is a tool kit for building highly secure special-purpose operating systems. It scales from embedded systems with as little as 4 MB of memory to highly dynamic general-purpose workloads.
For a more detailed description of the ideas please consult the Future Challenges page and/or contact the Genode community.
HelenOS is a portable microkernel-based multiserver operating system designed and implemented from scratch. It decomposes key operating system functionality such as file systems, networking, device drivers and graphical user interface into a collection of fine-grained user space components that interact with each other via message passing.
HelenOS maintains its own GSoC page.
The GNU Hurd is the GNU project's replacement for the Unix kernel. It is a collection of servers that run on the Mach microkernel to implement file systems, network protocols, file access control, and other features that are implemented by the Unix kernel or similar kernels (such as Linux).
The Hurd project maintains its GSoC ideas in a separate page. Contact bug-hurd@gnu.org for more information.
MINIX 3 is a free, open-source, operating system designed to be highly reliable, flexible, and secure. It is based on a tiny microkernel running in kernel mode with the rest of the operating system running as a number of isolated, protected, processes in user mode.
MINIX 3 maintains its own ideas page. Please contact the MINIX 3 community for more information.
Redox is a Unix-like operating system written in Rust, aiming to bring the innovations of Rust to a modern microkernel and full set of applications. Redox isn't afraid of dropping the bad parts of POSIX, while preserving modest Linux API compatibility.
For a more detailed description of the ideas please contact the Redox community.