Protecting & Promoting Open Source Software in A Contract
I’ve got an interesting question that I have no answers to yet:
How can I protect Free and Open Source Software (FOSS) development while working as a contract programmer?
Specifically, how can I promote the development of small libraries like Ruby Gems and make sure that it is both understood, accepted, and most of all legal?
Using Free Stuff, Is It “Take” Only?
I’m not talking about stealing intellectual property from a client and throwing a GPL on it, of course. But there’s an interesting responsibility that I feel when I program. It comes down to the fact that nearly everything I use to build things for other people is FOSS.
When I create a web application for a client, I don’t take a bare-bones language, create protocol definitions, develop libraries and build an application framework from the ground up, and then use that to build the web application. It would take years, and hundreds of thousands of dollars to do that!
The thought is insane. Rather, I can use Ruby on Rails, and have a fully functioning web app in minutes, then I spend my time focusing on the specific business logic that this particular client needs.
The result: The client has saved large amounts of time and money because of the availability– and quality– of Free and Open Source Software.
Given this, shouldn’t it be obvious that honoring, allowing, and even promoting the development of FOSS is not only a moral imperative, but a financial one?
The improvement of this huge library of awesome, free stuff benefits not only 14-year old basement programmers, but also the company, and all companies. Even the economy.
Ask yourself: What would Web 2.0 be without well written, robust, easy and– most of all– free and open source web application frameworks. In short: where would we be without PHP?
Answer: We would be in 1994, editing HTML by hand and spending 6 months hooking the site up to a database in C.
How to Give Back?
But the question is this: How do we give back, given that our working contracts are (and should be!) essentially Intellectual Property Assignment Agreements? How do we make it acceptable, and legal, to pull out the “this is something everyone should have” parts from the “This belongs to us, and screw the world” parts?
As an example, let’s say I am developing a website for a client and find that it would be nice if there were a Ruby Gem or a Rails Plugin containing all of the US City Names to use in a drop-down. That way, I don’t have to worry about someone typing in “New Yrok” or “Philadelfia” and screwing up my database.
Now, this isn’t something that’s core to the functionality of the application. In fact, it’s not even really ancillary to the application. It’s really just nothing more than a necessary chore to get done so we can get to the cool stuff.
Can I say “alright, this is something that everyone should have?” and create a library of US City names, package it, throw an MIT license on it, push it to my Github account, and then start working on the project again?
Am I helping my fellow programmers, but breaking the law?
The outcome of such techniques, from my perspective, is not only improvement for the FOSS world as a whole, but an improvement for my client, and business, in particular, because the fact that FOSS is available is what makes this project doable in the budget we have.
But, is this legal? Software contracts generally say “Everything you create while working for X company that is related to the project for which you are working for is the exclusive property of X company.”
In short, in our contracts, it’s all a “This belongs to us, and screw the world” part.
The OSI Exclusion
Legal documentation contains a lot of boilerplate, I’ve signed a fair share of contracts, and certain paragraphs are so similar as to be almost identical. Thus, it seems likely that we can come up with something that can be amended to our contracts to provide room for developing open source components.
I’d like to see an “OS Exclusion Clause” in contracts. It has to be something that still protects the company, of course. It could suck royally to create and bundle in a GPL library that makes the company’s entire application open source. But it seems we could do it. Maybe it would look something like this:1
Exception to Assignments. I understand that the provisions of this Agreement requiring assignment of Inventions to the Company do not apply to: 1) any invention that the employee developed entirely on his or her own time without using the employer’s equipment, supplies, facilities, or trade secret information and 2) any invention that the employee developed as a Free and Open Source Software (FOSS) component and provided under a license approved by the Open Source Software Initiative (OSI) provided that the following conditions apply: a) the employee inform the Company of such intentions in writing prior to invention development; b) the invention was developed under condition one (1) above or the Company agrees that such invention shall be developed as a FOSS component with an OSI approved license; and c) the OSI approved license is such that it grants the required rights to the Company in a non-exclusive manner.
Coda
I don’t have an answer to any of this, but I’d like one. I’d like FOSS to have status– legal status– in our daily work, and I’d like companies to appreciate their responsibility to return to that community that they’ve gained, and are leveraging, so much from. Even so, we consultants need to respect the company’s needs for intellectual property protection.
I believe we can come together on this.
- I’m not a lawyer, I don’t know if this will fly because I made it up on the spot. Don’t use it, but maybe we can build on it [↩]



Leave your response!