Project Ideas for GSoC 2007

We like to find a project that ideally suit the students who take them on. For that reason we are very happy to hear (on #plan9-gsoc on Freenode or the plan9-gsoc Google group) your particular areas of interest and expertise. Because Plan 9 is a complete system, which expands beyond a single OS, no matter what your interests, we should be able to find a project that makes you happy (we know that happy developers make for happy projects).

Here is a list of project ideas we have come up with as examples, Even if they seem complex and difficult, they are likely much simpler than you think. In Plan 9 everything is simpler ;)


* New window manager different from rio(1), experiment with new window management ideas. Maybe, turn acme(1) to full-blown UI w/graphics: get inspired from old Native Oberon UI (not Gadgets GUI) . Write programs using acme as UI, like /acme/mail/ does! Resizeable tagline. Hideable columns and frames.
* CSS rendering for abaco web browser
* General purpose boot loader based on Plan 9 kernel and /dev/reboot
* Zeroconf network configuration support (ideally, with a Plan 9 or Inferno twist)
* Framework of scripts and tools to automatically detect and configure hardware (screen resolution, keyboard, mouse, etc.)
* Reincarnation of 'pico' image manipulation language, or native graphics functions like those in NetPBM.
* Documentation framework: a set of scripts to make certain that all documentation, including man pages, is up to date and in sync with the tools and APIs, and to help manage and organize a centralized 'handbook'.


* Ssh2 client/server (complete native implementation or port a new one from another system.)
* Add support for Inferno auth to Plan 9.

File servers (for Plan 9 or Inferno, but probably best implemented in Limbo):

* fs interface to a version control system(gitfs, hgfs or svnfs; cvsfs already exists.)
* Ircfs or imfs.
* Bugfs: a bug tracking system with an fs interface.
* webdavfs.
* rssfs/webfeedfs.
* ldapfs.
* iPodfs.
* cdfs(4) support for writting DVDs.
* bluetoothfs.

Port of foreign applications to Plan 9:

* Video player (eg., port mplayer).
* Update GCC port and have it accepted upstream.
* Update X11 port.
* Update python port.
* Port Erlang.
* Update APE to be a more complete POSIX environment.
* Finish qemu port. Work on this project would require a good understanding of x86 assembly language and interest in learning a non-gcc dialect of C.

Kernel related work:

* Write a driver for a piece of hardware of your choice (eg., finish ipw2200 wireless driver)
* OLPC port.
* Profile and optimize a kernel component of your choice (IP stack, vm, ...)
* Increase "dynamicity" of network stack, including detaching devices in kernel and appropriate user-space reactivity (e.g., dhcpclient deciding whether to re-bind or destroy an existing network stack, for possible inspiration see Plan B /net paper). The kernel part and the user-space part are probably each large enough to qualify as independent projects.
* Update SPARC or MIPS ports.
* Kernel regresion and stress testing framework.

9P related projects:

* fs driver for Solaris, FreeBSD, NetBSD, BeOS, or any other operating system (for projects related to the existing Linux driver see v9fs).
* 9P implementation in your favorite programming language.
* A framework to test the interoperativity of all existings 9P implementations.
* Implement a 9P interface to your favorite (non-plan9) application.
* Implement 9P extension for 'batch requests' and improve performance over high latency links.
* 9P implementation in JavaScript, so that a browser can access resources sensibly (ie, not using HTTP/XML).

Inferno and Limbo:

* Complete 'native' dis and improve Inferno/Plan 9 integration so Inferno apps work like native Plan 9 apps.
* Improve Inferno integration with Unix or Windows host OSes (allow Inferno apps to be managed by native window manager, etc.)
* A fossil-like (paper) snapshot file server in Limbo using venti as backend.
* Port Omero to Limbo.
* PS3 port w/ppe file system interfaces and support for ps3 devices (controllers) - either hosted on Linux and/or native on the PS3 hypervisor.
* Finish Gumstix port.
* Port Inferno-plugin to Mozilla/Firefox.
* Native support for hypervisors (eg, Xen, PAPR, KVM, ...)
* 64 bit Inferno.
* Other Inferno projects.
* Web application development framework.
* New window manager to replace wm.

Plan 9 from User Space or other work in foreign systems:

* Add missing kencc extensions to GCC.
* Port the Plan 9 compilers to Linux or BSD.
* Glendix: Build a minimal Linux or BSD distribution using Plan 9 from User Space.
* Package Plan 9 from User Space and Inferno for your favorite Linux or BSD distribution.
* Mozilla/Firefox 9P Protocol Handler (i.e. 9P client XPCOM component).

Please add any other project suggestions to the list, see also:TODO.