Kamaelia 0.4.0 RELEASED - Faster! More Tools! More Examples! More Docs! ;-)

M

Michael

Hi!


(OK, slightly silly subject line :)

I'm extremely pleased to say - Kamaelia 0.4.0 has been released!

What's New & Changed?
=====================

Kamaelia 0.4.0 is a consolidation, documentation and optimisation enhanced
release. Whilst there are a wide variety of new components, existing
functionality has been consolidated, and is now in use in a handful of
(beta) production systems.

Notable New Components
* Tools for Timeshifting Digital TV (DVB-T handling to be precise)
(These tools are only intended for use as legal under UK law,
you need to check locally if you can use them.)
* A software data backplane -
http://kamaelia.sourceforge.net/Introduction.html
has an example using this.
* Tools for piping data easily/trivially through external processes
* Tools for taking advantage of system optimisations allowing quiescent
behaviour. (both in terms of pygame & network based systems)
* Tools for using UDP

*** Kamaelia 0.4.0 requires the use of Axon 1.5 ***
*** (released at the same time as this release). ***

Also, virtually all components now have highly detailed documentation inside
their sourcefiles. A (large) subset of this is available here:
* http://kamaelia.sourceforge.net/Components.html

The examples have been duplicated onto the website, and are here:
* http://kamaelia.sourceforge.net/Cookbook.html

Our tutorial for helping getting started is here:
* http://kamaelia.sourceforge.net/MiniAxon/

This has now been battle tested by a good few dozen people, and we feel is a
good introduction to Kamaelia's approach, and others have also stated they
find it a good way of understanding generators too. (even if they're not
interested in Kamaelia)

New Examples
* Tools for using UDP & SingleServer

* A collaborative whiteboard "sketcher" which is both a server to other
whiteboards and/or a client to other whiteboards. (Due to changes, when
not in use CPU usage for these is as close to zero as it can be for any
software) This is also a good example of usage of the backplane
component.

This application is particularly nice to use in conjunction with a
tablet PC!

An overview of the sketcher can be found on our systems page:

* http://kamaelia.sourceforge.net/Systems.html
(see Collaborative Whiteboarding)

* Examples for using the tools for timeshifting including:

* Tuning into a TV channel on Freeview and recording it to disk
* Dumping a DVB multiplex transport stream
* Demultiplexing a prestored DVB multiplex

A system for grabbing a TV channel and it's now & next information, such
that this can allow the programmes to be captured and transcoding as
individual programmes for watching later.

This is the core of the BBC Macro system (an internal prototype) that
can be seen here:
* http://bbc.kamaelia.org/cgi-bin/blog/blog.cgi

An overview of the architecture can be found here:

* http://kamaelia.sourceforge.net/KamaeliaMacro.html

Essentially, this allows you to build your own space efficient PVR.

General overview of other large scale changes

Massively improved documentation across the board (no file left untouched).
This is all largely in the form of pydoc based documentation, a fair chunk
of it is available at
* http://kamaelia.sourceforge.net/Components.html

However the documentation in those files goes further than that, including
many, many more examples than are even at:
* http://kamaelia.sourceforge.net/Cookbook.html

*NOTE* Kamaelia 0.4.0 requires Axon-1.5.0 to run due to a number
of system optimisations which Kamaelia 0.4.0 takes advantage of.

Full release notes and change log:
* http://kamaelia.sourceforge.net/Kamaelia-0.4.0-ReleaseNotes.html

What Is Kamaelia?
=================

See also: http://kamaelia.sourceforge.net/Introduction.html

GOAL: Kamaelia is a general component framework for
all programmers and maintainable development.
Write clear and simple snap-together components
using Unix Pipes for the 21st Century.

Kamaelia is a library of networking/communications components for
innovative multimedia systems. The component architecture is designed
to simplify creation and testing of systems, protocols and large scale
media delivery systems. A subset of the system has been tested on
series 60 mobile phones.

It is optimised for simplicity, such that people can get started very
rapidly, and such that maintainers can pick up the code of others
without misunderstandings.

