[maemo-users] BRisa Release 0.10.0

From: Leandro Sales leandroal at gmail.com
Date: Mon Jun 15 15:30:57 EEST 2009
Hi list,
   I'm pleased to announce the release of python-brisa version 0.10.0.
This version contains a lot of improvements and optimizations. Thanks
to all developers who helped us for this release.

Website: http://brisa.garage.maemo.org/
Development: http://garage.maemo.org/projects/brisa/
Download: https://garage.maemo.org/frs/?group_id=138
Mailing list: https://garage.maemo.org/mailman/listinfo/brisa-discuss/

What is python-brisa?

Python-brisa is a UPnP framework written in Python provided under MIT
License. It contains facilities for building UPnP devices, services
and control points.

    * Integration with Qt, Gtk, Glib2 and Ecore
    * Simple but powerful API for writing devices, services and control points
    * Complete UPnP device architecture implementation (SSDP, SOAP,
MSearch, Eventing (GENA))
    * Network transport and API facilities (UDP, TCP, HTTP, XML, IP
and network interfaces)
    * Facilities for logging, configurations, threading, application management


Being a pure python solution, python-brisa is supposed to run on every
platform that enables python. It's been tested with both Python 2.5
and Python 2.6 versions.

We would really appreciate community feedback, bug reports and feature
requests concerning attempts to run it on other platforms.

In this release, we have to highlight our step further on
multiplatform compliance: a WSGI (Web Server Gateway Interface).

The python-brisa framework requires a webserver and we have provided
this feature through WSGI. We have implemented adapters for Cherrypy,
Circuits and Python-Paste WSGI servers, but this is easily extended to
any other WSGI servers.


- Python 2.5.x, Python 2.5.x-dev (or 2.6) - http://www.python.org

One of the following:
- Python-Cherrypy (>= 3.1.1) - http://www.cherrypy.org
- Circuits - http://trac.softcircuit.com.au/circuits/
- Python-paste http://pythonpaste.org/


Our developers are usually at our official channel on freenode.

    * IRC Channel: #brisa @ irc.freenode.net
    * Mailing List: https://garage.maemo.org/mailman/listinfo/brisa-discuss/

Feel free to provide feedbacks, ask questions and so on.

Tasks of the release
    * Implemented WSGI server adapters for cherrypy, circuits.web and paste
    * Webserver is now WSGI with pluggable server adapters
    * Implemented ServiceBuilder that builds the service object from a scpd.xml
    * Implemented two ways of creating a service: with a scpd.xml file
or by specifying service parameters through code - and the framework
generates the scpd.xml
    * Reactor infrastructure added
    * Webserver is not a singleton anymore
    * Arrangement for device abstracts the user from a lot of things,
such as the webserver
    * Implemented Gtk2Reactor, Glib2Reactor, EcoreReactor,
SelectReactor (default)
    * Plugin architecture refactored
    * Log messages are a bit more cleaner now. Most log messages were
for debug purposes, so, changed most of them to DEBUG. INFO level now
should be only used for informing the user high-level events, such as
"New device", "Device is gone", "Publishing device", and so on.
    * Control point objects are now reusable. They can now be stopped,
and started again.
    * Closure procedure is now chained. Some classes (such as ssdp
msearch) now have these 3 methods: start(), stop(), destroy(). start()
- starts the class, stop() - stops the class, but it can be start()'ed
again later and destroy() - stops the class DEFINITELY, clean
references to help with garbage collection, makes the class unusable.
For a clearer view, take a look at
upnp/control_point/control_point.py. You will notice that these three
methods are chained.
    * Device webserver publishing is now chained and transparent to
the user. Added some options to BRisa for customizing device/service
build (these options have default values for making everything work,
automatic as possible)

    * Packages created:
          - core: framework core stuff
          - core.reactors: reactors implementations
          - upnp.control_point: API for writing control points
          - upnp.device: API for writing devices
          - upnp.services: general services implemented by us
(ConnectionManager, ContentDirectory)
          - upnp.services.xmls: XML folder for the services of the item above

    * Removed lots of threads: most are now integrated with the main
loop (fd's and sleeps)
    * Implemented UPnP eventing API on the device side
    * Removed deprecated modules: utils.sqlite, threading
    * Packages moves (from -> to):
          - utils.network -> core.network
          - utils.network_listeners -> core.network_listeners
          - utils.network_senders -> core.network_senders
          - utils.system -> core.system
          - utils.failure -> core.failure
          - threading.threaded_call -> core.threaded_call
          - log -> core.log
          - config -> core.config
          - control_point -> upnp.control_point
          - xml_descriptions -> upnp.services.xmls
          - services.web_server -> core.webserver

Bugs fixed in this release
    * Fixed looping call bug when the parameter "now" is False
    * Fixed arguments parsing bug (was not parsing arguments properly)
    * Fixed examples XML files

Features implemented from last release plans
    * Improve the thread interrupt with a higher level mechanism
(probably pipes)
    * Provide framework's own exception classes
    * Implement more basic devices as examples
    * Add more basic examples of framework usage
    * Complete unit test suite for the framework
    * Add scripts for automatic packaging for gentoo, rpm

Next release plans
    * Create an universal control point application
    * Create a media center application
    * Implement more basic devices as examples
    * Implement Media Server 2.0 and 3.0 devices
    * Implement Media Renderer 2.0 device

Leandro Melo de Sales
Pervasive and Embedded Computing Laboratory
PhD candidate in Computer Science at Federal University of Campina Grande
Assistent Professor in Computer Science at Federal University of Alagoas
More information about the maemo-users mailing list