On 9/30/2010 10:03 PM, Neil Kandalgaonkar wrote:
Here's how they do it: Google guarantees that
certain Javascript
functions or DOM objects are reliably available for use and
modification, and others are not. So they use minification for
efficiency while explicitly preventing some things from being altered
(that's a feature of Google's Closure Compiler).
This is a story as old as computing; to enable a community, create a
rich platform with a stable public API.
As a gadget developer, I would love that. However, that seems to be, in
part, the opposite of what's happening. We're taking a public API that's
been used for years (wikibits.js) and deprecating the whole thing, with
no documentation (that I can find in a couple minutes of searching) for
the replacements.
When the new skin/editor was rolled out, there was basically no
documentation for anything and there still isn't very much. When I
rewrote the reftoolbar gadget[1] to support the new toolbar, in advance
of the rollout, I had to do it by reading the Wikieditor code and
testing on a personal sandbox wiki running trunk, which changed often
and was frequently broken. Now I'm probably going to have to do that
again to make sure it won't break with ResourceLoader. That's not a very
good development process.
Merely leaving the pages open to any modification is
actually worse for
gadget writers, since anything could change.
Anyway, I think that's somewhat in the flavor of what the Resource
Loader people are trying to achieve here. Efficiency *and* community.
Minification *and* openness. Gadget-writers are a big part of their
targeted use cases. Otherwise, they would have just used something off
the shelf. There are a lot of good JS libraries out there, but none that
quite fit the needs of our community.
That's all great, but if you're going to go that route, you have to make
damn sure you get everything right, else we're going to end up with a
bunch of frustrated gadget developers and a ton of angry users with
broken gadgets.
[1]
http://en.wikipedia.org/wiki/Wikipedia:RefToolbar_2.0
--
Alex (wikipedia:en:User:Mr.Z-man)