Now posted: http://blogs.perl.org/users/aristotle/2013/06/toolchain-decade.html
IRC conversation about the original draft:
[03:22:37] <aristotle> I just wrote https://gist.github.com/ap/5695633 and I’d be grateful for any corrections and critique before I post it
[03:22:39] <+dipsy> [ gist:5695633 ]
[03:23:20] <aristotle> (a brief summary of the last decade in CPAN installers and authoring tools)
[03:28:09] <aristotle> in particular I don’t want to post nonsense if my outside-looking-in perspective on M::B’s architecture is grossly wrong
[04:45:06] <jberger> aristotle, seems about right
[04:45:51] <jberger> I can say, I have used the extensibility to build Alien::Base but its certainly the exception rather than the rule in the M::B world
[04:46:51] <jberger> you might give a tip of the hat to M::B::Pluggable which gives build hooks rather than M::B's subclassing, and is a little more useful for common tasks as a result
[04:48:45] <aristotle> I added the “composably” after some thought. it’s certainly not terribly difficult to extend per se – though the awkward separation of responsibilities among methods makes it difficult to avoid copypasting when you override functionality
[04:49:14] <aristotle> but if you then try to put different extensions together… hoo boy
[04:49:30] <aristotle> ah, point
[04:49:53] <jberger> yeah, it had great promise
[04:50:03] <jberger> my biggest problem is the "meta-object"
[04:50:43] <jberger> I think if M::B had been designed in a meta-object world (Moose or to some extent even just Moo+Roles) it might have been easier to work with
[04:51:09] <jberger> actually, one more thing
[04:51:43] <jberger> you say "The failure of M::B in my eyes is that it remained beholden to this model of a script that generates another script that contains all the functionality needed"
[04:51:45] <jberger> ....
[04:52:11] <jberger> you were aiming at author vs end-user with that statement, but it has another point
[04:52:31] <jberger> the configure make make install mindset is also limiting
[04:52:40] <aristotle> yes, I mentioned that
[04:52:54] <jberger> oh, maybe I read it differently
[04:52:57] * jberger reads again
[04:53:08] <aristotle> well maybe it isn’t clear enough
[04:53:09] <jberger> oh yeah
[04:53:12] <jberger> you said it
[04:53:20] <aristotle> that other point came to me while I was writing it
[04:53:42] <jberger> both are problems, author/end-user and intermediate serialization
[04:54:15] <@miyagawa> i believe removing Module::Build from core has nothing to do with whether M::B has a great design or not
[04:54:21] <aristotle> re meta-object world, maybe, but I think the twin architectural pillars of script-generated-from-script and authoring+installer-in-one would still be unnecessarily contorting the architecture for no useful reason
[04:54:34] <jberger> I have been tinkering with a Rolified M::B, with some kind of hook system, but because of intermediate serialization you cannot connect a subref to an event
[04:54:53] <aristotle> miyagawa: no it doesn’t. yes it does :)
[04:55:15] <@miyagawa> i posted my thought on Toolchain-Gang's github issue
[04:55:15] <jberger> miyagawa, agreed, but has given us a time to reflect
[04:55:24] <jberger> I still will use M::B
[04:55:34] <jberger> but I'm fine removing it from core
[04:56:27] <aristotle> the design is not the reason it is getting removed from the core, but it is the reason it failed to displace EUMM, and that is the reason it never became necessary for building core, which is the reason it is being removed from core
[04:56:42] <@miyagawa> i don't believe it failed to displace EUMM either
[04:57:16] <@miyagawa> it succeeded to establish META + configure_requires, perl Build.PL; perl ./Build; perl ./Build test; perl ./Build install
[04:57:26] <@miyagawa> i use Module::Build(::Tiny) in many of my recent projects
[04:57:41] <aristotle> someone compiled statistics that many more dists use EUMM than MB… something between 2 and 3 times as many I think
[04:57:55] <@miyagawa> for sure
[04:58:12] <@miyagawa> Perl doesn't need one build system, and that's great.
[04:58:20] <aristotle> oh sure, it paved the way for where we are now. but it never actually beat EUMM
[04:58:31] <@miyagawa> it's a language that doesn't have an accessor generator
[05:01:46] <aristotle> thing is that none of META, configure_requires and the Build.PL protocol are predicated on the design choices of M::B. a better design for it wouldn’t have deprived us of these
[05:05:12] <aristotle> hm
[05:05:34] <jberger> but without a challenger, perhaps no one would have created these things
[05:07:55] <aristotle> no definitely no one would have. I’m not disparaging M::B-the-effort, it was hugely important… even if M::B-the-product is ultimately failure as far as killing off EUMM
[05:09:44] <aristotle> miyagawa: I don’t think we need to have any one single installer… just that it would be nice if EUMM could have been retired, and a sane alternative or 17 taken its place
[05:10:31] <@miyagawa> aristotle: have you read http://www.dagolden.com/index.php/2140/paying-respect-to-modulebuild/ ?
[05:10:35] <+dipsy> [ Paying respect to Module::Build | David Golden ]
[05:10:41] <aristotle> yes I have
[05:10:44] <@miyagawa> ok
[05:11:12] <@miyagawa> i agree that i wish M::B would have taken over MakeMaker and there's no need to rely on make
[05:11:37] <aristotle> yeah
[05:11:59] <@miyagawa> the current M::B prolly won't be the thing, but thanks to M::B, META configure_requires and all that, we've got a ground to start .
[05:12:31] <aristotle> yes
[05:13:01] <aristotle> that’s where I was trying to get
[05:13:34] * xdg was pinged. is there a tl;dr for scrollback?
[05:14:16] <aristotle> hi xdg. I asked for comments on an article draft. would be nice if you could chime in :)
[05:14:46] <@xdg> hi aristotle. link?
[05:14:54] <@xdg> Is it going to piss me off? :-)
[05:15:08] <aristotle> (thanks for the discussion so far miyagawa and jberger btw, it’s been very useful already. clearly the article needs some rewriting to clarify)
[05:15:55] <aristotle> xdg: I hope not :) https://gist.github.com/ap/5695633 – also any comments on the discussion in the scrollback gladly welcome, if you care to read
[05:15:57] <+dipsy> [ gist:5695633 ]
[05:16:21] <@xdg> I'm about to crashf or the night. when do you need comments back
[05:16:24] <@xdg> ?
[05:17:36] <aristotle> it’s not urgent, though I want to post before the topic, err, “stops trending”
[05:18:42] <aristotle> primarly I want to be sure I’m not posting nonsense WRT M::B’s design
[05:19:45] <@xdg> aristotle, OK. I'll try to find tuits tomorrow.
[05:56:02] <jberger> aristotle, glad to help, as I've commented elsewhere, I wish M::B had won too, but I think we are getting there slowly
[05:56:20] <jberger> I hope this discussion and others like it help to get us even closer
[05:56:50] * jberger thinks about how he would implement a non-serializing build tool
If we can get all of core building without EUMM, I will stand behind removing it from core. Whether or not I have just used a phrase equivalent to "when pigs fly," I leave for better prognositcators than me to answer.