So last night was the Web Frameworks NIght. A great time had by all. Many thanks to the organisers.
We had talks on three frameworks – Catalyst, Django and Ruby on Rails. My overwhelming impression was how similar all three frameworks are. There really seems to be little to differentiate them.
As always the Perl community shot itself in the foot a bit. I know that Catalyst is a great framework and I know that Matt Trout knows a lot about Catalyst. Unfortunately he doesn’t know enough about how to sell Catalyst in a presentation. As a result his talk had a lot of slides full of code which would have been almost inpenetrable to anyone who didn’t already know Perl. He also failed to give any demos of Catalyst in action. But I thought his biggest mistake was to overlook the one area where Catalyst scores heavily over the other frameworks – the ORM tools that Catalyst are much more powerful than the ones used by the other frameworks. For example, with Class::DBI::Loader you can automatically pull the relationships between your tables out of the database.
Django looked interesting. In particular the default admin screens that it creates had everyone in the audience going “oooh”. Django templates use a language that looks a lot like the Template Toolkit, but apparently they are based on the PHP templating system Smarty – so it must have been them that borrrowed the ideas from TT.
Then there was Rails. I don’t really think anyone in the audience was there to find out about Rails. It’s been getting quite enough publicity recently so I think every has at least a basic knowledge of how it worked. I think most people were there for a first look at the BBC programme catalogue that Matt Biddulph is building. And it didn’t disappoint. It looked lovely. I foresee a few wasted days when that is released next year. Oh, and it was nice to hear that some Rails programmers are moving away from the idea of using embedded Ruby as their templating language. A new templating language called Liquid has just been released. This is based on the Django templating language (which is based on Smarty, which is based on TT).
So, to summarise.
- All MVC web frameworks look very similar
- Catalyst has the best ORM capabilities
- Django has the best default admin templates
- Rails has the mindshare
- They are all starting to use templates that look like the Template Toolkit
Update: blech points out that I missed out Catalyst’s big advantage. By building on Perl’s existing DBI framework, it already comes with connectivity to far more database systems than any of the other frameworks.
Update: Here are links to all the presentation slides:
- Matt Trout – Catalyst
- Simon Willison – Django
- Matt Biddulph – Ruby on Rails
So how does this affect your professional publishing activities? Any plans?
I wasn’t there, but I have read Matt’s slides. I would hope that anyone sufficiently interested in web frameworks to attend a web frameworks night would have at least a passing familiarity with Perl. Enough to grok those slides pretty effortlessly. I certainly have a passing familiarity with Python and Ruby would be able to understand equivalents…
Jules,I think it’s a bit of a stretch to assume that anyone interested in web frameworks would automatically have some familiarity with Perl.But that’s not really my point. And it’s not that Matt’s presentation was bad. It’s just that it was the wrong presentation for the audience.Matt had half an hour to introduce Catalyst to people who might not have heard of it. For that you need to choose a few cool features and demonstrate them. Baffling the audience with the breadth of available options is a bad idea.
Forget the fact that we can talk effortlessly to all the databases. Out of all the tools there, it’s the only one that doesn’t force you to control the database (rails forces you to use exactly it’s form of database, django wants to control the database not use a pre-existing form.)Of course, that’s hard to point out when you go last ;-)The main problem with Matt’s Trout’s slides is they were tell not show in the wrong places. Too often Matt Trout described stuff rather than just showing it (to be fair, Matt B did a little too much of the same for my liking.)Typical example, I’ve been playing with Catalyst today and, I’m impressed as Matt said I would be about the debug information. But I’m impressed _today_, not last night, where if I’d been shown this I would have been. Likewise the four line and you’ve got a website running could have been better emphasised by showing the running website.Still, I don’t think Matt did too bad a job. I just think it’s a an inherient problem with the takahashi method…instead of just moving the ballance to words telling rather than reading, you also run the risk of not showing.
I was there. I understood virtually nothing of the Catalyst presentation. Certainly I wouldn’t choose to take a look at it based on what I saw.
Don’t forget CGI::Application. Although it’s been around for a while, the heavy plugin development it has undergone over the last year has meant that it has been keeping up with the Joneses. There’s a feature comparison with Catalyst on the wiki
Dan,Not sure where you got the impression that we had forgotten CGI::Application. There was no way that the organisers could cover all of the frameworks available for all of the languages. This is particularly true of Perl where writing your own web framework seems to have replaced writing your own templating system as the default rite of passage.I had nothing to do with the selection of the frameworks covered, but I think that only Catalyst and Maypole were considered from the Perl world as they seem to have most of the mindshare currently. This shouldn’t be taken as a recommendation of one framework above another.
Can you tell me if Matt Trout’s slides are available ?
Templating Systems
I’ve been thinking about templating systems a lot recently. By templating systems I mean technologies that allow you to mix…
Regarding too much perl-oriented presentation for Catalyst, I believe it was ok. Perl is not an easy language to learn (at least not as easy as php or python), and Catalyst AFAIK is not framework for total beginners either. It’s target audience are not java or php or python developers, since switching to perl for them would be too much of effort anyway. Noone wants to learn another (rather complicated) language just for the sake of new framework IMO. Catalyst will come handy to people who know enough perl to start working in it, and those have understood the presentation, so i think it was ok.