Thursday, July 09, 2009

Code reuse styles

There is much buzz around PHP tools like Drupal and Joomla. They are ready-made solutions, but in fact there is also a lot of tweaking the templates and writing add-ons. It seems to work very well - the clients get something usable from the beginning - and later they can modify it to fit their purpose better. This is very agile. In contrast the reuse in Perl is mostly around libraries. This is much more flexible - you don't tweak a ready solution - you assemble it from the thousands of CPAN packages. But it is also less agile.

I wonder why it is like that. There are some technical differences that lead developers in one or the other direction - but there is also a cultural/psychological cause. Doing some self-analysis I must admit that I am not really enthusiastic about contributing to a Perl CMS (like for example Bricolage) - in my view all the already-build solutions use obsolete libraries. I'd rather contribute to building the perfect library - then code an extension to Bricloage. I have the feeling that I am not alone in that crazy perfectionism around Perl hackers. PHP clearly wins here with more pragmatic approach.


Kiffin said...

So if as you claim Drupal is such a 'ready-made solution', why has a culture of tens of thousands of third-party consultants arisen out there in order to develop tailor-made variations for the eager customers.

Robin Smidsrød said...

I must admit that I have been thinking about making a general purpose CMS (similar in concept to Drupal) for perl that takes a minimalist approach. If you're into talking about it a bit more you can find me on as robinsmidsrod. I'd love some collaboration on the idea.

Robin Smidsrød said...

@Kiffin: Because it's a good base to build what you want. As a framework it gives you a lot of leeway to do exactly what you want without being encumbered by a crufty API. In many ways it is very similar to Catalyst, but allows end users to build it via the web browser instead of having to work on the command line. That means that you can build what you want by yourself and hire a consultant when it gets a bit too advanced to do in-house.

zby said...

@Kiffin adding to what Robin wrote - I view this as the agile approach. The client gets quickly a basic site - he can use it and learn what extensions he needs - then he hires developers to build them.

@Robin - sure, I am still at the basic thigns with Catalyst::Elements, but eventually I would like to build a basic CMS with it.