Friday, May 2, 2014

SolarNode plugin system

A long time ago SolarNode development switched from a traditional style Java application to a modular OSGi based one. One of the reasons for the switch was the premise of allowing users to easily download and use SolarNode modules without having to restart the SolarNode application. In OSGi installing, starting, stopping, and uninstalling modules (called bundles in OSGi) is fairly trivial. What SolarNode has lacked, however, was any friendly UI to allow users to browse the available modules and install the ones they want.
Finally that is about to change. The first step to enabling this feature was the deployment of a SolarNetwork-hosted software repository. There are a few open source packages out there, I ended up using Apache Archiva. Now SolarNetwork has a Maven-compatible online software repository to host its own modules, and the build infrastructure has been updated to easily publish modules as they are developed.
Browsing the SolarNetwork Repository
The next step was to make use of the OSGi Bundle Repository (OBR) developed as part of Apache Felix. OBR provides a way to resolve OSGi bundles along with their dependencies. Unfortunately, Archiva does not publish OBR metadata so I turned to another Apache project, Karaf Cave. Cave can act as a OBR proxy to a Maven repository, in which case it scans the Maven repository and generates OBR metadata files from which the OBR resource URLs point back to the artifacts in the Maven repository.

The final step was to develop some SolarNode bundles to enable configuring OBR URLs and a UI to allow users to browse the available software and install or remove individual modules. You can see the result of this work in the following demonstration:


This is a big step forward both in terms of ease of use for users and the SolarNode software development process!

1 comment:

quannelucci said...

이후 본드는 카지노가입 쿠폰 이탈리아 남부 마테라에서 매들린과 행복한 한때를 보내지만, 오래전 숨진 옛 애인 베스퍼(에바 그린)를 잊지 못한다. 베스퍼의 묘지를 찾은 본드는 괴한들의 공격을 받고 세계적 범죄조직 스펙터의 소행이라고 여긴다. 본드는 스펙터의 중간보스를 아버지로 둔 매들린을 의심해 그녀를 떠나보낸다.