|Perl: the Markov chain saw|
Part of the reason Module::Build must happen is MakeMaker is so difficult to work on or add features to. Something most folks don't appreciate because, well, "it works for me". If you're working on a sane Unix using GNU make and installing one of the 80-90% of uncomplicated modules on CPAN that's fine. If you're not on a sane Unix or on Windows or VMS or one of the 40-something other operating systems Perl works on and using one of the 8 or 10 different flavors of make and who knows how many shells which MakeMaker has to support things get a bit more complicated.
And these are not esoteric, little used modules. Mail::SpamAssassin. Tk. wxPerl. And these are not esoteric, little used operating systems. OS X. FreeBSD. Solaris. Windows 2K.
MakeMaker, Module::Build, Test::More, Test::Builder, File::Spec and Cwd are maintained primarily by two guys: Ken Williams and myself. If we slip up CPAN doesn't work. We don't get paid for this. Its not whizz-bang, resume-enhancing material. Nobody thinks about these unglorious modules until they don't work. It sucks down a lot of our time because WE CANNOT MAKE A MISTAKE.
You might be able to get away with 80% solutions for your software, solutions which work in MOST situations, and be pretty happy with it. MakeMaker and Module::Build must strive for a 100% solution. They MUST work everywhere Perl works and with every existing module on CPAN. People don't see this so they don't appreciate it, but you can't skimp on the underlying foundation of CPAN. Wouldn't it suck if suddenly YOUR pet operating system was unable to install modules? To put it another way: Windows users moan when CPAN modules only work on Unix. Unix and Mac users moan when companies provide software only for Windows. Its like that.
This is why I get so pissed off and scream and curse at people who complain about Module::Build and then do nothing to help. This is why I hate when folks say "I don't understand what's wrong with PREFIX, it works for me!" This is why I roll my eyes when someone puts forth Yet Another "Simple" Fix for a Really Complicated MakeMaker Problem. Maintaining MakeMaker is really hard. Writing a build system is REALLY HARD and it sucks down a lot of time. If you only use one or two operting systems you cannot appreciate this. If you're not on the MakeMaker or Module::Build mailing lists and see how things are actually done you cannot appreciate this.
I'm just going to throw out a little data point on how much of a royal pain in the ass it is to get anything done in MakeMaker. This Subverion command will show you the diff between MakeMaker 6.25 and 6.26.
Its nearly 200k. 7000 lines. Took three months and 12 alpha releases to get it right (and its still not right). Total number of non-trivial features added? 2. All the rest is bug fixes and code cleanup and repairing the repercussions of that... and then fixing the new bugs those fixes introduced... and so on.
I am now leaving this thread before I get utterly disgusted and give up maintaining MakeMaker.
In reply to Last words for me.