Google Summer Of Code 2008
We've been accepted as mentor org for Google Summer of Code 2008! (BBC Research)
This
is primarily our ideas page, you really ought to read our overall
summer of code page as well. This details expectations, how to apply,
what we're looking for, who we're looking for (YOU), and a whole bunch
of notes on stuff students have done in previous years. Previous years ideas pages( 2007, 2006) landing pages( 2007, 2006 )Ideas!Please
note that we're likely to give significant weight to Kamaelia based
exemplar projects. If you're wondering what we mean by that, the
Whiteboard, Greylisting and ER Modelling systems are all useful tools
in their own right, but also very useful exemplars showing how to build
large systems. Community systems like Bucker are similarly really cool
exemplars. The difference really between exemplars in Kamaelia and
exemplars in other projects is that you will often result in creating a
large number of reusable components. Exemplar RelatedIn
previous years we've taken a couple of different approaches to the
ideas list. The first year was based around idea of distribution,
(user) security and visual interfaces. That worked pretty well. Last
year we really looked at an approach largely based around the idea of
targetted simple thing which would make kamaelia useful in particular
targetted ways, which achieved around 75% of our goals. This year
though, we'd actually be much more interested in a systems view. ie
rather than building small bits and pieces we'd be interested to see
what you can build in 2-3 months of work that's a real living
breathing system. For an idea of the sort of thing that that can
entail, the visual system builder was around 4 weeks of work all told
and the P2P whiteboard was actually around 2 -3 weeks all told. By
contrast, Kamaelia Grey was literally a few days work. This
list of possible exemplars is still being fleshed out, but really
interesting, useful exemplars are something that would get a high
priority this time round. Suprise us with a really exciting idea of
something you'd like to build, and we might surprise you by accepting
it. - A neat exemplar of the multiprocess idea above would be a multiwindow pygame
based paint program
(or even post production tool). This could and
should go to town in dealing with stacks of images. This could ideally
build on the whiteboard, to the extent of allowing the simple creation
of animated shorts. Ideally this would build on the whiteboard, ideally
build on the video whiteboard even, to allow the creation, extension
and annotation of video with simple (limited) video editting
functionality.
- Extend the ER modelling tool to be a full database front end for WSGI based web systems. (This would require the creation of comtponents for managing databases of course)
- Small children friendly version of Compose. At present a basic Kamaelia based Logo interpreter exists
(with pygame interface). Extending this to be a full, reliable Logo
interpretation capable of building basic kamaelia pipelines or even
graphlines would be extremely awesome. This should include support for
espeak (on linux), speak (on Mac OSX) and pyTTS (on windows) based
speech synthesis for feedback. Bonus points would come from integrating
with the gesture recognition code to allow usage without using the keyboard.
- Extend the XMPP implementation code, documentation and example so that the core and some common XMPP extensions are implemented
- Tools for working with SQL Databases. Build a Kamaelia interface for
SQL so that databases can be linked to other Kamaelia components.
- 3D Social Network Visualisation tool.
This builds on 2 core project ideas. The assumption is that the social
network will be embedded in some kind of SQL database, which can be
extracted by a component. Then, extend topologyVisualiser in the
Kamaelia distribution to work in 3D. This will allow complex datasets
to be viewed as 3D shapes with nodes and connectors. Imagine that a
database contains a set of relationships with assocated data (such as
you might find on facebook), extend topologyVisualiser to allow
relationships to be clearly explored and viewed.
- Kamaelia, Jython & Processing integration. (Processing on Jython has been done)
For something completely different, howabout getting Kamaelia working
with Jython using the processing library? This should work, though
require a bit of effort. The neat thing about this though would be the
ability to have great visualisations in a browser (due to processing),
which have all the fun and extensibility of Kamaelia (due to jython).
This could actually be a much nicer way of visualising databases using
kamaelia (as suggested by the social network visualisation project idea)
- Simple Video conferencing tool. You'll need to wrap some webcam
bindings and wrap those. You'd expect to take those images for display,
but also change them to pipe into (say) the Dirac compression
components, send over a link, decompress and display. This would
actually be an exemplar of showing what happens when a new component
for handling a new device comes into play since the
communications/compression & decompression work pretty much already
exist, as does the display tools. The webcam bindings idea actually
comes from pygame's GSOC ideas list and is more of an example application of said bindings.
- Swarming P2P / layer 5 multicast radio system. Last year at LUG Radio Live
Michael demonstrated/explained how a simple swarming radio system could
be built using Kamaelia. It consisted of two main parts - a radio source and a swarm peer.
It would be interesting to see this extended to be a robust P2P
swarming radio system. One of the more interesting ways this could be
made more robust would be to allow the P2P tree created to actually
turn into a P2P mesh that forms a Layer 5 Multicast overlay network.
One particular approach that would work well when sitting on top of
this would be a scattercast type system, which could work extremely well when constructed in a P2P fashion. (see the tail of this presentation for more detail)
Core project related- Integrate Kamaelia with...
- Integrate kamaelia with Stackless
- provide mappings from the stackless world of tasklets & channels
to components and in/outboxes. This should be idiomatic for both
stackless and kamaelia. One way to do this would be to implement a
"TaskletComponent" like we have Component, ThreadedComponent and
ProcessComponent.
- Integrate Kamaelia with Twisted - We
have kinda partially done this before in the BitTorrent code, but it
would be really nice to be able to write a TwistedComponent, and to be
able to use Twisted from Kamaelia and to be able to run the Kamaelia
scheduler from Twisted. The LikeFile backgrounding code may be useful
here.
- Integrate Kamaelia with gstreamer - similar dance ! :-)
- WSGI-ify the Kamaelia Web Server - Extend & make more user friendly the Kamaelia Web Server, including WSGI compliance, to enable clientside mashups based around (say) django or pylons
- Tools for working with SQL Databases. Build a Kamaelia interface for
SQL so that databases can be linked to other Kamaelia components.
- A Testing Framework for Kamaelia Systems
- Improved Multicore support: Extend python pprocess
to enable full duplex channel communications (or multichannel
communications with processes) for multicore/multiprocess comms (eg 1, 2 )
- Extensions to the co-ordinating assistant tracker :
- Change the topology visualiser
to work in full 3D - this would relate to changing the implementation
from using the pygame code and replacing it with open GL code. Most of
the physics engine would still work. This would then turn into an
exemplar you you extended to allow the construction of models this way. This sounds difficult, but should be relatively simple
- Extend Kamaelia's Dirac support to include support for the optimsed version of Dirac called Schoedinger. (Rather amusingly you'd be working on schoedinger's cat (sorry))
- Improve Kamaelia's support on Windows - come up with windows equivalents of the mega bundles or better the app bundles
- See how much of Kamaelia can run on IronPython 2 (notably see how many tests can pass)
Projects tend to succeed if you discuss them upfront with the mentor organisation.So,
if you're interested in any of these ideas, please discuss them with
either Michael Sparks or Matt Hammond over email -
kamaelia-list@lists.sourceforge.net ( or anyone else on the list).
You'll also find us in #kamaelia on freenode's IRC network. Project IntroductionsThink
"lego for software", and "concurrency made easy" if you're after a
soundbite. The presentation above should give you the basic idea More Technical intros:Fluffy:TutorialsSee also the Cookbook & Components links above!
|