Apple launched their new iBooks Author and iBooks 2 apps today. After I watched the keynote video, I downloaded everything, and some sample books, to try out and see what they came up with. The new book format is pretty nice and has some interesting features, but honestly, it's nothing that a decent web developer couldn't do with HTML5. That's the point of course - that you don't *need* web developers to create great looking interactive books, and that's great.
But then I read about Apple's onerous restrictions to their iBooks Author app (you can only use it to create books for iBooks), and like everyone else in the world (except Apple execs it seems), I was completely disgusted. All the talk about opening up tools for educators, etc., only to turn around and mandate a lock-in for publishers who use their tools? Soooo cynical. No wonder they only had 8 demo books to show.
Well, you can. Sorta. Well, not really. The problem is that it's too obvious of a solution, so *everyone* has a version of this sort of thing...
Microsoft has had their 'compiled HTML' .chm files for about a decade now, and their newer .mshc (Microsoft Help Container) format is now simply a zip of XHTML files. Then there are the various 'widget' formats for both desktop and mobile (promoted by the W3C) which are all zipped web files. The ePub guys, Amazon and Apple have their slightly different versions of the idea. Mozilla Labs has their Apps initiative, and Google's Chrome Apps have their version (again, just zipped web files). There's probably dozens more just slightly incompatible file formats I'm missing.
I can sort of understand why this happened. First, you need to have some sort of standard manifest file to hold the meta-data about the app (it's name, thumbnail, version, etc.), then you need some added APIs for access to device features that don't usually show up in a browser (files, wireless, sensors, etc.), and you need some sort of security sandbox, and then a permissions list - which leads back to the manifest, which may need to include some sort of hash now to prevent tampering. Gah!
So much for 'just zip the damn web files dammit' way of thinking.
So again, it's being done a million different ways, it just needs organization and cooperation. And not in the 'here's 20 different levels of specs' sort of organization, but a 'here's the simplest thing that could possibly work' sort of organization so that it's implemented before another decade rolls around.
Maybe the HTML5 group could add something simple to the spec? At the bottom? In small type? That'd be a great start I think...
Update: Amusingly, it looks like I basically reiterated what Tobie Langel said a month ago about App Manifests - only his post has more specifics and couple more examples. :-)