- From: Robin Berjon <robin@w3.org>
- Date: Mon, 11 Feb 2013 12:34:04 +0100
- To: Marcos Caceres <w3c@marcosc.com>
- CC: "www-tag@w3.org" <www-tag@w3.org>
On 07/02/2013 15:47 , Marcos Caceres wrote: > Ever since IndexedDB was released in browsers, there has been a lot > of criticism about the API from the developer community: mainly > people saying "it sucks", but not clearly articulating *why* it > sucks. For example: I think that there are several things that are problematic here, and it might be worth teasing them apart to address them specifically. First, a lot of us are (I think increasingly) operating under the more or less tacit assumption that when we try to produce high-level APIs, they tend to suck for various reasons, and therefore that we should produce lower-level primitives atop which people can build nicer things (which we might then standardise in subsequent iterations). IndexedDB certainly was created with that in mind, and we're seeing the exact same sort of feedback in WebCrypto which has chosen the same approach. That doesn't lead to the conclusion that it's the wrong approach though. For instance, AppCache went the other way — producing a high-level interface to a complex space — and the result is appalling to use. It's the first piece of tech I've known to ever be called a "douchebag". I do therefore believe that the low-level-first approach does retain its value. But clearly people aren't happy so some aspects ought to change. In the feedback that we're getting, we should separate genuine design problems from people being disappointed that they're given a low-level API when they just want something simple that gets the job done. For the latter bit, I reckon it would be a good practice for groups working on low-level APIs to more or less systematically produce a library that operates at a higher level. This would not only help developers in that they could pick that up instead of the lower-level stuff, but more importantly (at least in terms of goals) it would serve to validate that the lower-level design is indeed appropriate for librarification. To take an example, while we were tossing ideas around for a lower-level approach to the AppCache problem, one important consideration was that the current solution could be implemented (more or less) in terms of the new: https://gist.github.com/darobin/4739167. For the bad design bit, well, we've been missing a manual on how to write good APIs for a long time. There's content that we can steal for that. Part of it needs to be about writing actually good APIs, and for that we can turn to Rodney's article for a starting point: http://coding.smashingmagazine.com/2012/10/09/designing-javascript-apis-usability/ Part of it also needs to be about how to apply WebIDL correctly, which is something that editors regularly get wrong (leading to weird problems down the line). A while back Jungkee and I had started writing things down in this area. It's nowhere near complete and it needs some serious work, but it can be grabbed and used by whoever would like to work on this: http://darobin.github.com/api-design-cookbook/ It probably wouldn't hurt if we had a group that was tasked specifically with reviewing APIs. How to build that without it being bureaucratic, useless, excessively political, and how to find people with the bandwidth to make it work is a difficult question though. Which doesn't mean that we shouldn't try — it simply means that we shouldn't jump into it with unreasonably promises. We're also missing a few basic blocks like futures (or whatever else people prefer) that could bring some consistency to the platform. These tend never to get worked on because people just want to produce the actual API, and no one gets to work on the "niceties". That's something we need to address as well. -- Robin Berjon - http://berjon.com/ - @robinberjon
Received on Monday, 11 February 2013 11:34:18 UTC