[Catalyst-commits] r8814 - /
trunk/examples/CatalystAdvent/root/2008/pen
zarquon at dev.catalyst.perl.org
zarquon at dev.catalyst.perl.org
Wed Dec 10 21:16:56 GMT 2008
Author: zarquon
Date: 2008-12-10 21:16:56 +0000 (Wed, 10 Dec 2008)
New Revision: 8814
Modified:
/
trunk/examples/CatalystAdvent/root/2008/pen/cat5.80.pod
Log:
r14537 at fenchurch: kd | 2008-12-10 21:58:32 +1100
light edits
Property changes on:
___________________________________________________________________
Name: svk:merge
- 1b129c88-ebf4-0310-add9-f09427935aba:/local/catalyst:4278
1c72fc7c-9ce4-42af-bf25-3bfe470ff1e8:/local/Catalyst:14502
3b9770f9-e80c-0410-a7de-cd203d167417:/local/catalyst:3514
dd8ad9ea-0304-0410-a433-df5f223e7bc0:/local/Catalyst:6909
+ 1b129c88-ebf4-0310-add9-f09427935aba:/local/catalyst:4278
1c72fc7c-9ce4-42af-bf25-3bfe470ff1e8:/local/Catalyst:14537
3b9770f9-e80c-0410-a7de-cd203d167417:/local/catalyst:3514
dd8ad9ea-0304-0410-a433-df5f223e7bc0:/local/Catalyst:6909
Modified: trunk/examples/CatalystAdvent/root/2008/pen/cat5.80.pod
===================================================================
--- trunk/examples/CatalystAdvent/root/2008/pen/cat5.80.pod 2008-12-10 17:29:25 UTC (rev 8813)
+++ trunk/examples/CatalystAdvent/root/2008/pen/cat5.80.pod 2008-12-10 21:16:56 UTC (rev 8814)
@@ -1,175 +1,231 @@
=head1 Day 9. Catalyst 5.80
-Today's entry is about the upcoming Catalyst 5.80 release, also unofficially
-known as C<Catamoose>.
+Today's entry is about the upoming Catalyst 5.80 release, also
+unofficially known as C<Catamoose>.
-The main aim of the 5.80 release is the porting of the Catalyst core from
-using L<Class::Accessor::Fast> and L<NEXT> to using L<Moose> and L<Class::C3>,
-in a backwards-compatible way.
+The main aim of the 5.80 release is the porting of the Catalyst core
+from using L<Class::Accessor::Fast> and L<NEXT> to using L<Moose> and
+L<Class::C3>, in a backwards-compatible way.
-In this article I hope to explain some of the reasons why this change is being
-made, to show how simple it is to convert code to run 'I<natively>' in 5.80. (i.e.
-without any of the backwards compatibility being needed, and taking advantage of
-the more modern paradigms offered by the port); to show what the change will
-enable the framework to do in future; to give you some insight into the project
-progress so far and remaining milestones, and to explain what you can do to
-help us achieve 100% backwards compatibility for your applications.
+In this article I hope to explain some of the reasons why this change
+is being made, show how simple it is to convert code to run
+'I<natively>' in 5.80. (i.e. without any of the backwards
+compatibility being needed, and taking advantage of the more modern
+paradigms offered by the port); what the change will enable the
+framework to do in future, give you some insight into the project
+progress so far and remaining milestones, and explain what you can do
+to help us achieve 100% backwards compatibility for your applications.
=head1 Motivation
-L<NEXT> is awfully slow and hacky, and L<Class::Accessor::Fast> is good at what it
-does, but it doesn't do very much.
+L<NEXT> is awfully slow and hacky, and L<Class::Accessor::Fast> is
+good at what it does, but it doesn't do very much.
-L<Class::C3::XS> is fast for Perl 5.8, and the C3 MRO (Method Resolution Order algorithm) is included natively in Perl 5.10.
-Moose, despite having a reputation for being slow, generates accessors which are
-slightly faster than those made by L<Class::Accessor::Fast>, and also gives you
-B<a lot> of useful functionality for extending classes in a flexible way, helps you
-to refactor, and makes code neater and more re-useable.
+L<Class::C3::XS> is fast for perl 5.8, and c3 MRO is included natively
+in perl 5.10. Moose, despite having a reputation for being slow,
+generates accessors which are slightly faster than those made by
+L<Class::Accessor::Fast>, and also gives you B<a lot> of useful
+functionality for extending classes in a flexible way, helps you to
+refactor, and makes code neater and more re-useable.
-Therefore porting Catalyst to use these newer technologies seemed like a logical step
-towards making the framework more flexible, giving it better internal architecture,
-making it easier to extend for users, and also making it easier to componentise - as some of the more
-bleeding-edge Catalyst based projects currently have to work in some inelegant ways
-to do what they want. The challenge to the project was maintaining backwards
-compatibility, so that existing plugin components, and people's existing applications,
-continue to function with the new architecture.
+Therefore porting Catalyst to use these newer technologies seemed like
+a logical step towards making the framework more flexible, better
+architected internally, easier to extend for users, and also easier to
+componentise - as some of the more bleeding-edge Catalyst based
+projects currently have to work in some inelegant ways to do what they
+want. The challenge to the project was maintaining backwards
+compatibility, so that existing plugin components, and people's
+existing applications, continue to function with the new architecture.
-Once this release is stable, there are many ideas for further projects in the
-next development version, all of which will become much easier than they've previously been.
-Some example projects which have been talked about by various people are:
+Once this release is stable, there are many ideas for further projects
+in the next development version, all of which have become much easier
+than they've previously been. Some example projects which have been
+talked about by various people are:
=over
-=item Refactoring the dispatcher (so that pluggable/custom dispatchers can be supported).
+=item *
-=item Splitting the application and request context (allowing configuration and templates
-to be white-labeled, so you can run many differently configured sites on the same codebase).
+Refactoring the dispatcher (so that pluggable/custom dispatchers can
+be supported).
-=item Allowing a full declarative/DSL syntax for application code, rather than relying on
-'just good enough' hacks such as Perl's attributes.
+=item *
+Splitting the application and request context (allowing configuration
+and templates to be white-labeled, so you can run many differently
+configured sites on the same codebase).
+
+=item *
+
+Allowing a full declerative/DSL syntax for application code, rather
+than relying on 'just good enough' hacks such as perl's attributes.
+
=back
-The port itself, whilst just a step along the road, opens up many possibilities:
+The port itself, whilst just a step along the road, opens up many
+possibilities:
=over
-=item Debug mode could contain an application browser which let you drill down into the
-objects in your application and the values of their attributes.
+=item *
-=item Automatic profiling
+Debug mode could contain an application browser which let you drill
+down into the objects in your application and the values of their
+attributes.
-=item Component introspection for code generation in devel.
+=item *
+Automatic profiling
+
+=item *
+
+Component introspection for code generation in devel.
+
FIXME
=back
-And these are just ideas off the top of my head. I'm sure that the ever-inventive
-Catalyst community will produce FIXME.
+And these are just ideas off the top of my head. I'm sure that the
+ever-inventive Catalyst community will produce FIXME.
=head3 What has been the project timeline?
=over
-=item 10/3 mst branched and initial work started.
+=item *
-=item 14/3 groditi & kenobi start making major changes
+10/3 mst branched and initial work started.
-=item 23/6 The port has made slow progress, but is coming along nicely.
-There is a lot of screaming about how the class data / config system works.
-quote from the revision log: C<config wins, groditi loses. FUCK YOU FOR SUPPORTING THAT STUPID BEHAVIOR>
-
-=item 28/7 I started playing and adding tests for bugs I find and fixes in
-L<MooseX::Emulate::Class::Accessor::Fast>.
-
-=item 1/9 Latest 5.70 trunk is merged to the moose branch by mst
+=item *
-=item 4/9 rafl decides the test suite is too slow with the Moose startup cost,
-makes a branch.
+14/3 groditi & konobi start making major changes
-=item 9/9 The entire Moose branch is merged to 5.80 trunk.
+=item *
-=item 9/9 rafl's L<Test::Aggregate> branch is merged to trunk.
+23/6 The port has made slow progress, but is coming along nicely.
+There is a lot of screaming about how the class data / config system
+works. quote from the revision log: C<config wins, groditi
+loses. FUCK YOU FOR SUPPORTING THAT STUPID BEHAVIOR>
-=item A month goes by, almost nothing happens :(
+=item *
-=item 16/10 rafl starts making test fixes and small cleanups.
+28/7 I started playing and adding tests for bugs I find and fixes in
+L<MooseX::Emulate::Class::Accessor::Fast>. =item 1/9 Latest 5.70
+trunk is merged to the moose branch by mst
-=item 22/11 I start smoke tests against all the current plugins, and working out
-backwards-compatibility issues.
+=item *
-=item 1/12 rafl completes L<Class::C3::Adopt::NEXT>
+4/9 rafl decides the test suite is too slow with the Moose startup
+cost, makes a branch.
-=item 5/23 5.8000_04 developer release, with
+=item *
+9/9 The entire moose branch is merged to 5.80 trunk.
+
+=item *
+
+9/9 rafl's L<Test::Aggregate> branch is merged to trunk.
+
+=item *
+
+A month goes by, almost nothing happens :(
+
+=item *
+
+16/10 rafl starts making test fixes and small cleanups.
+
+=item *
+
+22/11 I start smoke tests against all the current plugins, and working
+out backwards-compatibility issues.
+
+=item *
+
+1/12 rafl completes L<Class::C3::Adopt::NEXT>
+
+=item *
+
+5/23 5.8000_04 developer release, with STUFF TO ADD
+
=back
-At this point, most applications work with 5.80, but there is still a list of
-known issues to solve, and some corner-case bugs which cause a number of plugins tests to fail.
+At this point, most applications work with 5.80, but there is still a
+list of known issues to solve, and some corner-case bugs which cause a
+number of plugins tests to fail.
Once these issues are solved, the remaining activities are:
=over
-=item Look at the performance vs. 5.70 and optimise where necessary to bring
+=item *
+
+Look at the performance vs 5.70 and optimise where necessary to bring
it back to previous levels.
-=item Aggressively smoke test all known Catalyst components and applications
-on CPAN and in Subversion repositories, going over the results compared to against 5.70
-to catch remaining backwards-compatibility issues.
+=item *
+Aggressively smoke test all known Catalyst components and applications
+on CPAN and in subversion repositories, going over the results
+compared to against 5.70 to catch remaining backwards compatibility
+issues.
+
=back
-We hope to have 5.80 released as early as possible in the new year, but at the same time,
-we're not planning to rush, and there is still plenty of things which need fixing, and
-we need to be confident that we've done everything we can to test and ensure backwards
+We hope to have 5.80 released as early as possible in the new year,
+but at the same time, we're not planning to rush, and there are still
+plenty of things which need fixing, and we need to be confident that
+we've done everything we can to test and ensure backwards
compatibility.
=head2 Why has it taken so long?
-Changing two of the core technologies of a complex framework such as Catalyst,
-whilst maintaining backwards compatibility, is no mean feat.
+Changing two of the core technologies of a complex framework such as
+Catalyst, whilst maintaining backwards compatibility is no mean feat.
-At least two CPAN distributions (L<MooseX::Emulate::Class::Accessor::Fast> and
-L<Class::C3::Adopt::NEXT>) have been produced due to this project (with all the
-tests, documentation and bugfixes that entails).
+At least two CPAN distributions
+(L<MooseX::Emulate::Class::Accessor::Fast> and
+L<Class::C3::Adopt::NEXT>) have been produced due to this project
+(with all the tests, documentation and bugfixes that entails).
-Also, none of the Catalyst developers are paid for the work that they do, so
-it gets done at whatever pace people have time - 5.70 is still stable and good
-enough for most people's needs.
+Also, none of the Catalyst developers are paid for the work that they
+do, so it gets done at whatever pace people have time - 5.70 is still
+stable and good enough for most people's needs.
=head2 Is there anything that I could do to help?
-Sure there is! If you have a Catalyst application (even if you think it is trivial),
-please download and test out the latest development release, or the latest code from Subversion.
+Sure there is! If you have a Catalyst application (even if you think
+it is trivial), please download test out the latest developlent
+release, or the latest code from Subversion.
-The team would B<very much> like to hear about any issues which you may find, and reporting
-bugs (even if we already found the bug ourselves) will give us greater confidence that 5.80
-works for B<everyone's> Catalyst applications - not just those maintained by people involved
-in the project.
+The team would B<very much> like to hear about any issues which you
+may find, and reporting bugs (even if we already found the bug
+ourselves) will give us greater confidence that 5.80 works for
+B<everyone's> Catalyst applications - not just those maintained by
+people involved in the project.
-If you're suddenly even more enthusiastic than just helping to test your applications and
-components, then feel free to drop into #catalyst-dev on irc and we'll be more than happy
-to suggest additional ways you can help.
+If you're suddenly even more enthusiastic than just helping to test
+your applications and components, then feel free to drop into
+#catalyst-dev on irc and we'll be more than happy to suggest
+additional ways you can help.
=head2 Porting to 5.80
-I<Wait a second - I thought you said that 5.80 would be backwards compatible?>
+I<Wait a second - I thought you said that 5.80 would be backwards
+compatible?>
-I<Yes> - 5.80 B<is> backwards compatible, so everything should keep working, but
-there are a number of things you can do to make your components and applications
-take advantage of Catalyst 5.80.
+I<Yes> - 5.80 B<is> backwards compatible, so everything should keep
+working, but there are a number of things you can do to make your
+components and applications take advantage of Catalyst 5.80.
=head2 NEXT
-Use of C<NEXT> is now deprecated. Switching to C<Class::C3> will stop L<Class::C3::Adopt::NEXT>
-from moaning at you, and is pretty trivial.
+Use of C<NEXT> is now deprecated. Switching to C<Class::C3> will stop
+L<Class::C3::Adopt::NEXT> from moaning at you, and is pretty trivial.
=head3 Using Moose directly in components
-Where before, you used plain old Perl and L<Class::Accessor::Fast>, you can now switch to
-L<Moose>.
+Where before, you used plain old perl and L<Class::Accessor::Fast>,
+you can now switch to L<Moose>.
=head2 A simple example
@@ -241,7 +297,7 @@
=head1 ACKNOWLEDGEMENTS
-Thanks to all the contributors to the 5.80 port for making it happen,
+Thanks to all the contributors to the 5.80 port for making it happen,
and the #moose guys for Moose itself.
=head1 AUTHOR
More information about the Catalyst-commits
mailing list