The OSGi Bundle Repository
I am currently working (when I can turn my eyes from the Mobile and Vehicle specification) on the OSGi Bundle Repository. A couple of years ago Richard S. Hall developed a simple repository, which he called the Oscar Bundle Repository or OBR. This repository was defined in an XML file that contained meta-information of the bundle and a URL where to download the bundle. Initially he maintained this file by hand on the osgi-oscar.sf.net site but after a short time decided that being an administrator was not his forte. So he modified the XML Schema to allow for a federation of repositories.
To make this repository useful, he created a service interface so that a remote repository was available from within an OSGi Framework. This service interface allowed bundles to be discovered, installed, and uninstalled. As the icing on the cake, he developed a command line based user interface with commands like obr list, obr install, etc. Other open source projects like Knopflerfish picked this up, providing bundles for the federated repository as well as an implementation of OBR?s service interface and user interface.
Recently, the OSGi decided to investigate a bundle repository that is hosted on an OSGi web site that would contain both open source and commercial bundles. Obviously, OBR was a prime candidate. Not only provided it most of the required functionality, it also had the right name after s/Oscar/OSGi/. Richard and I had been heavily discussion OBR in the spring and he had made an attempt at OBR-2, which is more general than OBR-1. We discussed the issues with several people, among which was Jeff McAffer, a key person in the Eclipse project. Jeff gave some very useful inputs like the need for license handling.
During ApacheCon we sat down and agreed on the final format for the XML. It is now a very generic capability/requirement model. The bundle manifest is used to generate the repository. I have developed a small project as proof of concept. The project contains:
- An indexer that takes a set of bundles and generates a repository XML file and a ZIP file containing all the resources.
- A service interface to incrementally resolve dependencies between installed bundles.
- A web based user interface to discover and resolve bundles
Now we have agreement, I must handle the next steps. We plan to provide both a web based interface as well as a bundle for Frameworks to manage a service platform using OBR. I hope we can make all the sources available for this project under a suitable open source license. Any party that then wants to provide bundles can register a URL with us so that it becomes part of the federated repository. I also hope that Eclipse will then quickly provide a user interface to use this repository. Then again, this all requires approval of the board so I better start writing up my proposal because my deadline for this project was end of 2005 ?
posted by Peter @ Friday, December 16, 2005