Re: [Maypole] The Future of Maypole

From: Tony Bowden (tony-maypole at kasei.com)
Date: Thu Nov 04 2004 - 19:45:53 GMT


On Thu, Nov 04, 2004 at 02:09:24PM -0500, Perrin Harkins wrote:
> I don't think that pretending Maypole is the first or only Perl MVC
> framework really benefits anyone.

This is another of the reasons why I prefer frameworks that say "If you
want to do X and Y, using A, B, and C, then use me" over frameworks that
say "No matter what you want to do, or what you want to use underneath,
use me".

Nothing can be everything to everyone. Yet too many frameworks try,
and end up being used by almost no-one other than the person who wrote it.

Frameworks are *hard*. They're much more about philosophy than
technology. Early design mistakes get magnified dramatically, in direct
proportion to the level of abstraction you're aiming at.

A framework should never abstract away anything you haven't done the
long way at least 3 times, or preferably more.

I consulted for a company once who had what we came to call "three legged
cow syndrome". They had developed a basic content management system that,
like many of these things, had morphed into a product that could, of
course, do anything any client (and particularly any potential client)
wanted. And every time a client came with a request for something the
system didn't already do, they tweaked the system so that it could do
that in future. After all, that's just good practice.

Of course, each time they did this, they implemented a hybrid of generic
and specific requirements because they couldn't know the difference.

Because the first client who ever wanted a certain feature had certain
business rules associated with how that feature would work, the code
assumed that everyone client who wanted that feature must work the
same way. But of course, every client's process was different. And,
almost invariably, insane. It's the nature of business systems. They
evolve over time to account for all manner of foibles. As technologists
we want to simplify these things, and refactor them all away. But almost
every real-world business has bizarrely crippled logic to their business
rules. They're all three legged cows.

And every client who did things differently to the first client was then
treated as if they were insane. Because everyone knows you don't do that
like /that/ - you do it like /this/.

The only known way around this syndrome is to implement the first
client's additions as a standalone plugin. Then the second time someone
comes in with something similar do the same, based on what you've
learned the first time. The third time you can begin to factor out the
commonality. Cautiously.

Tony

_______________________________________________
maypole mailing list
maypole at lists.netthink.co.uk
http://lists.netthink.co.uk/listinfo/maypole



This archive was generated by hypermail 2.1.3 : Thu Feb 24 2005 - 22:25:56 GMT