As this manifest targets a JSON format and was first created to manage "packaged apps" I immediately thought about the CommonJS / Node.js package format. I mentioned it during the F2F meeting but missed until now to fill it as an issue.
You'll notice that the main manifest format properties were already defined in the Package format:
CommonJS first defined Packages as:
http://wiki.commonjs.org/wiki/Packages/1.0
It is supported by different package tools and the npm node.js package.json format was mostly inspired from it:
https://npmjs.org/doc/json.html
Wakanda is also implementing its support at different levels:
- server-side modules
- IDE extensions
- client-side "web pages"
- client-side "web components"
- widgets
I love this idea to push the developer to provide a bugs tracking URL (or email) as well as a list of maintainers.
The repositories property is interesting to provide either the original source repository as well as potential marketplace URLs from vendors for specific builds. This way, when a user click on a link to a manifest file, the browser can redirect to the most appropriate marketplace depending on the running platform (Android, FirefoxOS, iOS, ...)
The dependencies object relies on the package manager registry as is, which is a concern to me as those might not have all required components registered. Letting the option to provide repository URL in addition to the list of supported versions would be more "HATEOAS" (REST) compliant. In the context of Wakanda page packages, we define different types of dependencies like "devDependencies" (as node.js packages) or "loadDependencies" (used by the Ajax loader for CSS, JS and HTML template files). As for a packaged Web app, it is good to be able to define dependencies related to:
- Web Components
- libraries
I think anyone can imagine how much copies of jquery mobile or sencha mobile are taking some place on the device limited storages
Note:
This issue is also related to this other closed one for which it looks I'm not the only one to be unsatisfied: #7 (Inconsistant naming of members)