Can you contribute code to an open source project?

by Randy Metcalfe on 3 July 2006 , last updated

Introduction

So you’ve written some code

You’ve written some code for a project that you’ve been following for some time. You are participating on the users email discussion list. You have been quietly following the developers email discussion list. You have downloaded the source code found in the nightly build repository, and you have written your first patch for some feature of the code that you think needs tweaking.

Can you contribute this patch to the project?

Source code for software applications is a copyright work. The copyright arises as soon as the ideas are placed in some fixed medium, which could be paper or electronic. Nothing special needs to be done for the code to be protected by copyright.

Copyright holders have the right to dispose of their copyright material as they see fit. This includes licensing it to be used in a variety of ways.

Open source software projects release their source code under OSI-certified licences. In order for your patch to be used in the project, it too would need to be licenseable under the same licence. You could accomplish that by either:

  • signing over the copyright in the code to the project; or
  • licensing the code for use in the project under an appropriate licence

Some projects insist upon the assignment of copyright. That certainly makes things easier for them later when they need to deal with licensing matters. That is just one of a number of possibilities.

Most projects merely require that you license the code you wish to contribute under a licence compatible with the project’s licence.

In either case, the same constraint applies: only the copyright holder has the power to either reassign their copyright or license their copyright material.

Do you have the right to license this copyright material?

Most employees are not in fact the copyright holders for copyright material that is generated as part of their work. This will vary from organisation to organisation, and possibly between job roles within an organisation. Please note: having written this code at home will not, by itself, indicate that you hold the copyright on it; you still need to check your terms of employment.

Whether you are the copyright holder for such material should be spelled out in your terms of employment. If you cannot find anything there, you may want to check any institutional policies, such as an Intellectual Property Rights policy, that are referenced by your employment contract. If you are a student, you will need to check your studentship agreement or university statutes, as your university may claim rights over materials produced during your course of study.

You must establish who the copyright holder is before you go any further (and ideally before you’ve even got this far).

Are you in fact the copyright holder?

If you are in fact the copyright holder for the copyright material that you have generated, congratulations! You can do what you wish with your own intellectual property. This includes licensing it to be used in an open source project. You may even wish to assign your copyright to the project in question, or to the umbrella organisation (such as the Free Software Foundation) that is sponsoring the project.

You even have the right to dual license your code should you wish. This would occur if you were to license it to one person or group under one licence and license it at the same time to another person or group under a different licence. This is possible because the copyright holder can do anything they wish with their copyright material.

If you are not the copyright holder then you must have the consent of the copyright holder for anything you wish to do with their copyright material. Often this is spelled out in your terms of employment.

In order to contribute your patch to the open source project in our example case, the copyright holder needs to explicitly consent to your contribution of its intellectual property. Moreover, it is worth noting that this has no effect upon the copyright itself.

Code contributed to open source projects often remains the copyright of the original copyright holder. In order to sign over your institution’s copyright, a much more formal process would need to be started. This usually involves legal documents needing to be exchanged, passing the copyright from one party to another. This can be an onerous process. As a result it is much rarer.

But even if copyright is not being reassigned, consent must be obtained before the code can be contributed to the project. Furthermore, you may also be required to provide this consent in the form of a contributor licence agreement.

How do you get the consent of your employer or institution to contribute their copyright material to an open source project?

Where to go first

Genereally speaking, there will be someone who oversees intellectual property in your organisation. This may be the legal department, research department, or in a smaller organisation an individual manager. However, it is best to start by speaking to your line manager who should be able to help direct your request to the appropriate person.

If you are in luck, your manager or department head will have been delegated the power to decide such matters. There is a good example of this occurring at Oxford University IT Services.

If you are slightly less lucky, your manager or department head may not have this delegated authority but at least will know the official set of steps that must be taken within your organisation in order to achieve its consent to contribute your patch to an open source project.

This will probably mean approaching your organisation’s legal services department. They would usually need a determination as to the probable value of the intellectual property in question and any liability that the institution may be incurring as a result of this release of its IPR.

Regrettably the steps involved may be numerous, and are almost inevitably peculiar to your organisation. Nor do they guarantee that consent will be forthcoming.

A better way

Forward thinking institutions recognise that contributions of code, whether in the form of patches or even more substantial modules, are part of what is entailed by robust institutional engagement with open source. But how can they best facilitate this process?

For example, when the The Open University embarked upon the choice of Moodle as its future virtual learning environment (VLE), it also established how it would engage with Moodle’s ongoing development. The result is a substantial, but quantified and contained, investment in open source development. The Open University’s contribution of its intellectual property to the Moodle project doesn’t merely make Moodle stronger. It stands as an example of good practice in institutional engagement with the open source community.

Another example is the way University of Cambridge became involved in the Sakai partnership program. In the early stages of Sakai the main focus was on creating an administrative framework for the consortium of educational institutions involved in the project. The main aim was to ensure that the software releases were produced on time and according to an agreed list of priorities. However during a number of Sakai pilots it became evident that coordinating institutional contribution to the development of the code was only secondary to the overall sustainability of the project. Cambridge and other partners understood that building a community around the shared code was actually more important, and as a result of their efforts in this direction the project moved to a more open development model.

There are other examples of similar institutional engagement taking place in organisations across the UK. We would love to add your example to this article. Please write to us at [email protected] and tell us about it.

Further reading

Links * Moodle [http://moodle.org/] * Press release announcing The Open University take up of Moodle [http://moodle.org/mod/forum/discuss.php?d=34002] * Sakai [http://sakaiproject.org/] * How to Participate in the Linux Community [http://www.linuxfoundation.org/content/how-participate-linux-community]

Related information from OSS Watch