It is designed as a /practical/ toolkit, such that you can build
systems such as:
* Collaborative whiteboards
* Transcoding PVRs for timeshifting TV
* Ogg Vorbis streaming server/client systems (via vorbissimple)
* Create Video players & streaming systems (for dirac).
* With subtitles.
* Simple network aware games (via pygame)
* Quickly build TCP & Multicast based network servers and clients
* Presentation tools
* A networked audio mixer matrix (think multiple audio sources over
network connections mixed and sent on to multiple locations with
different mixes)
* Look at graph topologies & customise the rules of display &
particle types.
..... Mix and match all of the above.

These are all real examples you can do today.

You can also do a lot of this *visually* using the new PipeBuilder
application in Tools.

Essentially if the system you want to build involves audio or moving
pictures, and you want to be able to make the system network aware,
then this should be quick and easy to do using Kamaelia. (If it isn't,
then a) it's a bug b) needs improving :)

Oh, and due to things like the visual editor, the use of pygame in a
lot of examples, the use of dirac & vorbis, it's a lot of fun too :)

It runs on Linux, Windows, Mac OS X with a subset running on Series 60
phones. (Linux is the primary development system)

Requirements
============

* Python 2.3 or higher recommended, though please do report any bugs
with 2.2.
* Axon (1.5 required)

Optional extras: (all available via the Kamaelia download page)
* vorbissimple (if you want to use the vorbis decode
component/examples)
* dirac bindings (again from kamaelia site) if you want to use the
dirac encode/decode components & examples). (And dirac of
course :)
* python-dvb bindings

Axon, vorbissimple and python-dirac are separate parts of the Kamaelia
project, and available at the same download location - see below)

Platforms
=========

Kamaelia has been used successfully under both Linux, Windows and Mac OS
X (panther). A subset of Kamaelia has been successfully tested on Series
60 Nokia mobiles when used with the Axon SERIES 60 branch.

Where can I get it?
===================

Sourceforge Download:

http://sourceforge.net/project/showfiles.php?group_id=122494&package_id=133714

Web pages are here:
http://kamaelia.sourceforge.net/Docs/
http://kamaelia.sourceforge.net/ (includes info on mailing lists)

ViewCVS access is available here:
http://cvs.sourceforge.net/viewcvs.py/kamaelia/

Tutorial for the core component/concurrency system:
* http://kamaelia.sourceforge.net/MiniAxon/

Project Motivations:
* http://kamaelia.sourceforge.net/Challenges/

Licensing
=========

Kamaelia is released under the Mozilla tri-license scheme
(MPL1.1/GPL2.0/LGPL2.1). See
http://kamaelia.sourceforge.net/Licensing.html

Best Regards,


Michael.
--
Michael Sparks, Senior Research Engineer, BBC Research, Technology Group
(e-mail address removed), Kamaelia Project Lead, http://kamaelia.sf.net/

This message (and any attachments) may contain personal views
which are not the views of the BBC unless specifically stated.
 
R

Robin Becker

Michael said:
Hi!


(OK, slightly silly subject line :)

I'm extremely pleased to say - Kamaelia 0.4.0 has been released!
........
Windows users might see problems with the attempt at importing libc.so.6
in the Axon Scheduler.

I changed the lines at line 44 of scheduler.py to something like this

try:
from ctypes import cdll
try:
libc = cdll.LoadLibrary("/lib/libc.so.6")
except:
raise ImportError
sched_yield = libc.sched_yield
except ImportError:
def sched_yield(): pass

as I have ctypes, but no libc.so.6 I get a Windows error from the statement
libc = cdll.LoadLibrary("/lib/libc.so.6")

This allows somethings to run eg

AxonVisualiser.py --navelgaze

but I'm not sure if the results are really unaffected by not having a
real yielder. The diagram appears, but doesn't seem to settle down.
 
M

Michael

Robin said:
Windows users might see problems with the attempt at importing libc.so.6
in the Axon Scheduler.

I changed the lines at line 44 of scheduler.py to something like this
[ .. patch .. ]

Many thanks!

Yes, this issue has also been raised on the Kamaelia mailing list in the
past couple of days by Stefan Rank (he had a solution based on using
win32.Sleep(0,0) which calls SleepEx[1]). I'm planning on an Axon 1.5.1
release shortly to deal with this issue.
[1] http://www-128.ibm.com/developerwor...Linux.html?ca=dgr-lnxw09CPP2LinuxPower#N10364

