For information on editing, see the description of Plan 9 wiki syntax.
Google Summer of Code 2007 STUDENTS 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! Fundamental requirements: * 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. Recommended Reading * [The Plan 9 Documentation | http://cm.bell-labs.com/sys/doc/index.html], particularly the [Plan 9 from Bell Labs | http://cm.bell-labs.com/sys/doc/9.html] intro. * [The Inferno Operating System | http://www.vitanuova.com/inferno/papers/bltj.html], [A Descent into Limbo | http://www.vitanuova.com/inferno/papers/descent.html] by Brian W. Kernighan and [The Limbo Programming Language | http://www.vitanuova.com/inferno/papers/limbo.html] by Dennis M. Ritchie. * Rob Pike's [comments on style | http://www.lysator.liu.se/c/pikestyle.html], as well as Russ Cox's [more recent ones | http://swtch.com/~rsc/worknotes/] * 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 | http://groups.google.com/group/plan9-gsoc/] mailing list. To apply follow the instructions in the [Guide to the Google Summer of Code Student Applicants | http://groups.google.com/group/google-summer-of-code-announce/web/guide-to-the-gsoc-web-app-for-student-applicants] at the [GSoC website | http://code.google.com/soc/]. All participating students will also receive an exclusive [Glenda | http://plan9.bell-labs.com/plan9/glenda.html] T-Shirt and an especial surprise gift! PROJECTS 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 | http://groups.google.com/group/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 ;) Misc: * New window manager different from rio(1), experiment with new window management ideas. * CSS rendering for abaco web browser * General purpose boot loader based on Plan 9 kernel and /dev/reboot * [Zeroconf | http://www.zeroconf.org] 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 check that all man pages and other documentation is up to date and in sync with tools and APIs. And some way to manage and organize a centralized documentation 'handbook' and FAQ. Security: * 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 | http://plan9.bell-labs.com/sys/doc/ape.html] 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 | http://plan9.bell-labs.com/sys/doc/comp.html]. Kernel related work: * Write a driver for a piece of hardware of your choice (eg., [finish ipw2200 wireless driver | http://plan9.bell-labs.com/sources/contrib/rsc/ipw2200/]) * OLPC port. * Profile and optimize a kernel component of your choice (IP stack, vm, ...) * Increase "dynamicity" of network stack, including [detaching devices in kernel | http://groups.google.com/group/comp.os.plan9/msg/8d847c80107e3f34] 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 | http://ieeexplore.ieee.org/iel5/9476/30062/01377320.pdf?tp=&arnumber=1377320&isnumber=30062]). 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 | http://cat-v.org/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 | http://swik.net/v9fs/Summer+of+Code+2007+Ideas]). * 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 | http://www.vitanuova.com/inferno/papers/bltj.html] and [Limbo | http://www.vitanuova.com/inferno/papers/limbo.html]: * Complete 'native' [dis | http://www.vitanuova.com/inferno/papers/hotchips.html] 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 | http://plan9.bell-labs.com/magic/man2html?man=fossil]-like ([paper | http://www.cs.bell-labs.com/sys/doc/fossil.pdf]) snapshot file server in Limbo using [venti | http://plan9.bell-labs.com/sys/doc/venti.html] as backend. * Port [Omero | http://lsub.org/ls/export/omero.pdf] 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 | http://code.google.com/p/inferno-plugin/] to Mozilla/Firefox. * Native support for hypervisors (eg, Xen, PAPR, KVM, ...) * 64 bit Inferno. * Native port to the Nokia N800. * Hosted port to Symbian OS. * [Other Inferno projects | http://code.google.com/p/inferno-os/wiki/Project_Suggestions]. * Web application development framework. * New window manager to replace wm. * New look for tk widgets. [Plan 9 from User Space | http://plan9.us] or other work in foreign systems: * Add missing kencc extensions to GCC. * Port [the Plan 9 compilers | http://plan9.bell-labs.com/sys/doc/compiler.html] to Linux or BSD. * Glendix: Build a minimal Linux or BSD distribution using [Plan 9 from User Space | http://plan9.us]. * Package [Plan 9 from User Space | http://plan9.us] and Inferno for your favorite Linux or BSD distribution. * Mozilla/Firefox 9P Protocol Handler (i.e. 9P client XPCOM component). For more ideas see: [TODO], [Inferno GSoC ideas page | http://code.google.com/p/inferno-os/wiki/Project_Suggestions] and [v9fs GSoC ideas page | http://swik.net/v9fs/Summer+of+Code+2007+Ideas]. MENTORS * Dave Eckhardt (from [CMU | http://www.cs.cmu.edu/~davide/]) * Devon H. O'Dell * Fariborz "Skip" Tavakkolian (from [9Netics | http://www.9netics.com]) * Francisco J Ballesteros (from [LSUB | http://lsub.org]) * Kris Maglione * Charles Forsyth ( from [Vitanuova | http://www.vitanuova.com]) * maht * garbeam * newmanbe * Uriel: uriel99 AT gmail.com * And others... Please, if you have any questions for the mentors, join the [plan9-gsoc | http://groups.google.com/group/plan9-gsoc] mailing list or #plan9-gsoc in irc.freenode.org. TIMELINE * March 14: List of accepted mentoring organizations published on code.google.com; student application period opens * March 26: Student application deadline * April 9: 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 | http://code.google.com/support/bin/answer.py?answer=60325&topic=10729].