Project Tasks

Specific things that would be useful. If you want to work on these, please start a /Developers/Projects/ProjectTaskPage with a basic outline of what, why, how, when, who, where, etc. The key things out of those really are the who, what, where.

TCP Server improvements

  • * Calling stop on the scheduler causes it to call stop on all the scheduled microprocesses
    • DONE - now sitting on Michael's branch. Needs merge.
  • * The stop on TCP Server & CSA causes respective sockets to be shutdown cleanly
    • INITIAL PASS DONE - Needs testing. Likely to need to catch situation where sockets are closed multiple times. (Since the internet subsystem is going to prefer to attempt to close too many times rather than not enough times!!)
    • Need to write test examples showing usage.
    • Needs to also catch keyboardInterrupt and allow that to be a general case which can kill the system via a .stop()

  • * CSA needs to respect the fact that when it forwards data it make get a NoSpaceInbox
    • DONE - now sitting on Michael's branch. Needs merge.
  • Interesting thought:
    • A later version of the CSA & TCPServer could have an option to make it such that when a client (or protocol) tries to _send_ data to a socket that it fails if there's no capacity As a configurable option. (Most protocol handlers won't be expecting it) That should be doable by setting the max inbox size to zero

Platform compatibility (Windows, Mac):

  • Check windows, find out what works, what doesn't
  • Windows specific megabundle
  • Package up whiteboard for windows users
  • Something similar to the selector for files for windows, preferably transparent so the developer doesn't have to choose different components for different platforms
  • Get speex working for windows users
  • Package up whiteboard for mac users
  • Audio capture component for macs
  • Get speex working for macs
  • Resolve (likely) arising endian issues.
  • Test on Python 2.5

Axon core:

  • Improve box destruction to handle when a box is still linked to another
    • linkages are not properly broken at the moment
  • Fix WaitComplete microprocess closures so the substitute microprocess self.pause() actually pauses
  • Make CAT fully threadsafe

Tidying-up and Quick wins:

  • Tidy and simplify the Plug & PlugSplitter components
  • Have SimpleServer tell the source IP, source port, dest IP, dest port

Topology visualiser & Introspection:

  • Change topology visualiser to support "on demand" screen update rather than continuous
  • Support "no render" layout update (has to an extent already).
  • Change topology visualiser to support hierarchical display/etc
  • Rewrite topology viewer to abstract from rendering mechanism (so rendering components could be plugged in for opengl, pygame etc)
  • Rewrite topology physics in pyrex for serious speed boost :-) (thereby making it practical for visualising 'real' systems, eg. whiteboard, which contains 61 components when running stand alone)
    • Ryan expressed doubt that the slowness was all due to python and offered to investigate how it could be rewritten to be faster. Matt gratefully accepted

Whiteboard ideas:

  • Try whiteboard in 3D
  • Try an automated "scatter onto a concave hemisphere with me the me middle layout for auto layout of pictures. Allow links to be drawn between said pictures positioned in 3D, potentially integrate with topology visualiser subsystem (simply different rule set?).
  • Ability to edit the different pages of the same "shared pad" in whiteboard session, rather than forced to be on the same page
  • A whiteboard in 3d with multiple sheets etc.

Protocols, codecs, integration:

  • User authentication modules
  • Clean integration with twisted for reuse of twisted.protocols
  • DNS client (would be useful in several places)
  • Gstreamer integration
  • A better way to do his (Ryan's) HTML parser in Kamaelia:
    • "I ended up doing my HTML parser as a state machine and a stack - if I did it as a standard unix program (like a filter) it would have been much simpler using function calls and blocking."
    • Michael commented that he had some ideas on this issue

AIM Support

  • Remove from x import * statements from Protocol/AIM/ChatManager.
  • Provide a set of pre-defined SNAC constants (or possibly even classes) such that it is possible to write self.sendSnac(MESSAGE_TO_USER, data) instead of self.sendSnac(04, 07, data).
  • Remove the block of code at the end of AIMHarness's main method that keeps it running.  After that code is run, AIMHarness serves only to pass messages between ChatManager and OSCARClient.  It could probably be refactored such that those two components link directly to each other rather than keeping the AIMHarness around.
  • The LoginHandler code can be a tad confusing with several different levels of WaitCompletes.  It could probably be refactored to simplify things.

Graphics framework support (pygame, OpenGL, etc):

  • Integrate PGU (Phil's pyGame Utils)
  • Use integrated PGU for buttons drop down lists, etc
    • in Whiteboard
    • Inside Compose, (simplifying use on Macs)
  • Simple window manager support components -
    • Add policies to display locations and management for xxDisplays (providing layering, z positioning, reposition for pygame & opengl surfaces, opengl code has this to an extent),
  • Styleable HTML layout engine for the window manager
  • Flesh out pygame related tools (perhaps independently of PGU)
  • Resolve MH.PygameApp issues,
  • Create joined spaces (2D and 3D) using Pygame & OpenGL code
  • Adding visual ordering of components to pygame: eg. a component specifies a "layer number" to appear on
  • Adding better event routing for pygame & opengl - eg. only top-most component receives a click event

Random project ideas

  • Write 3D game using Kamaelia
  • Automate release process.
  • A major python web framework, (eg turbogears or django) with a kamaelia based web server and sample bi-directional "ajax" chat application
    • Michael mentioned that Simon Willison of Django queried the possibility of integrating Kamaelia at Euro OSCON
  • RTP client and server implementation - potential internal bbc requirement
    • Matt has developed nascent RTP packeting/depacketing components

DVB, PVRs timeshifting, etc:

  • Write a graphical EPG for DVB
  • Build a more complete PVR application
  • An interactive introspector/visualiser that only displays 'neighbourhood' of a component (eg. those connected to a particular component) ... allowing you to explore by moving through a system
  • Implementation of ssh protocol

Relevant to HTTP, SMTP systems:

  • Half-close support in TCP client and server components (e.g. by sending messages via the signal outbox, or accepting a half-close command via the control inbox)
  • Better flow control (i.e. pausing components when what they've already processed is setting in a big backlog of the next component, or that the component way down the chain has limited bandwidth)
  • DNS client component


Kamaelia is an open source project originated from and guided by BBC Research. For more information browse the site or get in contact.

This is an ongoing community based development site. As a result the contents of this page is the opinions of the contributors of the pages involved not the organisations involved. Specificially, this page may contain personal views which are not the views of the BBC. (the site is powered by a wiki engine)

(C) Copyright 2008 Kamaelia Contributors, including the British Broadcasting Corporation, All Rights Reserved

This web site is powered by the same code created for the bicker manor project. For more details, contact Michael Sparks at BBC Research directly (cf contact)