I've got three options - I can either take the approach you've suggested,
the approach suggested on the list (which is to call win32.Sleep(0,0), or
actually remove this code from the scheduler completely.

I'm actually most tempted by the final option, largely because this code
was added in an earlier release as a way of making Axon & the scheduler
more system friendly. Since we've now effectively gone from a busy wait
loop to a scheduler that /can/ sleep waiting for threads [2] this means
that code can be a lot more system friendly by default.

[2] For example, rather than calling select with a timeout of zero in the
main thread, it's now called with a timeout of 5s in a thread, which
wakes up the scheduler when there's something to do. The pygame code
does the same trick...

That said, there is still whole chunks of code that busy run (such as the
physics simulation, so I'm torn. Do I take the code you put forward, the
solution put forward on the the list which I can't really check (since I
don't have a windows box to test with right now (I will on Monday though)),
or yank it out.

I suppose the "correct" thing is to put your solution into Axon 1.5.1 - to
get rid of the failure, and then to test Stefan's solution locally. My
hesitation with regard to Stefan's solution is simply the fact that I
don't tend to do a huge amount of coding under windows, and hence have
greater concern there as a result.

I'll get a release out with that fix either today or tomorrow, and then
roll up Stefan's more detailed fix into the 1.5.2 release along with
anything else that crops up over the next few days (hopefully nothing,
but you never know).
This allows somethings to run eg

AxonVisualiser.py --navelgaze

but I'm not sure if the results are really unaffected by not having a
real yielder. The diagram appears, but doesn't seem to settle down.

I don't think the AxonVisualiser would be particularly affected by
this - any wobbling you'll see there is probably more down to the
simple physics model the visualiser uses not having sufficient
dampening for the layout you see. (The physics model was apparently
originally written by Matt for a lava lamp simulator, but has turned
out to be incredibly useful as a simple layout tool :)

A little bit of manual assistance to spread things out can sometimes
help it settle down though :)
whoops, forgot to say thanks as I think this is very nice work

You're very welcome. If you have any other suggestions/ideas for
improvement they'd be very welcome :)

Personally, I think some of the most fun stuff right now being done by
new people with it is coming from 2 of our summer of code students. One,
Thomas, is working on 3D components (eg putting pygame components into a
PyOpenGL display).

The other is doing bittorrent related work, but has also written a webserver
and IRC bot - both pretty much from scratch (at the protocol level) over
the past month. (The other two students are working on encryption ideas for
tools for communications - eg encrypted VoIP type things)

Thomas's work (3D) is discussed here: http://thfsoc.blogspot.com/
Ryan's code (Bit Torrent, webserver/client, IRC bot) is sitting here:
* http://kamaelia.cvs.sourceforge.net/kamaelia/Sketches/RJL/

Thanks for the bug fix/kind words!

Regards,


Michael.
 
M

Matt Hammond

This allows somethings to run eg
I don't think the AxonVisualiser would be particularly affected by
this - any wobbling you'll see there is probably more down to the
simple physics model the visualiser uses not having sufficient
dampening for the layout you see. (The physics model was apparently
originally written by Matt for a lava lamp simulator, but has turned
out to be incredibly useful as a simple layout tool :)

A little bit of manual assistance to spread things out can sometimes
help it settle down though :)

Michael's right: the wobble is due to the low level of dampening in the
physics model and its discrete time step nature. Brief, non-methodical(!)
experiments with increased dampening do lead to a more stable
visualisation, but particles start to become 'sticky' and not always move
when it would be helpful for them to do so!

The physics code is not the fastest on the planet, so the number of
simulation cycles per second is quite low - therefore to enable the
particles to move quickly enough, the forces act quite strongly and the
dampening is quite low. You therefore occasionally see a slight wobbling
effect where a 'component' particle is being pulled and pushed quite
strongly by its inbox and outbox particles in many different directions at
once.



Matt
--
| Matt Hammond
| Research Engineer, Tech. Group, BBC, Kingswood Warren, Tadworth, Surrey,
UK
| http://kamaelia.sf.net/
| http://www.bbc.co.uk/rd/
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,731
Messages
2,569,432
Members
44,832
Latest member
GlennSmall

Latest Threads

Top