Table of Contents

Google Summer of Code 2011

Introduction

Every summer, Google sponsors the Summer of Code program in which students are paid to work on open source projects. MINIX 3 participated in 2008, 2009, and 2010, and we are applying again this year to be a mentoring organization. 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. Only about 6000 lines of code run in kernel mode. The rest runs as a collection of user processes, mostly separate processes 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 about 500 of the standard UNIX programs have been ported to it, including X11, gcc, perl, python, ghostview, mplayer, the GNU core utilities, 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 the FOSDEM 2010 talk 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 1.6 million visitors to the new Website (which has been up about 4 years). Currently about 12,000 people a month download the CD-ROM image file to install it.

About You

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 not having a job and not going to school.

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 porting the NetBSD userland, for instance, try to port some userland utilities to MINIX 3. Or do something else that shows you have some skills and you have backed your application with some real effort. We like people who put their keyboards where their mouth is. 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. 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.

During the project we want you to interact with our community via the Google Newsgroup. Also, you will get your own page on the Wiki and will be expected to use it as a blog posting your progress, at least weekly, but also when you reach a milestone.

Although Minix currently uses SVN, we are in the middle of migrating to Git. We expect to have switched before GSOC coding starts, 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.

Ideas

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.

Possible Projects

We are open to suggestions for alternative projects. You might first look at the Wishlist on the MINIX 3 Wiki.

Resources

There are several pages available with helpful information. These include:

Keep in mind that the deadline for applications is April 8. No exceptions. Conclusion

Thanks for your interest. But even if you do not want to participate in the Google Summer of Code, give MINIX 3 a try. You might be surprised. For example, it can compile itself, kernel, all servers, drivers, etc.–125 compilations–in about 6 seconds on a modern PC. 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. sig.jpg