Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am about to enter the world of consulting for the first time and am having to write my first contract. One problem I have is regarding open source work and intellectual property. I love working on open source projects, whether it's an existing project or a project that I start on my own.

The question is: how can I write my contract to accommodate the following situations:

  1. In the course of working on the client's project, I want to open source part of the code to the community under my own name.
  2. In the course of working on the client's project, I am making use of some of my existing open source projects, and am making improvements to them.
  3. In the course of working on the client's projects, I make improvements to third party open source projects and contribute them back.
  4. In the course of working on the client's project, we decide to open source part of the code under the client's name.

What are the precedents to this if any?

Update: I added a item in the list above(item #3).

share|improve this question
    
I wish I could downvote comments. I am surprised by the amount if misinformation and lack of knowledge around working with opensource projects. It is actually very common these days to get paid and work on opensource projects. In many case clients want to opensource their code, the problem is how do they get attraction to it. Good question @toby –  Aras Feb 11 at 7:08

3 Answers 3

up vote 2 down vote accepted

As well, IANAL - so I'd recommend consulting with an attorney that specifically understands or specializes in software intellectual property issues.

But, I think the answer is fairly straightforward: 1. I don't think there is any need to discuss the term "open source" with the client (read forward before forming an opinion on that statement) 2. In your contract, you clearly need to state the following: a. Any work you create for the client you JOINTLY OWN and each can create derivative work products. This means you each can use it as you see fit, including contributing to an open source project (consult the open source project's IP requirements of course). b. You retain ownership of any pre-existing work product that you are nice enough to include for free, and you issue an unrestricted license to your client to use that code in perpetuity, including the creation of derivative works c. Any third party code or products used are owned by their respective owners, and are subject to their licensing

You'll also want to make DAMN SURE that you don't ever ever ever sign any contracts with an Assignment of Inventions clause that isn't extremely limited (they never are) - or you may be legally SOL. Note that there are several states (i.e. California) that limits (but doesn't eliminate) this by law regardless of what the contract says. This is expected in an employment contract (but limits may be able to be negotiated), but IMHO should not be granted for an independent contractor contract.

Your biggest challenge will be getting them to accept joint ownership of the source code. This conflicts with the "Work made for hire" doctrine that is specific language that is very often used in software development contracts when using contractors.

If they understand IP, they may not agree to this - but I'm guessing that those aren't the type of clients you're dealing with. I can tell you with certainty that there is at least one extremely large software company that does this for any consulting/custom code written for any client - and if they won't agree to that, then they won't do it - period (but they'll refer them to a partner).

If you have joint ownership you should be fine IP-wise to contribute that code to an open source project, subject to any restrictions made by that project.

You'll also want to be selective in what you open source. You would be doing your client a disservice if you open sourced industry-specific code that would be useful to their direct competitors. Your client will also be less than happy if they realize that the entire app that they paid you to custom write for them is available for free - and could even at first think that you just installed it instead of writing it from scratch. You also just diminished their perceived value of your services.

I think this covers your questions 1,2, and 4.

Question 3 could be a problem - depending on the licensing model of the open source project from which you are creating a derivative work, the client can certainly pay you to do it, but they may not have complete or even any ownership of that code per the licensing model of the open source project. That is not to say that you can't do it - but you may want to cover that with an additional clause in your contract - and run it by an IP attorney - or only do that after a client asks you to do this - and then you might be able to charge back the costs of having an attorney review an addendum to your contract covering this situation.

share|improve this answer
    
Oh - and if they won't agree to joint ownership then don't provide them with your pre-existing work for free, which can become a negotiating point. Consequently, if they won't agree to joint ownership because they're concerned about IP, they may not want your pre-existing work mixed in there anyways. –  ScottBai Sep 30 '11 at 17:50

Seriously, both of the answers began with IANAL - I think that you need to stop even thinking about writing a contract and talk to a lawyer before proceeding. You wouldn't ask your lawyer how to refactor parts of your code.

Also - @Pete Wilson is right, your stipulations are probably not going to go over well with your client.

share|improve this answer

The usual IANAL applies, which means, consult an actual lawyer.

That said, my take would be:

  1. ...is a tough one. It's unlikely that a customer is willing to pay you for software which you are going to open-source immediately. You can ask, and if they agree, set up a contract accordingly, but my guess is it's not going to happen.

  2. ...is also rather unlikely, but with a well-crafted contract that clearly defines the boundaries, and agreeing that you will not get paid for working on your own open-source projects (whether you are using the code or not) may be acceptable to customers. You may even be able to convice them to financially contribute to your project, but in any case, you need to put considerable effort into setting up a good contract.

  3. ...is at the client's discretion. Usually, a client will want the advantage they are paying you for, which means they don't see any benefit in open-sourcing their property, but there may be cases in which you might convince them to do so, adding a bit of delay to keep the advantage, or publishing under a dual-license model.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.