In the past few months I've been looking for a job, sending out resumes, asking friends if they know of anything. Two weeks ago I got my first job offer, from a company that develops software targeted at a specific vertical business market involving quite a bit of network programming. The work sounded like fun, it was in New York City so I wouldn't have to move across the country and so I accepted. They sent me their intellectual property agreement, and invited me (after I signed, of course) to a company meeting that Friday.
This is where the trouble began. The clause that caused me problems went something like this:
"I agree that I... hereby assign to the Company... any and all inventions... which relate in any way to the actual or anticipated business, research, developments or products of the Company."
Now, I fully support the right of the company to protect its proprietary knowledge, and I would never work on something that would compete with my employer's business. However, the language employed by the agreement above meant I could not really work on Twisted, of which I am one of the core developers. Since Twisted is a networking framework, and networking being "related in some way" to the company's business, the company would own the copyright and I would be unable to contribute to the project.
I thus asked for an exemption, either for any open source projects I wished to work on, or alternatively for a mutually agreed upon list of projects. Since other clauses in the agreement would have given them legal protection if I did something competing or conflicting (not that I would), I felt the company's rights would still be protected.
To some degree the company had no problems with my doing open source development. They use some open source software internally, and will feed patches back to the developers. They did however have a problem with my working on anything that relates to what their software does, the broad interpretation of the agreement. They felt that any skills, knowledge or techniques I learned from working on the company's software might leak into Twisted, thus allowing potential competition to have a head start developing competing software.
From my perspective, I felt that their fears were overstated, since Twisted is much lower-level than their business-specific application, apparently much slower and an already existing general networking platform. The company's product has been in development for four years, by some very smart people. Twisted would only save a small amount of the work necessary to get anywhere near what they have built. Additionally, the reason they wanted to hire me in the first place was due to the experience I had gained working on Twisted (network programming, framework design, protocol design). I believed the ongoing growth in skills I would gain by continuing to work on Twisted would far outweigh any theoretical gain some competing company would get from my Twisted development work. I know of no company using Twisted that is in the same business.
We negotiated back and forth about what pieces of Twisted I might work on, an argument between my emotional investment in code I've written and fear of losing it and their emotional investment in their code and their fear of losing it. Eventually they got back to me with an offer: stop working on Twisted completely, in return for a %20 raise in salary from their initial offer.
Which I then refused. I work on open source software because it allows me to create software I will always be able to use, not leave behind when I switch jobs. Because other people can use it, like it, and occasionally even tell me that. I've learned most of my programming skills from working on Twisted, from working with some of the smartest people I know and getting bug reports, complaints, suggestions and use cases from all of our users.
Certainly I would put my job first, and I would not let my open source development get in the way of my doing my job well. Nor would I work on software that competes with my employer's business. But I am not willing to have my employer determine what I do in my free time.
I'm still looking for a job. Anyone, ideally in NYC or Boston, want to hire me?