Summary
An update on the status of the current Perl Catalyst development cycle and a few thoughts about the future of Catalyst
Hamburg Status
Hello Catalyst Developers! Some of you might be wondering about the status of Catalyst development, and I've been asked a few times if there is a vision for the future. So I thought to drop a bit of time and summarize where things are from my perspective. I hope you will consider spending a bit of time sharing your perspective.
For orientation, here's the current quest list for Hamburg:
http://questhub.io/realm/perl/explore/latest/tag/hamburg
Hamburg got off to a slow start, with more than a month between the end of Sicilian Buttercup release and the finalization of its target quests. I figured Hamburg would stretch out a bit since its summertime here in the USA and most of the northern hemisphere would be summertime, which means people on vacations, etc. Also, as you might know I run a small farm and summertime means most of my free time is going to be dedicated to all the small and large things. In order to try and account for that I changed our release policy to say that when a quest was completed, we'd do a dev release of it, that way we don't have such a huge gap between some sort of release. Also, I thought it would help inspire contributors since there's nothing better than to see you code live on CPAN, even if as a DEV release. And also I would get CPAN tester reports sooner, so we could avoid the problem we had last stable release, where we needed to do quick followups since the release had some issues.
Given, that, we set seven quests for Hamburg and have completed three, which is a bit of a bummer. Here's what's been done:
- Update any dependencies in Makefile.PL that need it
-
(http://questhub.io/realm/perl/quest/51dece1605581e3520000008)
We met the minimal goal of fixing the noted module. There's still a good opportunity here for someone that wanted to get started contributing to try and figure out the real actual minimal dependency versions. I think this could be as easy as installing a clean version of perl5 v10, creating a clean local::lib and installing Catalyst into it. You could then compare the actual installed versions of the listed dependencies with what is listed in the Makefile.PL and update based on the difference. This I think would be an actually useful thing to know, so feel free to pick that up and shout out if you need help.
- Support other common content body types in request
-
(http://questhub.io/realm/perl/quest/51d716aa4de22b0a7c00005b)
Hamburg Dev version 002 now lets you define parsers matched to POST/PUT body content. We also now include a JSON parser. SO yes, Catalyst now supports JSON out of the box (welcome to 2010...)
For more information and examples see:
https://metacpan.org/module/JJNAPIORK/Catalyst-Runtime-5.90049_003/lib/Catalyst.pm#DATA-HANDLERS
The included JSON parser is a pure perl Parser, so although this adds a dependency, it should not be one that is hard to install or cause issues. We are well aware that Catalyst already has a heavy dependency footprint!
For a taste of how you'd use the new JSON support you can look at the test case
https://metacpan.org/source/JJNAPIORK/Catalyst-Runtime-5.90049_002/t/data_handler.t
and its targeted action:
Working on this quest also lead to a pretty fruitful discussion on the mailing list regarding Catalyst and improving the out of the box experience for building RESTful applications. There's a document proposal on github on this now as well
https://github.com/perl-catalyst/CatalystX-Proposals-REStandContentNegotiation
- Declare PSGI Middleware as Application Level Configuration
-
(http://questhub.io/realm/perl/quest/51d714894de22b0d7c00004a)
I'd like to expose more of Catalyst's PSGI underpinnings, and this is a start. With this quest complete, you may now easily configure middleware via configuration. This will be handy for the cases where your middleware would like to be more aware of Catalyst internals, or for the cases where you'd like to configure middleware using standard Catalyst configuration tools (for example you want the debugging panels in DEV but not prod)
See the following for examples:
https://metacpan.org/module/JJNAPIORK/Catalyst-Runtime-5.90049_003/lib/Catalyst.pm#PSGI-MIDDLEWARE
Ok, well that is it for the completed items. Here's a quick rundown of incomplete:
- $c->config->{name} should has a sensible default
-
( http://questhub.io/realm/perl/quest/51d7146f4de22b0a7c000057 )
- Alternative method for accessing request parameters.
-
( http://questhub.io/realm/perl/quest/51d7142b4de22b097c000049 )
- Make sure the entire test suite passes under 'parse_on_demand'
-
( http://questhub.io/realm/perl/quest/51d713bf4de22b097c000047 )
- Fix ModPerl Support
-
( http://questhub.io/realm/perl/quest/51d712424de22b0c7c000041 )
I'm not going into detail too much here, other to say that I'll probably handle that last one with ModPerl, since it would be of use to my current job. But if anyone knows any easy way to mock a modPerl1/2 enviroment, please let me know because testing mod_perl is not easy (at least to me).
However its not all rainy days. There's been some important work done that was not part of the original Hamburg scope. Remember, the quests given are to help people who want to contribute but would like some help figuring out something to do, we are never limited to those items. Its really just about helping you all understand the goals and were we are attempting to go with the platform over time.
Here's some other bits you'll see in the next Catalyst release:
- Use modern preferred method for Moose metaclass access and many other
small changes to how we use Moose for better forward compat (ether++)
- Killed some evil use of $@ (ether++)
- spelling fixes and documentation updates (ether++), (gerda++)
- use Test::Fatal over Test::Exception (ether++)
- Misc. test case fixes to modernize code (ether++)
- Added a first pass cpanfile, to try and make it easier to bootstrap
a development setup (ether++)
Really, I should be calling this the Ether release, given the number of commits from her over the past two months!
One way or another we'll wrap up Hamburg this month, so you really should take a look at Dev003 which is on Cpan now:
https://metacpan.org/release/JJNAPIORK/Catalyst-Runtime-5.90049_003
Installable with cpanm --dev Catalyst
And then we can start with all the year end stuff including:
- - Hamburg with Go Stable
- - We'll start a new dev cycle sometime in October.
- - Later this month there's a new community poll being released.
- - More speculation on what Catalyst6 might be like.
- - Christmas Advent season will be here before you know it!
Thanks for tuning in, and remember its not too late to pick up one of the existing and incomplete quests!
Why JSON::Maybe instead of just the `JSON` module? which supports JSON::PP or JSON::XS (if the latter is available)
Posted by: Caleb Cushing | 09/20/2013 at 06:48 PM