I almost responded to echo James, but figured the key point he made
would stand on its own. EZ’s sort-of-agreement with him (while
wrenching the conversation back to design patterns makes me think
that James’s point deserves to be emphasized more explicitly.
Documentation is always a good thing.
Absolutely. Documentation isn’t just a /good/ thing, it’s an /essential/
thing if someone less-skilled than the creator is going to try to use
the product. Where would Rails be without the Agile book?
I would argue that the real obstacle to convergence on a few optimal
RBAC implementations isn’t agreement on a design pattern, as good an
idea as that may be. Instead, the lack of convergence is because /users/
(I mean user-developers, not end-users), and especially newbies (the
people most likely to need a plug-in authorization system), find all the
available options equally impenetrable, so they scatter among them. The
best available authorization-system options make at least some attempt
at a tutorial, but none is particularly impressive; most just settle for
a couple of code-snippets and assume you know enough about Rails to
figure it out. Nobody has yet bothered to document any one of them to a
level that would allow a newbie to pick it up, plug it in, fire it up,
and make it work.
The thing is, even a small difference in initial documentation quality
can provoke substantial convergence in an audience of learners. And
once users start converging, whatever system has the small initial
advantage will get more attention and gain still further advantage. The
race is going to go to the first developer who figures out how to
attract the users – and the best way to do that is by improving your
Personally, I bet that Chad F.'s Rails Recipe (from the new beta
book) becomes the de facto RBAC standard within months after its
print-publication. It’s not that his is necessarily better than anyone
else’s; it’s that there’s nothing like solid, step-by-step tutorial
documentation to attract the attention of someone who’s already
overloaded by learning a new framework and (probably) a new language.
And if everyone’s using Chad’s, who cares how good the others are?
In sum: Convergence is primarily a market phenomenon, not a design or
technology phenomenon (anyone still got a Betamax?). As programmers
offering design services in a marketplace, we forget that at our peril.