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.
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.
- Next IRC Meeting: Thursday 12th June 2008, 4pm UK Time
- BBC Mashed - 21st/22nd June 2008, London
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
- Alsa, DVB (digital TV broadcast)
- 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 ProjectsDeveloper Console
Subversion commits: (high traffic)
- See COPYING for complete details, but as a guide: Kamaelia is released under the Mozilla trilicense scheme (MPL/GPL/LGPL). This essentially means that if you change any files released you must license them under the same terms, but if you merely use the files, you only have to pass on the files you use. We view inheritance from classes in Axon as usage since this is generally how the component classes are intended to be used. Alternatively licensing may also be granted if appropriate.