Kamaelia
Encyclopedia
Kamaelia is a free software
/open source
Python-based
systems-development tool and concurrency
framework produced by BBC Research.
Kamaelia applications are produced by linking independent components together. These components communicate entirely through "inboxes" and "outboxes" (queues) largely removing the burdens of thread-safety and IPC
from the developer. This also makes components reusable in different systems, allows easy unit testing and results in parallelism (between components) by default.
Components are generally implemented as generators
- a method more light-weight than allocating a thread to each (though this is also supported). As a result, switching between the execution of components in Kamaelia systems is very fast.
Applications that have been produced using Kamaelia include a Freeview digital video recorder
, a network-shared whiteboard
, a 3D
GUI
, an HTTP Server, an audio mixer, a stream multicasting system and a simple BitTorrent client
.
, GPL and LGPL) to the Apache License
, with a note that if usage under the old licensing scheme was permitted if necessary (due to license incompatibilities), given the rationale for change was to make the codebase more usable by developers not less.
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...
/open source
Open-source software
Open-source software is computer software that is available in source code form: the source code and certain other rights normally reserved for copyright holders are provided under a software license that permits users to study, change, improve and at times also to distribute the software.Open...
Python-based
Python (programming language)
Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...
systems-development tool and concurrency
Concurrency (computer science)
In computer science, concurrency is a property of systems in which several computations are executing simultaneously, and potentially interacting with each other...
framework produced by BBC Research.
Kamaelia applications are produced by linking independent components together. These components communicate entirely through "inboxes" and "outboxes" (queues) largely removing the burdens of thread-safety and IPC
Inter-process communication
In computing, Inter-process communication is a set of methods for the exchange of data among multiple threads in one or more processes. Processes may be running on one or more computers connected by a network. IPC methods are divided into methods for message passing, synchronization, shared...
from the developer. This also makes components reusable in different systems, allows easy unit testing and results in parallelism (between components) by default.
Components are generally implemented as generators
Generator (computer science)
In computer science, a generator is a special routine that can be used to control the iteration behaviour of a loop. A generator is very similar to a function that returns an array, in that a generator has parameters, can be called, and generates a sequence of values...
- a method more light-weight than allocating a thread to each (though this is also supported). As a result, switching between the execution of components in Kamaelia systems is very fast.
Applications that have been produced using Kamaelia include a Freeview digital video recorder
Digital video recorder
A digital video recorder , sometimes referred to by the merchandising term personal video recorder , is a consumer electronics device or application software that records video in a digital format to a disk drive, USB flash drive, SD memory card or other local or networked mass storage device...
, a network-shared whiteboard
Whiteboarding
Whiteboarding is the placement of shared files on an on-screen shared notebook or whiteboard. Videoconferencing and data conferencing software often lets the user annotate the shared documents as on a physical whiteboard....
, a 3D
3D computer graphics
3D computer graphics are graphics that use a three-dimensional representation of geometric data that is stored in the computer for the purposes of performing calculations and rendering 2D images...
GUI
Gui
Gui or guee is a generic term to refer to grilled dishes in Korean cuisine. These most commonly have meat or fish as their primary ingredient, but may in some cases also comprise grilled vegetables or other vegetarian ingredients. The term derives from the verb, "gupda" in Korean, which literally...
, an HTTP Server, an audio mixer, a stream multicasting system and a simple BitTorrent client
BitTorrent client
BitTorrent is a peer-to-peer program developed by Bram Cohen and BitTorrent, Inc. used for uploading and downloading files via the BitTorrent protocol. BitTorrent was the first client written for the protocol. It is often nicknamed Mainline by developers denoting its official origins. Since version...
.
License Change
Kamaelia's License changed in July 2010 from the Mozilla tri-license (MPLMozilla Public License
The Mozilla Public License is a free and open source software license. Version 1.0 was developed by Mitchell Baker when she worked as a lawyer at Netscape Communications Corporation and version 1.1 at the Mozilla Foundation...
, GPL and LGPL) to the Apache License
Apache License
The Apache License is a copyfree free software license authored by the Apache Software Foundation . The Apache License requires preservation of the copyright notice and disclaimer....
, with a note that if usage under the old licensing scheme was permitted if necessary (due to license incompatibilities), given the rationale for change was to make the codebase more usable by developers not less.