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.

Reply via email to