On Thu, Jul 3, 2008 at 8:24 AM, Simetrical Simetrical+wikilist@gmail.com wrote:
On Wed, Jul 2, 2008 at 10:16 AM, Gerard Meijssen gerard.meijssen@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