[development] Convince Client to Release Code

larry at garfieldtech.com larry at garfieldtech.com
Mon Jul 13 16:43:45 UTC 2009

As others have noted, the time to be having this conversation with a 
client is before any work is done, not after.  Your contract (which you 
want to have, period, even if it's a friend, and this is why) should 
specify who holds the copyright on any code written for the project.

For Drupal modules, whoever holds the copyright is required to 
distribute it under the GPL... *if* they choose to distribute it.  There 
is no legal requirement in the GPL that any of the code you write ever 
be given to anyone but you and the client, just that if one of you does 
so that it is under the GPL.

Most sites include some widely-used general purpose modules, some fringe 
special purpose modules (either custom written or not), and some 
site-specific one-off code that, while still GPL, is really not useful 
to anyone else.  How much of each varies widely with the site.  There's 
really no value to distributing the latter, and I'd argue that putting 
that on Drupal.org is a net-negative as it just inflates the number of 
modules and eats up valueable namespace.  So any code that is not 
generalizable you shouldn't bother distributing anyway.

For any code that is generalizable, I think the most persuasive argument 
is that, especially for a hosted solution like you describe, *code is 
not what differentiates him in the market*.  It's the service he offers. 
  Code is incidental to that.  If people want to replicate his service 
and compete with him, replicating his service will be harder than 
replicating his code.

If the code is not that important to the service, then he loses nothing 
by releasing it.  If that particular functionality is that important to 
the service, then someone else trying to compete with him will replicate 
the code that provides the functionality, release it, get the karma and 
good will of doing so, which means the free support and increased 
likelihood that someone will answer questions when he has them, etc. 
The free, shared version of that functionality will eventually become 
better than whatever your client's hidden version is, so his competition 
will have *better* code at their disposal than he will, and he'll be 
stuck with code that no one can support except him that is worse than 
the publicly available, shared version.  That's the worst possible 
situation for him to be in.

Sometimes, releasing code does help your competition.  Any Drupal 
consulting shop that releases modules or makes patches to existing 
modules is directly benefiting other consulting shops that they may end 
up bidding against on a client.  And those shops are doing the same in 
return.  With enough shops doing that (and there are), you're still 
getting more free code and functionality than you're giving away. 
Everyone is perpetually in "code debt" to the larger community in terms 
of code given away vs. code gotten for free.  It also means that other 
module maintainers are more likely to consider your feature requests and 
patches (even if they have to write them themselves) if they recognize 
you as an active contributor.  That's what makes open source work; 
everyone is in debt to everyone. :-)

Fred Jones wrote:
> We have one client for whom we wrote a set of custom modules. I asked
> the client if we could put the modules on d.o and he balked. I tried
> to explain that he'll get good testing and also bug fixes and new
> features maybe, if others post patches etc.
> He feels that he (his organization that is) paid for the work and why
> should someone else now benefit? He also has this idea that other
> organizations like his will want a site like his and he has plans to
> provide a hosted service for them (while this idea may seem
> far-fetched, I do think he has some connections which might make this
> idea feasible).
> So he thinks if we release the code, then they will just grab the code
> and use it. I tried to explain that your average layman has no idea
> what Drupal is, no way to figure out your site is running Drupal, and
> if even he got that far, he has no way of building his site without a
> professional to put the pieces together (after they figure what those
> pieces are of course), and then they he would do just as well to use
> our hosted plan!
> But he hasn't accepted this. Are there any good arguments we can use
> to persuade him? I feel he has nothing to lose in releasing the code,
> but we have to convince him of that.
> Thanks.

More information about the development mailing list