App manifests, an anthology.
For some inexplicable reason the proliferation of market places for web apps has induced a proportional growth of custom manifest formats. Each app store, each platform now sports its own. And web developers love that latest trend. It helps them remember important information like their application’s name, its URL, or the relative path to its icon. It also keeps their JSON and XML coding skills sharp. Those who dislike this new trend will just get used to it through sheer repetition.
Yesterday’s otherwise exciting news bring our manifest count to eight (ten if we consider CommonJS packages and AppCache as playing in the same field). Time to recapitulate.
Until recently, Google also seemed to favor XML for its manifests, but preferred when it came in different flavors. Apps built for the Google Apps Marketplace have their own custom format. Unsurprisingly, Google Gadgets do too. And it’s totally different.
While we’re on the subject of JSON, let’s not forget webOS’s similar but not compatible format and Mozilla’s brand new one which at least seems to share some resemblance with Google’s. With the rise in popularity of node.js, CommonJS modules and AMD, the CommonJS package spec also deserves a mention, as it’s getting used more and more when building rich client-side applications.
Of course, this general survey wouldn’t be complete without having a look at Windows 8’s upcoming format for Metro style apps—lo and behold, it’s XML… and not spec-compliant to boot—and iOS’s hacky but effective use of META tags.
Finally one cannot ignore the elephant in the room: AppCache. Arguably not an app manifest per se, it’s still yet another file developers will have to tack on to their projects. It also has some overlap with the W3C Widgets spec. Did I mention it’s neither JSON nor XML, but a custom, line-delimited format?
Interoperability [REDACTED], do you speak it?
I don’t think anyone with the web’s best interest in mind would disagree that this plethora of formats is damaging. Why can’t we agree on a single format to describe literally the same thing: app meta-data with, eventually, some platform- or store-specific data sprinkled on top of it?
If the W3C Widgets spec is broken, let’s fix it. If this is about XML vs. JSON, let’s modify the spec so JSON works with it too. If the spec is broken beyond repair, let’s say so and come up with something better. And if it ill-named (and it is!), let’s rename it. Else we’re just shooting ourselves in the foot.
Image source: XKCD.