We are about 2/3 of the way through the current Catalyst development cycle and I am on the way to YAPC so thought to give you all a quick update on the task statuses, and in particular things that need people to step up and help with.
The Current TODO list is here: https://questhub.io/perl/player/jnap
Tasks on track to be completed:
Move the UTF8 plugin into core. Wallace Reis stepped up to this and has provided code that basically applies the current plugin automatically if we see that you are asking for it via the 'encoding' configuration setting. Pending merge up.
Let Catalyst Support delayed response, Event loops and Websockets. This is already in HEAD for Sicilian Buttercup, and we have an example application on Github with examples of delayed response, streaming in an event loop for for high concurrancy, and the obligatory websockets classic echo server and chat application. The code in HEAD seems pretty solid, but I want to support both IO-Async and AnyEvent loops and the example app doesn't yet have both, but I feel we are well on the way to supporting these types of modern techniques in Catalyst. We also obviously need more docs and examples so if think having this in Catalyst is cool please try to step up with some great ideas of how to use these features.
Unscheduled Tasks Completd
Detach on Die in Chained Actions. There's a longstanding issue with the way Chained Actions work where an error in a Chain action node that is not the endpoint will not stop the rest of the chain, as might be expected. This change will enable this behavior with a configuration setting, but in the future it me become the default behavior, so pay attention :) Dpetrov++ for this one
Convert all Dispatch types to be Chained Based. This task does not yet have an owner. I think its really critical if we hope to improve the dispatcher to consoladate the code better. Chained actions are fantastic, but have always been somewhat of a hack. Making Chained first class is the first step in fixing that problem and in enabling future dispacher updates. I really hope we can step up to this at a YAPC meetup. t0m has a branch floating around which he's promised to push up to git, so as soon as that lands I'll shout out since its probably a good place to start.
Content Negotiation. Right now I don't feel like the dispatcher is designed in such a way as to allow to proper RESTful content negotiation, so I am considering shelving this task for now until after we do more dispatcher related changes. On the other hand, it may be that what most of you want is not hard core REST (as you might get with Web-Machine) but just some easy way to match methods to requested content types (incoming and outgoing). My guess is that what most of you want is a simple way to say "Let this action handle JSON please". If so, I do think that is a doable task. Thoughts?
Assistance with administrative tasks requested
I know a lot of you would like to help out more but often feel like you are not up to the task of doing coding. However I could personally use a bit of help with merging up pull requests, prepping and deleting branches, releasing Catalyst to CPAN all that admin type stuff. This would free me up to do more advocacy, coding and mentoring. If you think you'd like to give it a try, let me know.
Review of old branched requested
I see a lot of old branches and it would be great to try and get a catalog of them and if you wrote it to le us know what it was trying to do and if its still relevent. I'd like to clear stuff out and remove unneeded branches or merge up good ideas.
YAPC:NA 2013 Hack meetup
If you are attending YAPC this year in Austin, lets try to get together and see if we can hack out some of the pending and stalled tasks! I'm presenting on Tuesday, so maybe Tuesday evening could be a good time. I'll announce and advert during the first round of lightning talks, so listen up for that.
I think Sicilian Buttercup is well on the way to adding some useful fixes to Catalyst in the next release. I know I've often been asked if Catalyst could support asynchronous response and websockets, so at least we have a good start on this and I look forward to seeing what people do with these changes as to help guide how we shape the code around this in the future. Additionally making UTF8 in core is going to get people started correctly in the future, and given how awesomely Perl support UTF its a no brainer to take advantage of it. Lastly, we are starting to move toward fixing long standing issues in Chained actions and laying the groundwork for a better dispatcher in the future. Thanks for checking in and hope to see some of you at YAPC:NA in Austin!