[Catalyst-commits] r8887 -
trunk/examples/CatalystAdvent/root/2008/pen
t0m at dev.catalyst.perl.org
t0m at dev.catalyst.perl.org
Tue Dec 16 01:01:54 GMT 2008
Author: t0m
Date: 2008-12-16 01:01:52 +0000 (Tue, 16 Dec 2008)
New Revision: 8887
Modified:
trunk/examples/CatalystAdvent/root/2008/pen/cat5.80.pod
Log:
Edits
Modified: trunk/examples/CatalystAdvent/root/2008/pen/cat5.80.pod
===================================================================
--- trunk/examples/CatalystAdvent/root/2008/pen/cat5.80.pod 2008-12-15 20:44:03 UTC (rev 8886)
+++ trunk/examples/CatalystAdvent/root/2008/pen/cat5.80.pod 2008-12-16 01:01:52 UTC (rev 8887)
@@ -1,6 +1,6 @@
-=head1 Day X. Catalyst 5.80
+=head1 Day 16. Catalyst 5.80
-Today's entry is about the upoming Catalyst 5.80 release, also
+Today's entry is about the upcoming 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
@@ -52,14 +52,20 @@
=item *
Splitting the application and request context (allowing configuration
-and templates to be white-labeled, so you can run many differently
+and templates to be white-labelled, so you can run many differently
configured sites on the same codebase).
=item *
-Allowing a full declerative/DSL syntax for application code, rather
+Allowing a full declarative/DSL syntax for application code, rather
than relying on 'just good enough' hacks such as perl's attributes.
+=item *
+
+Refactoring the application setup to be more generic and use an
+inversion of control system such as L<Bread::Board> to make the C
+atalyst wiring more flexible to whatever application you're building.
+
=back
The port itself, whilst just a step along the road, opens up many
@@ -75,16 +81,17 @@
=item *
-Component introspection for code generation in devel.
+Moose provides a lot of powerful introspection features - it would be
+possible to use those to enhance the scaffolding generator in
+L<Catalyst::Devel> to be more intelligent.
-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 a couple of ideas off the top of my head. I'm sure
+that the ever-inventive Catalyst community will produce ideas that
+nobody has thought of yet.
-=head3 What has been the project timeline?
+=head3 What has been the project time line?
=over
@@ -144,13 +151,22 @@
=item *
-5/23 5.8000_04 developer release, with STUFF TO ADD FIXME
+5/12 5.8000_04 developer release, at which point, most people's
+applications work out of the box.
+=item *
+
+16/12 19 fixes since the last developer release (more than 1 a day!).
+Next developer release due once a bug causing the
+L<Catalyst::Plugin::Authentication> backwards compatibility code to fail,
+an issue in L<MooseX::Emulate::Class::Accessor::Fast> is fixed, and
+the POD for L<Class::C3::Adopt::NEXT> has been updated.
+
=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.
+number of plugins to fail their tests.
Once these issues are solved, the remaining activities are:
@@ -193,7 +209,7 @@
=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 developlent
+it is trivial), please download and test out the latest development
release, or the latest code from Subversion.
The team would B<very much> like to hear about any issues which you
@@ -214,28 +230,44 @@
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.
+components and applications up to date with the current best-practises
+for Catalyst application development, and forward-compatible with
+future Catalyst releases.
+Note that B<all> of the techniques shown here can B<already>
+be used in B<current> Catalyst components and applications. See,
+for example, L<Catalyst::Component::InstancePerContext>, which is
+based on Moose.
+
=head3 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.
-There are documentation and examples of switching to C<Class::C3> in
-the C<Class::C3::Adopt::NEXT> distribution.. FIXME
+An example of a class which has been switched (with the old code
+commented out) is shown below:
+ package MyApp::Plugin::FooBar;
+ #use NEXT;
+ use MRO::Compat;
+
+ sub a_method {
+ my ($self, @args) = @_;
+ # Do some stuff, probably changing @args
+
+ # Re-dispatch method
+ #$self->NEXT::method();
+ $self->next::method(@args);
+ }
+
+There is more documentation and examples of switching to C<Class::C3> in
+the C<Class::C3::Adopt::NEXT> distribution..
+
=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>.
-Don't worry if this scares you for any reason, whilst C<NEXT>
-is actively deprecated, just usingC <Class::C3> and normal perl OO
-(as above) is still supported and perfectly acceptable, we just
-prefer the declearative and compositional nature of method
-modifiers and the Moose sugar for many tasks, but what you use
-in your components is up to you..
-
=head3 A simple example
package MyApp::Model::SomeModel;
@@ -296,21 +328,27 @@
after 'quux' => sub { # Code after method };
no Moose;
+Don't worry if this scares you for any reason, whilst C<NEXT>
+is actively deprecated, just using C<Class::C3> and normal perl OO
+(as above) is still supported, but you should start getting familiar
+with the Moose concepts, as many components are likely to be ported,
+and this is the recommended way of creating new components right now.
+
=head3 A note about controllers
Due to the use of method attributes (e.g. C<sub login :Local {}>) in Controllers,
currently you must either stick with C<use base> or C<use parent>, or use the
Moose C<extends> keyword in a BEGIN block.
-We know that this is slightly inconvient, but its a side-effect of the compile-time
+We know that this is slightly inconvenient, but its a side-effect of the compile-time
nature of perl's attributes. In the long term, the plan is to deprecate the
attribute based syntax for controllers, switching instead to a domain specific language
-(i.e. Moosee like sugar), and/or use Devel::Declare to provide new keywords.
+(i.e. Moose like sugar), and/or use Devel::Declare to provide new keywords.
-Current controller declerations will stay supported, but will become deprecated
+Current controller declarations will stay supported, but will become deprecated
once a flexible syntax emerges. The exact nature of what we're planning to do
is in no way decided yet, however the main aim of any refactor would be to enable
-different, pluggable syntaxes for controller/component declerations - so that
+different, pluggable syntaxes for controller/component declarations - so that
several different syntaxes can co-exist in the same application, allowing people
to chose something appropriate for their application, with the 'fittest' / most used
candidate becoming the default..
@@ -323,7 +361,7 @@
=item C<#catalyst> or C<#catalyst-dev> on irc.perl.org
-=item The Catalyst mailing list C<FIXME>
+=item The Catalyst mailing list L<http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst>
=item L<MooseX::Emulate::Class::Accessor::Fast>
@@ -333,15 +371,18 @@
=item L<Class::C3>
+=item L<MRO::Compat>
+
=item #moose on irc.perl.org (for general Moose questions not related to Catalyst 5.80)
=back
=head1 ACKNOWLEDGEMENTS
-Thanks to all the contributors to the 5.80 port for making it happen,
-and the #moose guys for Moose itself. Thanks to everyone who checked
-this article, pointed out mistakes and made suggestions.
+Thanks to all the contributors to the 5.80 port for making it happen, the
+Catalyst team for Catalyst in the first place, and the #moose guys for
+Moose itself. Also thanks to everyone who checked this article, pointed
+out mistakes and made suggestions.
=head1 AUTHOR
More information about the Catalyst-commits
mailing list