[Catalyst-dev] Fwd: MRO::Compat / Class::C3 / Catalyst / Moose

Ash Berlin ash_cpan at firemirror.com
Thu May 22 13:31:05 GMT 2008


On 22 May 2008, at 14:13, Guillermo Roditi wrote:

> This is a forward of the exchange I had with Brandon Black about this.
> I think that we need to ditch Class::C3 and break back compat. Here's
> a short rundown of why this has been such a nightmare:
>
> The only thing affected in the core is Catalyst::Component::COMPONENT
> COMPONENT attempts to call $self->next::method as follows:
>
> return $self->next::can ? $self->next::method($c, $arguments) :
> $self->new($c, $arguments);
>
> This is necessary to support a case in which
> @MyApp::SomeComponent::ISA = ('MyApp::BaseComponent',  
> 'Catalyst::Component');
>
> This is by no means a long shot though. I would be very very surprised
> if the change did not break some applications, however unless we want
> to go back to NEXT this change is required.
>
>
> ---------- Forwarded message ----------
> From: Brandon Black <blblack at gmail.com>
> Date: Wed, May 21, 2008 at 11:45 AM
> Subject: Re: MRO::Compat / Class::C3 / Catalyst / Moose
> To: Guillermo Roditi <groditi at gmail.com>
>
> [snip]
>
> But honestly, if Catalyst is really moving to Moose, it would be
> better to just go all Moose and ditch C3.  With Moose one shouldn't
> need C3 or next::method.  Don't ask me how you compatibly handle the
> transition for all the existing plugins and components that use NEXT
> and/or C3 though.  Seem like it's such a big change, if it were me I'd
> branch Catalyst, convert wholesale to Moose w/o C3 in the branch, and
> then announce a big version bump that makes all older Plugins /
> Components obsolete and give people lots of warning and announcements
> on the web, etc.  Then detect old components that haven't been
> upgraded to Moose versions and die at startup in the Moosey-Catalyst
> (should be easy, they won't have Moose metaclass info).
>
> In the pure Moose sense, most of the plugins would just be handled as
> roles rather than real classes with complex inheritance.
>
> -- Brandon

That gets my vote tbh. Bump the major version, break back compat and  
be done with it. Since after all most things will still work, won't  
they?

Ignoring the fact that all the plugins will need to re-released with a  
'use Moose' and some simple changes. Or some for of compat layer that  
tries its best to retro fit a simple Moosification onto a plugin. Is  
that even possible?

-ash
Starting arguments since 14:30pm.



More information about the Catalyst-dev mailing list