Google Summer of Code 2010


Accepted Projects


The primary skill required for working with any of our projects is the ability to think a little differently about problems. There are generally better ways to solve problems in Plan 9 and friends than simply trying to port (literally or conceptually) Unix solutions.

Plan 9 and related projects put a high premium on elegance and simplicity of both design and implementation.

The vast majority of development on Plan 9 is done in C. Our libraries are custom, although they're easy to pick up for anyone with Unix/POSIX C experience. The kernel and a few libraries have a very small amount of assembler in them. We use our shell much more extensively than most Unix systems (several commands common to both Plan 9 and Unix are simple shell scripts here; see /rc/bin for examples). There are user-contributed ports of perl, python, scheme, and a few others, but no significant body of Plan 9 programs in those languages. We have no c++ compiler.

With Inferno, the story is the same in the kernel (almost all C, a very small amount of assembler), but all user-mode code (other than shell scripts) is written in Limbo, a type-safe concurrent language developed specifically for Inferno. Limbo compiles to a bytecode interpreted by the Dis virtual machine.

Other projects under our umbrella have different constraints; Plan 9 from User Space is dealing almost entirely with C. Glendix is dealing with C, largely from the Linux kernel. There are projects with 9p implementations in various languages.


For folks using Plan 9 regularly, it'd be nice to be able to have a drawterm you can take with you anywhere. Additionally, many of the new breed of handhelds (think the iPhone and Android) have all sorts of interesting devices built in: accelerometers, GPSs, multi-touch touch screens, cameras, and so on. Pick a few and design and implement file system interfaces to them in drawterm.

Possible mentor: Anthony Sorace (depending on platform)

Plan 9 and Inferno are much easier to port than comparable systems, and we love to see the systems running on all sorts of devices. We have good support for ARM systems, and much of the community is excited about all the interesting things going on with that architecture.

You'll need to make sure that both you and your mentor have the hardware in question (or can get it in the timeframe required, at your own cost).

At the labs we get a lot of interest in Plan 9 but not having Java, which is the de facto programming language in many fields, is often a deal breaker. The project would consist of getting a jvm running and then getting as many (non-graphical) libraries running in the time allotted.

It would be nice to get support for various IMAP extensions, including starttls, logindisabled, digest-md5, anonymous, and sasl-ir (yes, these should be all caps, but it confuses the wiki).

Possible mentor: Noah Evans

Virtio is a model for devices, such as block devices or NICs, that allows for greater performance for virtualized OSes than emulation of real hardware. Virtio devices show up as PCI devices and require a conventional device driver for control; there is a spec available at Virtio on the host is implemented by KVM and QEMU at least.

Possible mentor: Lyndon Nerenberg

Handheld devices present a different set of constraint from a desktop environment; typically, smaller screens and a more restricted pointing interface (fewer, if any, buttons). Come up with a design which fits with the Plan9 and Inferno principles while working well for users within these tighter constraints.

Suggested by Ron Minnich.

The wikifs syntax in both Plan 9 and Inferno is very simplistic, causing some counter-intuitive results. It'd be nice to use something like markdown for wiki pages. In addition to just the HTML generation, take a look at how wikifs rewrites pages in its local store, which may need changes. Consider whether it makes sense to allow drop-in replacement formatters. This should be a low- to medium-complexity project for someone with good C skills and some experience with text processing applicaitons.

Possible mentor: Anthony Sorace

You may also want to check out our ideas pages from previous years: 2009 2008 2007



Links from Google:

Previous Plan 9 GSoC Info