As the queue for binding PRs is still too long at thus it has become a common practice to share JARs of unmerged bindings with other users on Github, there was the strong wish to have some easy mechanism to share such bindings.
Well, I am happy to announce that we now have an (early) version of such a mechanism in place: The Eclipse IoT Marketplace integration! Here are the details:
Eclipse IoT Marketplace
The Eclipse IoT Marketplace is a website, which allows people to exchange extensions for Eclipse projects and it now comes with a section for Eclipse SmartHome (which is still pretty empty, but that is why I tell you about it ). Note that the name “marketplace” does not mean that anything is sold there - it is fully uncommercial, nothing needs to be paid and it is all about sharing.
If you have an Eclipse account, you can add your own content (binding) there:
You should select IoT Category “Eclipse SmartHome”, Package Type “Binding” and “Package Format” “bundle”:
In the “Package Download URL”, you can then link to a jar file somewhere on the web (see below how to make the result of a PR easily available).
Please follow these general guidelines for your submission:
- Let’s add “Binding” to the label (as we will have other add-on type in future there as well)
- As it is the Eclipse SmartHome marketplace, do not specifically say “for openHAB 2” - it should in general be compatible with any ESH-based solution.
- Let’s try to have logos for the listings, so that the appearance is nicer when browsing them
Submissions are usually approved by the marketplace admins within 24 hours.
openHAB Marketplace Integration
Since build #828, the openHAB 2.1.0-SNAPSHOT distro has a new “misc” add-on for the IoT Marketplace:
If this is installed, you will find (after a page refresh) all bindings from the marketplace on the “bindings” tab as well. To make it easier to browse through the entries, there is now a new (optional) card layout besides the list layout (see the icons on the top right) and a logo and a description text. To filter for only marketplace entries, simply type “market” in the filter bar:
On “INSTALL”, the bundle will be immediately installed (but obviously only if you are online as they are downloaded from the remote url).
Note 1: Dependencies are NOT automatically installed - it is merely the single bundle that is installed. So you should make sure that you have all dependencies (like e.g. serial-transport or jupnp) already manually or as a dependency of another binding.
Note 2: The jars are installed in the OSGi cache - which means that they are lost upon an openHAB distro upgrade (which cleans the cache) - you will have to manually re-install then from the marketplace. As the main use case for the start will be for testing pre-releases, I think this is acceptable. For the future, I also plan an improved mechanism, which would download the jars to the addons folder (or something similar), so that they are kept over an upgrade as well.
Binary Builds from Pull Requests
Instead of manually building the jar from sources and uploading it to Github/Dropbox/GDrive or some other website for sharing, there is now a much simpler way: I have setup the PR builder on our Jenkins, which first of all validates that a PR is buildable, but secondly also deploys the result in a new Maven repo on our Artifactory instance: https://openhab.jfrog.io/openhab/libs-pullrequest-local/
So as an example, the Plugwise binding from this PR is automatically available as a jar at https://openhab.jfrog.io/openhab/libs-pullrequest-local/org/openhab/binding/org.openhab.binding.plugwise/2.1.0-SNAPSHOT/org.openhab.binding.plugwise-2.1.0-SNAPSHOT.jar. This url can be directly used as the download url for the IoT marketplace.
Note: The shared Maven repo for PRs obviously has the risk that if somebody else includes changes to a certain binding in his PR that the binary jar is changed accordingly - so it can be tricky to tell, what its origin is. I therefore only recommend using these urls for new bindings that are not yet part of the repo - refactorings of existing bindings are probably better offered elsewhere.
Start populating the IoT Marketplace!
I hope you like this new feature as much as I do (and I hope you understand why the rate of PR reviews slowed down over the past weeks as I was working on this). Please help and start populating the marketplace with content! It should make the waiting for the code review and merge much less painful. Obviously, the marketplace will also allow us in future to share content that is not and will never be part of the official distro, e.g. because it is closed source, not license compatible or for whatever other reason - I think it is a great mechanism to broaden the openHAB ecosystem.