Question

(Not sure if there was a relevant stack exchange site for this, I saw a few ones related to open source in companies and figured this was similar, but different enough to warrant a new question).

We have a client that we're about to pick up for some work. We've gone off and done the exploration for their product and come to the conclusion that we're going to need to use a particular open-source library.

This library is in active development, and the author is taking contributions, however there are a few features that we'll need that haven't been built yet (and they aren't of immediate importance for the author). We've figured it'll be possible for us to build them into the library ourselves, and we would love it if we could contribute our changes back to the project. (We've tried to be active in Open Sourcing our own work when we haven't been developing it for a particular client).

However, we feel that it could be difficult trying to convince the client that a reasonable portion of the work they're paying us for will be given away for free to anyone else who wants it. It's also unlikely that we will be able to use this library again for future client work so we can't really afford to take the cost on ourselves.

Is it worth raising this possibility with the client and if so how? Or should we simply give the client our own private version with our changes?

Was it helpful?

Solution

If the OS project is in active development, and you create a fork with your own custom modifications, then you can't upgrade to future versions of the main branch. Depending on the project this may be a big issue or a non-issue, but what if bugs or security issues are discovered and fixed in the main branch of the library? If you need to do the custom modifications anyway, contributing back is a net win for maintainability.

If the client is not immediate interested in OSS, you should avoid the ideological arguments ("contributing to the community" and so on), but just inform the client that you have to do the development in any case, and contributing back will make maintenance easier in the future.

OTHER TIPS

we feel that it could be difficult trying to convince the client that a reasonable portion of the work they're paying us for will be given away for free to anyone else who wants it

You are already doing this, its just that most of the code has been pre-written already.

That's the point here, they get all that work for free, but they will have to pay a bit extra for the extra work to fulfil their requirements. You could use a new library, but then the cost would be double as you re-implement everything in the OSS lib.

Be open and honest about this stuff with the client, when you explain that they get the majority of the work done for free and are just paying for extra bits specific to them, they'll be happy. You're more likely to have to explain why OSS is good, and why its not viral and going to turn their entire company to virtual dust. After all the media hype from companies who want to kill of OSS in order to sell more proprietary stuff, this might be a big ask.

From what you've said, I would not raise this issue with the client.

Clarification - And don't contribute the code changes back to the project as you dont own them and havent got permission from the client

In my experience non programmers can have a negative view of open source products and it can be fully justified.

In this case, instead of hearing 'in active development by a single developer' they might hear 'unfinished project done by some unknown teenager in their bedroom' and question your choice of the library. Perhaps raising uncomfortable questions about future support.

Don't misunderstand me, I would still use the library, list it under '3rd party software used' etc but its not something to wave in the clients face.

If it was a well known project it might be worth contibuting for the qdos and bragging rights, but then you would have to take on the cost yourself rather than bill the client for it.

Another alternative might be if you can neogitate ownership of the code. It sounds like you might have your own libraries you use across projects which presumably you licence clients to use as part of their code. Adding features to these in order to support a project would still be billable work in my view. So if the library can be included in this group you would be free to contibute back to the project

Licensed under: CC-BY-SA with attribution
scroll top