[Foundation-l] [Wikitech-l] Implementing the Babel extension

John Vandenberg jayvdb at gmail.com
Thu Jul 3 02:33:22 UTC 2008


On Thu, Jul 3, 2008 at 8:24 AM, Simetrical
<Simetrical+wikilist at gmail.com> wrote:
> On Wed, Jul 2, 2008 at 10:16 AM, Gerard Meijssen
> <gerard.meijssen at gmail.com> wrote:
>> That is not here and now.  At this moment we are considering the
>> implementation of the Babel extension, we are not considering something we
>> did not do.
>
> An essential part of evaluating any proposal is evaluating whether the
> basic idea of the proposal is flawed in some important way.  If flawed
> solutions are adopted just because people have already put the work
> into them, more and more work will be put into them over time,
> papering over their flaws without really addressing them.  Similar
> specific solutions will be adopted for similar problems, requiring yet
> more work.  The end result will require more work and be less useful
> than if the original work had been scrapped for its flaws to begin
> with.
>
> For an example, consider user rights changes.  When developers stopped
> changing ranks and that privilege was divested onto stewards and
> bureaucrats, stewards got Special:UserRights and bureaucrats got
> Special:MakeSysop.  MakeSysop was a narrow and inflexible solution: it
> was an entire extension, an entire different interface and code base,
> to do a subset of what UserRights could do.  When the desire for more
> flexibility arose, like the ability to assign bot rights,
> Special:MakeBot was written.  Every time more flexibility was
> required, it couldn't be provided; it simply couldn't be added without
> writing and reviewing a whole new extension.  Proposals for rollback
> groups and all sorts of other things simply died because there was no
> way to implement them.
>
> Only years later did some developers (in fact, me, and Werdna) decide
> a more flexible system would be useful.  This obsoleted all the work
> that had gone into MakeSysop, MakeBot, GiveRollback, and so on, and
> probably took less work than went into them to begin with.  It opened
> up many new options and was overall a greatly superior solution.  If
> people had said, from the beginning, "Wait, why are we writing an
> extension that only gives sysop/bureaucrat when we could put in the
> extra effort to make it properly flexible?", many developer-hours
> would have been saved, and communities would have gotten the ability
> to configure their rights much more flexibly years earlier than they
> did.

You are stating that the wasted hours put into MakeSysop, MakeBot,
GiveRollback etc. could have been better spent building UserRights,
but that is not how open source works.  It is rare for the right
solution to be the first incarnation.  Each of those extensions was
simple and met the need at the time.  The need to build the right
solution only came apparent because those extensions provided a good
working model for determining which additional level of indirection
was necessary when building the UserRights extension.  The right
solution only came years afterward, and if the wrong solution had not
existed in the interim, who knows, wiki's might never had taken off.

http://c2.com/cgi/wiki?TheBestIsTheEnemyOfTheGood

--
John



More information about the foundation-l mailing list