[consulting] Staying Current

Laura Scott pinglaura at gmail.com
Sun Mar 29 15:46:27 UTC 2009


> The key to this is your assumption that there is "lots of  
> customization". My goal is always to do as *little* customization as  
> possible by finding modules that are a good fit and have lots of  
> flexibility, or by educating the client on ways to bend their goals  
> a bit to do things in a way that they can be done without a lot of  
> customization, or by writing patches to modules that make them  
> flexible enough to do what I need them to do and contributing the  
> patches back so that they will be maintained and supported, and by  
> trying to avoid using modules that are not widely-adopted (which  
> therefore may have upgrade and maintenance problems).

What is "customization"? I'd say it goes beyond custom code and into  
configuration as well. And configuration is something you can't really  
put under version control. We provide alternatives so clients can make  
informed decisions, but we don't think

We recently upgraded a site we did years ago, from 4.7 to 6, and by  
far the biggest complications were in dealing with contributed  
modules, not the custom modules we had done ourselves. Coder module  
and familiarity with the Drupal API changes can make upgrading a  
custom module much easier than dealing with contributed modules that  
don't have smooth upgrade paths or have disappeared altogether.  
(Remember Flexinode!)

There are some false assumptions I see out there: That you are better  
in every case if you use contrib or give back to contrib. It's a nice  
ideal, but it doesn't always serve the client. If all I need is a  
screwdriver, I don't need to use a Leatherman tool. The screwdriver is  
going to do the job better anyway. And when I need to upgrade, all I'm  
upgrading is the screwdriver, not hoping that the Leatherman still  
supports the kind of tip I need. Awkward analogy, perhaps, but there  
really are times when the open source approach costs more now and  
costs more later.

For example, if we write a simple module to generate a page that could  
have been generated by Views plus a handful of other modules, it  
doesn't always follow that the simple custom module will result in a  
rougher upgrade path. Who says that combination of modules will be  
available? One clear argument in this case for the Views approach  
would be that the client needs to be able to change that configuration  
through an admin interface. But another clear argument the other way  
might be to optimize performance on that page, or to put the  
progressive enhancement of that functionality under version control  
for developers. It's never cut and dried, is it?

>  I'm talking about big sites with lots of customization, where  
> clients might spend well over 100k on customization.  I'm just  
> questioning whether those who build those sites are building in --  
> or being upfront -- about the cost of upgrading to D6 and then D7.

What the developers are telling the client is important no matter what  
the size. Just because a site is large and complex with lots of  
customization doesn't mean the client was misled. There are many  
different approaches to web properties. We are quite up-front about  
the costs of upgrading (which are far far lower than developing from  
scratch, as long as the site, custom or not, was developed following  
best practices). Compared with the costs of large integrated systems  
like Vignette, it's a bargain.

It's not about "what you're selling." It's about what the client  
needs, isn't it?

And it's open source, which means there is no real EOL. You can always  
change/fix/update the code yourself, which is something you cannot do  
with proprietary systems.

> 1) We try to use as little "custom code" as possible. If we are  
> changing the way a module works, we submit our changes as a patch  
> and work to get the patch committed. This means easier updates in  
> the near term, and (hopefully) an easier upgrade path in the medium- 
> long term.

+1 on the patching! But I don't agree that using as little custom code  
(which I will take to mean custom modules) is always best serving the  
client. There are many instances where a simple custom module can  
replace three or four complicated modules cobbled together and  
containing a bunch of code for functionality not needed. There are  
instances where we might write a custom module rather than use a  
contrib module simply for site performance and responsiveness.

And that doesn't mean upgrading will be harder, either.

> It strikes me that we've moved away from "Should Drupal be supported  
> for more than two releases?" to "Are there salespeople that mislead  
> clients about the full cost of acquiring some piece of technology?".  
> And since the answer to the second question is so obvious, what are  
> we even talking about?

To me the real problem is still incompetence. We don't run into many  
clients who have sticker shock over upgrading costs. However, every  
week we are approached by clients who hired the wrong company to  
develop their site, and spent all their money on a site that is not  
simply "incomplete" (which can happen if a project runs out of  
funding) but was actually built with such incompetence that the only  
solution is to start over. There's no happy answer in these cases.

And that's part and parcel with the world of open source. The upside  
(if you could call it that) is that lack of competence ranges deep,  
far and wide in the proprietary world, too. Caveat emptor is always  
the message.

Laura




More information about the consulting mailing list