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.
- Drawterm on handhelds w/ 9p access to "interesting" devices
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)
- Beagle Board or IGEP port and drivers
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).
- Native ssh2 implementation
- Native rdp implementation
- Java port for Plan 9, this is a Bell Labs request
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.
- Finishing up the go runtime
- imapd security updates
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
- factotum: better (application agnostic) support for SASL mechanisms
- Virtio device/network/9P support for Plan 9 and/or Inferno and KVM/Qemu
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 http://ozlabs.org/~rusty/virtio-spec. Virtio on the host is implemented by KVM and QEMU at least.
Possible mentor: Lyndon Nerenberg
- Windowing system for handhelds, Inferno of Plan 9
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.
- Inferno authentication in Plan 9's factotum
- A tool to make 9vx failures easier to debug and improve the reliability of 9vx
Suggested by Ron Minnich.
- Better wikifs syntax
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
- Name - Email - IRC nick - areas of interest (as a mentor)
- Anthony Sorace - firstname.lastname@example.org - anth - Limbo, user-mode C
- Anant Narayanan - email@example.com - KillerX - Glendix
- Ron Minnich - firstname.lastname@example.org - rminnich -
- David Eckhardt - David.Eckhardt@cs.cmu.edu - -
- Noah Evans - email@example.com - npe -
- Lyndon Nerenberg - firstname.lastname@example.org - ve6bbm - factotum imap smtp
- Erik Quanstrom - email@example.com - - upas, networking, small drivers
- Steve Simon - firstname.lastname@example.org - quintile - user mode C, Windows interoperation
Links from Google:
- FAQ (which includes the timeline)
Previous Plan 9 GSoC Info