March 2024 - This site, and Kamaelia are being updated. There is significant work needed, and PRs are welcome.

Snap Together Software

A Programmer's Toybox for network apps

A toy box, a toolkit, a library of components you can take and bolt together, customise and create your own. This includes components for TCP/multicast clients and servers, backplanes, chassis, Dirac video encoding & decoding, Vorbis decoding, pygame & Tk based user interfaces and Tk, visualisation tools, presentation tools, games tools... A networked unix pipe for the 21st century - a way of making general concurrency easy to work with, and fun.

But what is it?

A framework providing the nuts and bolts for building components. A library of components built using that framework. Components are implemented at the lowest level as python generators, and communicate by message passing. Components are composed into systems in a manner similar to Unix pipelines, but with some twists that are relevent to modern computer systems rather than just file-like systems.

Why?

To enable programmers of all skill levels with playing with components in a networked environment. Network systems are naturally concurrent, and concurrency is often hard. Kamaelia is trying to make concurrency natural and easy to work with, because we are trying to solve some specific challenges regarding putting (some or all of) the BBC Archive online. Lego, K'Nex and building blocks are great metaphors for systems like unix pipelines that have made concurrency easy (in a constrained way) for 30 years.

Upcoming Events


Current Status

Last updated: Nov 11, 2006, Michael Sparks

Axon - Core Concurrency framework- version 1.5.1 - overview of status

  • API Stable for generator components
  • Beta status API for Thread based components
  • Non-CPU-greedy capable (scheduler can sleep and be awoken by threads)
  • Production ready (>6 months on a running system)

Kamaelia - the toy box - version 0.5.0

Full coverage of core aims (introspection, network, graphics & codec capable, graphical systems composer, large examples)

API is subject to change (hence 0.5.0 status), but includes:

  • Network - beta production ready (TCP/UDP/Multicast clients/servers)
  • Graphics/GUI capabilities - Pygame, OpenGL, Tkinter (stable)
  • Protocols - HTTP, BitTorrent - beta status
  • Codec support - Dirac (encode/decode), Vorbis(decode), Speex(encode/decode), MP3 (decode - via pymedia)
  • PyMedia based support for some audio codecs & audio capture
  • Devices:
  • Alsa, DVB (digital TV broadcast)
  • Unix Shell outs
  • eg to call transcoding tools

Larger scale systems in the distribution

  • Kamaelia Macro (timeshift & transcode what's broadcast for viewing at a more convenient time)
  • P2P Whiteboard (supporting multiple pages, linked whiteboards, audio mixing and retransmission, etc)
  • Compose - a graphical composition tool for creating pipelines
  • Axon Shell - a specialised command line allowing the launch of components as well as programs
  • Axon Visualiser - a pygame based system for visualising what's going on inside a Kamaelia system (uses a physics model (based on a lava lamp(!) )for layout that we've had repeated comments looks fun/attractive :)
  • Show - a presentation tool

Examples for many major subsystems

Extensive Documentation (at minimum detailed module level docs - ala pydoc)

Ongoing Projects
Developer Console

Mailing lists

General discussion:

We have moved the mailing list to Google Groups - group name "Kamaelia"

http://lists.sourceforge.net/lists/listinfo/kamaelia-list

kamaelia-list@lists.sourceforge.net

Announcements:

Subversion commits: (high traffic)


News


Licensing: