August'24: Kamaelia is in maintenance mode and will recieve periodic updates, about twice a year, primarily targeted around Python 3 and ecosystem compatibility. PRs are always welcome. Latest Release: 1.14.32 (2024/3/24)

Kamaelia & Google's Summer of Code

Kamaelia's aim is to make it easier and more fun to make software, quickly and maintainably in a way that makes concurrency (eg multicore) easy and fun to work with. The more code that is multicore friendly, the easier we make it for everyone.

Don't know python? Read this! Want an overview of how we handle mentoring? Read this!]

IMPORTANT: As a general point (whatever org you're interested in), pick (or create) a project idea you're passionate about or think will be fun that fits with the mentor org. You'll be doing this all summer, and we all want you to have fun, as well as create something cool. You might think "oh that's low priority", or "they wouldn't be interested in my idea for", well, if you're passionate about an idea and it "fits", then you being passionate becomes as important as the project!

Our primary pages for each year are listed below:

Students we're looking for

Please don't prejudge yourself as "I can't do that, I don't have the right experience". Some of the best projects we've seen have come from the most inexperienced of students. Some of the best insights have come from the most naive. If you have a lot of experience, you don't necessarily have the "right" experience, and so lull yourself into a false sense of security. However, fundamentally, if you think the project is interesting, the ideas are interesting or you're inspired by the ideas, please get in touch. Let us make the judgement, rather than prejudge youself out of a fun summer. Yes, we can't take everyone, but that doesn't mean we always take people with lots of experience :-) Your lack of experience can be a fantastic asset, OK? :-)

Previous Years

Previous year students
In previous years we've accepted students who have had a wide range of experience. Some have been pre-university students who are starting university following the summer, other ones we've had have been in the middle of the course. Still others have been graduating and even one post grad student. Lack of knowledge of python isn't something we consider a major hurdle, as long as you put the effort into learning python and doing the mini axon tutorial. (We don't expect any prior knowledge of Kamaelia)

Previous year projects

As an idea of how useful Summer of Code has been all round, a selection of the great work students did last summer as a part of Google Summer Of Code 2006 has:

This year

What we expect

We expect you to only propose a project you're enthusiastic about - we can say alot more about this, but that is actually one of the most important criterion. We all get more out of it that way!

This can be either one off the list, or something you think fits with the project. Kamaelia is a fairly wide ranging project (potentially) due to the goal of making concurrency easy & fun to work with in all contexts. As a result, if you've ever wanted to write that multicore, 3D, P2P game, Kamaelia should be the technology that makes it possible, and we'd view it a valid test of Kamaelia. Then again, if you want to write a program to assist children to learn to read and write (based on the gesture code & speech synthesis) that would be equally cool and useful. Then again, if you want to create systems for working with databases or social software systems, that would be useful as well, since it hits needs of the project. As we say, wide ranging.

There are however expectations we have as a result.

We will expect you to have done the MiniAxon tutorial ideally before submitting your application. This teaches you how Kamaelia essentially works under the hood (barring optimisations), and as a result we feel is vitally important.

We will expect you to, where practical, discuss your application with us on IRC or email sooner rather than later. We work primarily over IRC, we will expect you to do so too, so start as you mean to go on!

Since you're being paid to do this, we expect you to treat it like a full time job. Generally speaking that means 35-40 hours a week, though cultures round the world vary. (the numbers are indicative, not prescriptive based on european norms of what "full time work" means)

Since its summer we won't be surprised if you say you're having a holiday, so we expect to see how that is scheduled and planned for.

Yes, we know exams happen at different times of the year and we all have to juggle. It is your responsibility to say how you will manage the clash between your studies and your proposed work. (yes, we feel academic work must come first, but if someone's paying you to do something you're taking on a responsibility. It's your responsibility to say how you manage your commitments)

We expect you to manage your time and checkin code at least 2-3 times per week - we give you a way of doing this which is safe to do so.

We will expect you to attend our normal weekly IRC meeting, unless timezones simply don't work

We will expect you to attend a weekly guaranteed mentor time session. This is an hour long session but it's specifically there to allow you to have some guaranteed time with your mentor, rather than anything else.

We will expect you to have some plan for maintenance of your code after summer of code is finished. This can come in several forms. One option is to plan to be around after summer of code because you're doing a project you think is personally fascinating/useful. Another option is to aim to write your code with the intent of having it maintainable.

We will expect you to also track your work in two ways:

If you use code from other sources (eg the python cookbook, reference implementations) we expect you to quote your sources.

We may ask you to write an introductory presentation to the project work you have done, in a similar way to what you see on the Kamaelia Grey page. You want people to use your work, right? :-)

To have fun :) (What's the point otherwise? :)

ie it's your project and your commitment - we expect you to act that way ! :-)

What to expect from us
Given that freedom of ideas, what do we expect in return? We expect you:

Essentially, we want you to achieve your goals, create something fun and useful, we want you to learn how open source works, and we want to have fun at the same time. So we'll do whatever we can to help you, so long as you do whatever you can to help yourself. (which seems a fair deal :)

Ideas for This Year

Our ideas list for projects this year keeps on growing, and reflects the broad scope of the project which you can see from the components list. This is divided into two groups - exemplars (interesting useful applications which could be built and would usefully extend Kamaelia at the same time) and core improvements.

Application Ideas

Core Improvements
Whilst these are core improvements, we would prefer these to be done in the context of a usecase. (Since whilst it is _possible_ to develop new and useful technology without a usecase, its not amazingly useful since no one can see how to use it. As a result, even the Open GL project for example in the past was required to have examples of usage. Where examples of usage have been weak, the projects have often been weaker. (Which shouldn't be a surprise :-)

WSGI-ify the Kamaelia Web Server

Tools for working with SQL Databases.

Improved Multicore support (We can already do multicore, but it requires merge into the core, and how does it affect things like backplanes and all the various components.)

Extensions to the co-ordinating assistant tracker :

Change the topology visualiser to work in full 3D

Extend Kamaelia's Dirac support to include support for the optimsed version of Dirac called Schoedinger

Platform specific improvements

Explore how the changes to the way components can be defined can be handled and introspected by Compose.

However, if you just want to write a game using Kamaelia, that would be interesting, simply because it then becomes a nice demo of Kamaelia - especially if its networked and you can explore the contents of worlds on other people's runtimes (say flying round different people's universes) :-)

Many of last years ideas are discussed:

If you're interested in those please get in touch!

Please note please use our template in your application, its there to give you an idea of how we're evaluating apps!