Plan 9 and Inferno at the Google Summer of Code

v9fs-userspace - userspace mount helper and server (based on spfs)

olpc-inferno - work on the OLPC hosted inferno environment and apps

p9-scm - Plan 9 native source control system with a venti backend

vbackup-plus - wrappers for p9p vbackup to make it more user friendly

People are duplicating Apple’s timemachine on Linux. Let’s show them how to really approach temporal file systems using plan 9 ports.

* wrapper which tracks venti scores based on volume being backed up
* GUI which sets up venti in partition(s) or with files
* GUI which assists in configuring backup intervals and volumes
* (stretch) time-traveler like GUI for navigating/searching backups
* (stretch) support for pruning and/or merging snapshots

gsocfs - synthetic file system to help manage future google summer of code

inferno-ds (npe, salva) - various drivers and other implementation details for the Nintendo ds Inferno port. The project homepage is here

There is an improving native port of Inferno for the Nintendo ds. It is beginning to be functional, the framebuffer and touchscreen both work. The system boots. However there’s still a lot left to be done, including wifi and floating point support. We’re looking for a student who has good low level knowledge and is interested in implementing device drivers and/or higher level interfaces to the more unique aspects of the DS(how to handle both screens etc…).

svg support - provide libraries under Inferno or Plan 9 to support SVG.

Another idea that could apply to Inferno, Plan 9 or both would be a library for native SVG support. Many (all?) of the primatives in draw map to SVG primitives so this should be relatively straightforward and open up nice GUI alternatives for both Plan 9 and Inferno.

Milestones would be based off of particular primitives with stretch milestones including support for various types of advanced fills, and more complicated manipulation of the SVG objects (transformations, rotations, etc.). A simple viewer would be necessary to facilitate acceptance of the milestones.

A far stretch would be an SVG editor.

This would be a great project for someone to learn about Plan 9 graphics.

iPhone drawterm - use iPhone SDK to create a drawterm-like application.

Now that the iPhone SDK is out – what about an iPhone version of drawterm that exposes graphics, audio, etc. from the phone?

I’d put forth the idea of a hosted inferno port, but it strikes me that would be significantly more work.

Perhaps the PlanB/Octopus crowd has better ideas of a iPhone-style client. MILESTONES

* hello world style application that connects to a Plan 9 or inferno server and exports an event file linked to a button
* framebuffer/devdraw support
* pointer support (unitouch)
* (stretch) audio support
* (stretch) multitouch support
* (stretch) /mnt/term local file system access
* (stretch) opengl support
* (stretch) soft-keyboard support
* (stretch) accelerometer support

Inferno hosted video - hosted device driver for Inferno

Inferno hosted video drivers for Linux. I started looking at this in the context of OLPC, but it seems like you might be able to do a hosted gstreamer driver for Inferno and suppot anything gstreamer does. Although perhaps a lower level of support (direct Video4Linux) should be considered.

I’m thinking mainly here of supporting web cams but I suppose extensions could support playback/etc. MILESTONES

* Device interface allowing capture of "snapshot" single frames, conversion to Inferno bitmap, and display
* Proper embedding of "preview" graphcs inside an Inferno display
* (stretch) video streaming over 9p connection
* (stretch) video playback from a 9p connection
* (stretch) photo-booth style capture of multiple frames
* (stretch) a version of faces showing live snapshots of whoever is logged into the server

more Inferno projects - Inferno project suggestions on Google Code, including summer projects (some of them would be simplified, based on experience of GSoC2007)

Native Omero (nemo) - Viewer for o/mero system on a mainstream OS using that OS’s “native” widgets.

Omero on Plan 9 (nemo) - Port the o/mero window system to Plan 9.

Firefox Plugin (nemo) - Port the MSIE plug-in to Firefox.

XYZ Shell (caerwyn) - Implement an xy shell for namespace command, as per IPN lab 78

lguest on Plan 9 (rminnich) - Make lguest run on Plan 9, allowing Plan 9 to host another OS, like Linux.

Plan 9 on lguest 2.6.24 (rminnich) - Update the Plan 9 lguest support to 2.6.24.

JIT for fixed precision arithmetic (caerwyn) - Write the JIT for ARM and x86 architectures to support the newish fixed precision in Limbo.

Extend Jwin (caerwyn) - Extend Jwin from IPN lab 79 to support more of the real world’s interfaces.

Eclipse Plugin (caerwyn) - Implement the Eclipse filesystem provider interface via styx.

IP path MTU discovery (quanstro) - Allow Plan 9’s IP stack to discover MTU of its path to target.

Boot from USB root (quanstro) - Add needed elements for Plan 9 to bood from USB.

Port Inferno/EMU (maht) to Symbian Series 60

Port Inferno/EMU (maht) to Python - useful for use on Python enabled mobile phones such as Symbian Series 60 or those with Python interpreters built in

usb-debug-port (Eckhardt) - Grimy driver hacking to support USB “debug port”


Since USB controllers appear to be an inexorable feature of the future, and an increasing number of machines lack RS-232 serial ports, implement a driver for the USB 2.0 debug port. Apparently there is only one bridge which implements this standard, a device called the NET20DC (if the purchase price would be an issue for you, please not this in your application and we will look into sponsorship).

Please note that while this project should not require large amounts of code, it will definitely be a grimy driver-debugging experience. Warm-up work would probably include setting up two Plan 9 machines to do RS-232 kernel debugging.

usb-vga (Eckhardt) - User-space device driver for a USB VGA adaptor

A variety of low-cost “embedded” machines support Ethernet and USB but have no video output (e.g., Kuro Box, NSLU2, Soekris). Meanwhile, there are a variety of USB VGA adaptors in the $80 range (e.g., Tritton). The project would entail writing a /dev/draw driver for one of these devices (your proposal should include evidence that there is enough publicly available information on your selected device that you will be able to write the driver).

Note that on Plan 9 a USB device driver is typically a user-space program (i.e., this project will not require kernel development).

usb-wifi (Eckhardt) - User-space device driver for a USB WiFi adaptor

While many laptops these days come with embedded wireless hardware, compatibility is a crapshoot. Meanwhile, affordable USB WiFi adaptors exist. For example, there is an OpenBSD driver for the TEW-429UB, so it should be possible to get that working.

9p implementations in other languages (see below):

Finish server-side PHP implementation from last year

bring outdated implementations (Python, most importantly) back to current status and make them appear in the s