
How to design a good API and why it matters, Joshua Bloch [pdf] - 11ren
http://lcsd05.cs.tamu.edu/slides//keynote.pdf
======
11ren
I think the design issues for APIs, DSLs and languages are very similar.

For adoption, the learning curve is very important, and the beginning of this
curve is sensible defaults (like Python and Rails), so you can make the common
tasks happen fast, while having the power to also do the complex low-level
fine-tuning that is less common (and not the first thing you do). There's a
learning curve (per user), but also a building curve (per project).

However, _common_ is an attribute of usage, and not intrinsic to the API. You
need a lot of users before you know what is common. And, over time, as the
world changes, the common tasks change (eg. there are many different internet
protocols, but http turned out to be most common).

------
11ren
BTW: just noticed HN automatically adds a [scribd] link for a pdf. Convenience
and cross-promotion in one. :-) ( _edit_ added pdf warning)

