Monday, 5 March 2007

Summer of Code 2007

It is at last lighter earlier in the morning and later in the evening here in England, hinting at the end of hibernation, the arrival of spring and with it, the start of this year's Google Summer of Code. Last year we inadvertently slept through that. This year we are better prepared.

During this last week, we have extended the set of projects on the Wiki at the Inferno-os site at, adding a new section specifically for Summer of Code projects. Of course, those projects could be done at any other time, and other projects on that page might also be good projects for students. Still, the hope was that the Summer suggestions themselves would be a little different. The topics include naming in networks, language implementation, constraint-based systems, data archiving, design and implementation of library modules, and Inferno-related plug-ins for browsers. Whether they have been given short paragraphs or just bullet-points as descriptions, all the projects are essentially open-ended. Even so, they are intended to allow development to be done in stages during the time available. In every case, at the end of the summer there should be something substantial and useful to show for it.

I thought the work should also be reasonably self-contained, without programmers having to become familiar with large chunks of existing code. After all, those that have not seen or used Inferno before will usually take a little while to come to grips with the Limbo language and the Inferno environment. There is plenty of interesting work to be done in each project, making use of the novel aspects of Inferno to be sure, but also learning about a given application area. What do I mean by "interesting"? Every one of them is a project I should like to do myself, and perhaps has languished on my own TODO list, and none of them is "grunge work".

Notably excluded from the Summer section are native ports of the Inferno kernel (native ports are ports to raw hardware). Native ports are good projects, but I have experience now of people doing ports remotely and it is often just too hard to diagnose trouble at a distance, even if both parties have supposedly identical bits of hardware. The debugging support is often a little too Spartan for novices. As summer projects they are quite risky. By contrast, there has been more success with so-called hosted ports, where the Inferno kernel runs as an application under another operating system, and a few such projects are included.

One of the earliest mediaeval rounds merrily celebrates the lively arrival of early summer after the chill of winter:
Sumer is icumin in,
Lhude sing, cuccu!

The BBC Schools' Radio web site notes about it that:
As the cannon [sic!] develops, the melody weaves around itself to create a rich and complex rhythmic and harmonic pattern
That rich, constructive result is one of the hopes for this collection of projects.