I've been experimenting with what it would look like for Cordova BlackBerry to be modified such that all the API are separated out into plugins. For those that want to cut to the chase, here's my repo:
https://github.com/deedubbu/cordova-blackberry-pluggable This repo is a representation of what the binary download would be for the end user and is not a fork of either cordova-js or cordova-blackberry-webworks. Without being able to see the change history it might be difficult to tell what I've done so I'll provide some high level details here: 1. Separated the native code and associated JavaScript into independent WebWorks extensions. Previously there was only a single extension. This allows us to make use of the BlackBerry WebWorks framework build/config tools which handle packaging up only the necessary code when building an app. 2. All Cordova JavaScript is injected from the native side. No need to include cordova.js in your application, all the Cordova JavaScript is loaded before the applications pages load. 3. WebWorks Extension API is hidden behind the existing Cordova Plugin interface. Plugin developer doesn't really need to know that they are developing a WebWorks extension. The only new interface requirement for a plugin is to invoke a new constructor. 4. JavaScript API are defined as modules (no change) and can additionally call cordova.addPlugin(...) or cordova.mergePlugin(...) to override/merge global namespace. 5. Installation of Cordova is a simple matter of copying a folder to the WebWorks SDK ext folder. 6. Installation of a Cordova plugin is a simple matter of copying a folder to the WebWorks SDK ext folder. 7. Enabling a Cordova plugin requires specifying the feature id in projects config.xml. plugins.xml is not used. Ok, that's a quick brain dump. The README contains a few more details. I plan on eventually pushing branches to my forks for cordova-js and cordova-blackberry-webworks which will show the actual code changes.
