Plan 9 is an excellent environment to learn about many aspects of computing: operating systems, distributed systems, programming languages, network protocols, etc.
Plan 9 is not a difficult environment, and simplicity and elegance are its main qualities, but it is very *different* from anything else you might be used to!
- A very open mind to explore and embrace very different concepts and environments.
- You must enjoy challenges that stretch your preconceptions to their limits.
General recommended skills:
- Understanding of basic Unix principles and philosophy (but note that Plan 9 is *not* Unix. Plan 9 is meant to *replace* Unix.)
- Some programming experience, ideally with C, but other languages are fine.
- The Plan 9 Documentation, particularly the Plan 9 from Bell Labs intro.
- The Inferno Operating System, A Descent into Limbo by Brian W. Kernighan and The Limbo Programming Language by Dennis M. Ritchie.
- Rob Pike's comments on style, as well as Russ Cox's more recent ones
- The Practice of Programming, and The UNIX Programming Environment, by Brian W. Kernighan, and Rob Pike, published by Addison-Wesley.
- The recommended readings wiki page
If you have any questions you can check our irc channel #plan9-gsoc in irc.freenode.org or join the Plan 9 Google Summer of Code mailing list.
To apply follow the instructions in the Guide to the Google Summer of Code Student Applicants at the GSoC website.
All participating students will also receive an exclusive Glenda T-Shirt and an especial surprise gift!
And because we obviously won't be able to accept as many students as we would like to, as consolation we will give away a few extra t-shirts randomly among the applications that didn't get accepted.
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) http:www.oberon.ethz.ch/native . 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.
- cdfs(4) support for writting DVDs.
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.
- 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.
- Dave Eckhardt (from CMU)
- Devon H. O'Dell
- Fariborz "Skip" Tavakkolian (from 9Netics)
- Francisco J Ballesteros (from LSUB)
- Charles Forsyth ( from Vitanuova)
- Uriel: uriel99 AT gmail.com
- And others...
Please, if you have any questions for the mentors, join the plan9-gsoc mailing list or #plan9-gsoc in irc.freenode.org.
- March 14: List of accepted mentoring organizations published on code.google.com; student application period opens
- March 26: Student application deadline
- April 11: List of accepted student applications published on code.google.com
- May 28: Students begin coding for their GSoC projects; Google begins issuing initial student payments
For a more detalied timeline see the official GSoC site.