Rolling both a GStreamer prerelease and a Flumotion release.
I’m pretty damn happy with the new Flumotion release – it has some very nice improvements. The important one is the bundling of UI code which gets sent over the network, so that the admin client really is just a light shell that works everywhere.
We already has a basic concept of sending over UI, but now it’s been cleaned up and it works a lot better.
Basically, the manager on a machine has a registry that tells it how a bunch of files in the local tree are to be “partitioned” into a set of “bundles”. Each bundle is just a group of files that belong together (like, say, icons, glade files, and PyGTK code for changing colorbalance). Bundles can depend on each other (since, say, the tv card UI code depends on the colorbalance ui code). The union of all bundles represents the whole set of files that can be sent over the network.
The interesting part is that when the UI wants to show a page for a component, it asks the manager “I want to do this import. Give me everything I need”. The manager replies with the list of bundle names it needs, as well as md5sums for the .zip files for these bundles. The admin checks locally for which zip files it doesn’t have yet (or are outdated -hence the md5sum), and then requests all bundles it needs.
When it has them, it extracts them locally in a cache directory, *in a unique dir based on bundle name and md5sum*. Then some python magic is done so that you can import from the bundle namespace directly. So even if a file is extracted locally as “bttv-ui/a589fec…f3f/flumotion/component/producers/bttv/admin_gtk.py”, you can just run “import flumotion.component.producers.bttv.admin_gtk” and it works.
Now, why all this caching ? Because you can run the same admin client against different versions of managers. So instead of having to download all code each time, you just cache all downloaded instances, and regularly clean up old ones.
One of the nice things here is that just clicking on the component ui again automatically runs the newest code. Very handy for testing.
Anyway, new flumotion came out today. Give it a spin.