A review of the main modern web frameworks for Perl, somewhat in the style of the other reviews I've done: http://neilb.org/reviews/
A comparison of the main web frameworks, with the same sample application available for all of them in github. This will help people make informed decisions, and hopefully encourage more people to "have a go" at web development with perl.
The public comparison will hopefully provide competition, in a constructive sense.
When I do the reviews I report all bugs found, and submit improvements to documentation. Where I find something to be harder in one framework than another, I'll submit that as feedback, as I work through.
A review of the frameworks.
Example application for each framework, in github.
A final short report, summarising what was done, with an estimate of time spent.
I will create the same application (or as close as feasible / appropriate) in each of the frameworks. I will outline a spec, but solicit input via a blog post, to try and ensure the most useful / insightful app. My first quick outline is:
A web app for maintaining a curated set of URLs
Users can login, either having registered, or using using something like twitter, facebook, etc
logged-in users can add new URLs, tag URLS, and give a rating
My experience with doing these reviews though, is that I start with a specific task, but it grows and evolves as I work through each candidate.
Unlike with the other reviews I've done to date, I plan to blog as I work on each framework, (a) to record the thoughts of a newbie, while still a newbie with each framework, (b) because I expect this to take quite a bit longer, and (c) to hopefully generate discussion and further things to try.
I will also try and get others to join in, so I can include comments and perspectives from multiple people. In a perfect world I'd get some people joining in who have no experience, and some who have experience with one framework who try a different one. I'm not going to rely on any participation to be able to complete this.
I don't plan to develop the app in every web framework available for Perl, just the main modern frameworks. I plan to do "full" coverage of Dancer, Mojolicious, Catalyst and Web::Machine; other frameworks may get added to this list, if it seems appropriate. The review will mention all frameworks.
With nearly every review I've spent a long time getting to v1, but then spent a lot of time after initial publication, based on finding new modules, suggestions for further evaluation, and my continuing interest. I tried one review where I released early, then did many iterations, ending up spending just as much time.
outline app that will be developed
blog post announcing review, soliciting participation and comments on the app
develop app for Dancer
develop app for Mojolicious
develop app for Catalyst
develop app for Web::Machine
notes on the app for OX, Mason+Poet, Web::Simple, Jifty, mod_perl, Dancer2, and others.
first draft of review
revisit each app, in the light of experience with the other frameworks, and writing the review
initial publication of review, solicit comments
update apps and review, based on comments
To be honest, I don't really know how much effort this will take, but expect something in the range of 80 to 200 hours. So far every review has taken a lot longer than expected, for varying reasons.
I expect this time to be spread over 2 to 3 months. Even if I could compress the schedule, I don't want to, as I want to maximise the likelihood of third-party contribution, even if just via blog comments.
I expect to rewrite the apps a number of times, as I gain in experience, and get feedback on the early versions. Part of the goal is to record this evolution.
The review will be published, and announced on blogs.perl.org, as I've done with all the others.
The example apps will be in github. Possible improvements to documentation for some or all of the frameworks.
I've been developing with Perl since 1992, but had a 10-year patch in the middle in management, when I just wrote scripts to help out others, or for relaxation.
I've so far written 10 reviews of CPAN modules.
I've written web apps using mod_perl, but haven't worked with any of the web frameworks.
I'm self-employed, boot-strapping a business with a co-founder. This will largely be done on my own time, but I'll probably be flexible on the definition of that.
I'm strongly in favour of this, because we need something to offer beginners as a guideline, simply because we are blessed with a wide range of alternatives.
I'd love to see this. The are a lot of web frameworks for Perl and this would give them some exposure and help people make the difficult decision of which one to use.
There was another new framework I read about recently that looked interesting. Heavily based on Plack, it had a short name but unfortunately I forgot to bookmark it.
This is concerning - I question whether it would cause more dissension and spread misinformation rather than help.
Nothing against Neil, but his previous reviews have been focused on comparisons instead of highlighting what each framework has focused on, and why they chose the paths they did.
For example, a great amount of time would have to be spent working with the real-time features of Mojolicious to give an accurate review, whereas some of the other frameworks haven't chosen that direction at all - a completely different application would have to be written for each framework to properly highlight what it can do.
Alex: I guess you were thinking about Kelp (bare-bones Plack-based nanoframework).
I´d prefer the revised list of contenders (Dancer v2 instead of Dancer; including OX; cf. http://neilb.org/2013/05/01/starting-web-review.html ).
Also, instead of the example app described above, how about using the same app as used in this series of articles: http://net.tutsplus.com/tutorials/html-css-techniques/build-a-twitter-clone-from-scratch-the-design/
It would give people familiar with any of those technologies a better access to the Perl implementations. And you might be able to make some extra money by submitting a guest article to tutsplus (which should generate even more interest from people outside the Perl community).
However, given the complexity of the frameworks, I wonder how meaningful the results would really be.
On the other hand - if one community of one framework criticizes your implementation as inadequate that might simply mean they didn´t do a good enough job of documenting the best way to utilize their framework. Which in itself may be a valuable outcome of this grant.
Yeah that really hits a sweet spot, I like this idea to have a reference implementation of this in all frameworks. Probably even "different approaches" to see also the flexibility options of the framework.
Good point Torsten, about illustrating different approaches, where a framework supports / enables / facilitates more than one.
Hopefully the review wouldn't cause dissension: I work quite hard to try and ensure that my reviews are respectful. And if I've misrepresented something I'll always correct it.
Unavoidably my reviews always have some aspect of "what are these modules like for doing X, Y, or Z", as typically they've grown out of me trying to satisfy a need of my own. This review is no different: I want to start a new project and develop with a framework, but couldn't find any comparison of all the relevant perl frameworks. For my personal use I'd probably just check out the main contenders, but submitted this proposal as I think it would be good if all frameworks are included to some level.
Realistically a review such as I'm proposing is likely to give more of "what it's like as an early developer" with each framework. Where I get comments from other users, I include those, and as noted in my submission, I really hope to get such input on all, or at least the major, frameworks.
I continue to maintain the reviews, adding new modules, and what growing experience with (some of them) that I may have. I expect the same to be true with this review, should I do it.
As noted by hjansen above, I'm keeping a list of the current contenders on my blog.
I'd love to see this proposal funded. Neil always writes such thorough and objective reviews. Reviewing the plethora of web frameworks is a big task that is very worthy of a grant.
The side-by-side implementations of the same app with different frameworks will be extremely helpful to those who are shopping for web frameworks, and will really showcase all the awesome tools that Perl has for web developers.
tempire: It is probably impossible to do full justice to *all* the features of *all* the frameworks. But I'm sure Neil would be happy to work with the framework authors to avoid misrepresentation and ensure that factual information is true. At the same time, I think Neil is entitled to include his opinions and observations as well.
While I like reading reviews, I'm not sure I'd pay for somebody to do this. I recently made my own comparison apps of Mojo, Dancer, Kelp, and two of my own internal project frameworks running on Apache CGI, Apache ModPerl, dev daemons (bundled with the frameworks), PSGI default,Starman and Starlet. In addition to my own interests, there are other items out there
I was doing this out of curiosity (and to selfishly make sure that my own frameworks were at or faster than the current market trends - yes they will be available on CPAN as yet another framework).
Which brings up the same question that others have - framework selection - how do we get all of the other frameworks in there too.
I think a better project would be a open authenticated (via CPAN credentials) web database of problem specfications (which can have new entries added), and then their solutions- which is almost what you have said, except that any framework author can add/update their working solutions. I think it would be fine if you seeded it with the items you specified, but I am certain that the framework authors will have optimizations and comments to add (so let them).
Essentially this gamifies the problem (make framework authors improve their frameworks) rather than documents the state of things at only one point in the year 2013.