Every summer, Google sponsors the Summer of Code program in which students are paid to work on open source projects. MINIX 3 has participated every year since 2008, and we are applying to be a mentoring organization for GSoC 2013. In past years we've had excellent students who have made major contributions to MINIX, and we are hoping for more great students this year (if we are accepted by Google). If you are interested in working on our project, read on.
MINIX 3 is a small, modular, multiserver operating system aimed at being highly reliable, fault tolerant and self healing. We are particularly interested in embedded systems. Only about 9000 lines of code run in kernel mode. The rest runs as a collection of user processes, e.g., for each device driver and server. If a driver fails, it is automatically replaced by a fresh copy, without user intervention (or even knowledge) and without affecting running programs. Few other systems can survive fatal errors in some critical system components without even missing a beat. The goal of reliable systems will have been achieved when no computer has a RESET button and no user has ever experienced a crash and does not know anyone personally who has ever experienced a crash.
MINIX 3 supports the POSIX interface and has a userland orientation towards NetBSD, including the NetBSD headers, libraries, pkgsrc, etc. The default compiler is clang/LLVM, although gcc is also available. Hundreds of UNIX programs are available, including X11, perl, python, mplayer, and many more. Nevertheless there is much more to do.
We would like to continue the development to demonstrate that building a system out of small replaceable components leads to a highly robust design that is far easier to understand and maintain than systems with millions of lines of kernel code. While good performance is important, it is hardly the overriding criteria it once was. If most ordinary users were given a choice between the fastest possible system and one that was 20% slower but never crashed, we believe a large number of users would choose the latter. For many companies (e.g., banks, e-commerce sites), having their systems run 24/7 with no failures ever is a top priority.
Embedded systems are another area where high reliability is important. People do not expect their TV sets, digital cameras, and camcorders to exhibit blue screens, except when images of the sky are being shown.
In short, we are trying to build a modular, reliable (and secure) operating system out of small components that can be replaced on the fly and we would like you to help. Here is a paper describing MINIX 3 and its architecture in more detail. More papers are listed on the Publications page. You might also watch Andrew Tanenbaum's talk at FOSDEM 2010 on MINIX 3.
As an aside, MINIX 3 is not your grandfather's MINIX. It started out as an educational system but has evolved greatly since then into a tight system with a focus on high reliability (and security). As open-source projects go, it is quite popular. We have had over 2.5 million visitors to the Website (which has been up about 6 years). Currently about 12,000 people a month download the CD-ROM image file to install it.
The project ideas below range from straightforward to challenging. All require you to be an experienced C programmer. For some of them it would be helpful if you have already read the MINIX book for example, in a course you took at your university. Given the difficulty of these projects, we expect you to work full time all summer on them. That means that you will not be working another job.
Since this is an open-source project, many other people will study the code later. It is therefore essential that you are someone who takes pride in his or her work and wants to produce code that is clean, efficient, elegant, and well documented so that other people will marvel at its beauty. Just hacking it together quickly so it mostly works some of the time doesn't cut it. We want people to admire the code, even to envy your ability to write truly great code.
If you are an experienced C programmer who knows something about operating systems and can write clear, well-documented code check out the ideas below and then our application template. Please answer all these questions in your application. If you don't we will conclude you aren't very good at following simple directions.
Every year we receive many project proposals. To stand out in the crowd, you are going to have to do something more than fill in our template. Here's our handy-dandy sheep-goat separator. Download and install MINIX 3. Then, try to do some useful subtask of your proposed project. If you're applying for the “Porting Application Programs to MINIX 3” project, you should try to port an application to MINIX 3.
Or do something else that shows you have some skills and you have backed your application with some real effort. If doing part of your most-desired project is not feasible, then look for a NetBSD package that we don't currently have and port it to MINIX 3. A list of packages known to work is in the current minix/limited_list.pbulk file in the Minix pkgsrc repository (see this guide to set up the pkgsrc source environment). Try any of the other ones. If you can get it to build and work, make a git commit out of it, put it into a publically accessible git repo and point us to it to take a look at.
We like people who put their keyboards where their mouths are. Students who do that will be considered “sheep” and have a good chance. Students who think this is too much trouble will be considered “goats,” and are unlikely to be picked.
You are encouraged to interact with us before applying via the Google Newsgroup. All the prospective GSoC mentors will be reading the Google Group and fielding questions. This will help your application and help you pick some small project to do in advance to show us you are serious, as mentioned above.
We want you to write great code this summer, but we also want you to become part of the MINIX community. You'll find that our community is friendly, knowledgeable, and eager to help. Over the summer, you'll rely on the community to help answer your questions and to help test your code. You will interact with the community primarily via the Google Newsgroup, but you can also chat on Freenode at #minix. Also, you will get your own page on the Wiki; you will use it to update the community and your mentors on your status weekly.
MINIX uses git as its version control system, so you will be expected to do your work in your own Git repository. Familiarity with git branching, merging, and rebasing will be important to be optimally productive.
Here are some ideas, but we are open to suggestions for other projects. Accepted students get $500 right off the bat. If you pass the “midterm” you get $2250 from Google. Upon successful completion of the project, you get another $2250 from Google and a rare MINIX 3 T-shirt from us.
MINIX 3 is open source and uses the BSD license. By applying, you agree that we can distribute your code under this license. However, you also retain your right to reuse it as you wish.
There are several pages available with helpful information. These include:
Keep in mind that the deadline for applications is May 3 19:00 UTC. No exceptions.
Thanks for your interest. But even if you do not want to participate in the Google Summer of Code, give MINIX 3 a try. And if you want to help on the project outside the framework of the Google Summer of Code, you are most welcome. We have a Google newsgroup: Google newsgroup where your input is welcomed. We also have a MINIX 3 Wiki so users can help document the system.
Thanks for reading so far. We hope you will apply to GSoC to help us. Again, here is our application template.
Andrew S. Tanenbaum ( ast “at” cs “period” vu “period” nl)