Skip to navigation
Real World Computing

Who owns the code?

Posted on 18 Jun 2010 at 17:44

Contract developers save Kevin Partner from a digital lynching, but open source software could be the key to his long-term survival

My recent column “Paying for code doesn’t mean owning it” kicked off an interesting debate, which to begin with felt like a digital lynching with comment titles including “You wouldn’t work for me” and “This is a shady practice”.

Other people weighed in to restore some balance, though, and broadly speaking the developers sided with my point of view and the clients against it. Not surprisingly, given the complexity of the issue, there was misrepresentation and misunderstanding of what I’d said.

It isn’t fair is for the client to benefit from my library code via reduced costs, then also expect to own that code

To recap, I’ve created a set of standard libraries that are embedded in a number of my clients’ web applications, and I can’t sell exclusive ownership of that code to any one client since that would also confer ownership of, say, 25% of the code of other clients’ applications.

However, my toolkit code is object-oriented, so the fact that no client owns an unencrypted version of the source doesn’t prevent them amending or updating the custom parts of their application – they can simply replace a call to one of my objects with a new method. Most clients are happy to enjoy the benefits of this library without needing to own it.

In that column, I pointed out that the intellectual property rights to code I write for clients under contract remains with my company even after the client has paid, but in practice I’m happy to agree with the client to hand over the source so they can change developers if they wish: this might include a formal transfer of ownership of the unique parts of the code, or simple agreement to share ownership. What isn’t fair is for the client to benefit from my library code via reduced costs, then also expect to own that code.

I’d be the first to agree that contracts are a good thing, but if a client needs the job within, say, three weeks, it isn’t sensible to waste the first two in contract negotiation.

My standard practice was to draft a “letter of understanding” that states what’s been agreed, but sometimes there isn’t even time for that. In my experience, being reasonable, prepared to compromise and acting with integrity all influence the success of a project more than the most watertight contract, but even so I’ve decided that proceeding without one is no longer viable, having just been shafted by a client who refused to pay their final instalment (even though in this case a contract did exist). I shall be much tighter on this in future, even if it means losing the job.


So what’s the answer? I can think of several, the first being to replace my in-house library with a third-party open-source framework. For PHP projects this might be CodeIgniter, and I now use this in all new projects.

1 2 3
Subscribe to PC Pro magazine. We'll give you 3 issues for £1 plus a free gift - click here
User comments

"the problem is that the existing code is licensed to clients already and can’t be open-sourced without their permission"

It is fine (and indeed common) to make code available under multiple incompatible licenses.

At least, I assume that your clients aren't really insisting on a "you cannot open source any of this code" clause in their contract?

also: please ask your web team to get rid of that tynt nonsense. and make the comment box larger.

By robtoo on 18 Jun 2010

Incompatible licences

It's not really fine to release your code under agreements which aren't compatible. It means that your obligations under one agreement conflict with your obligations under another one. It means you're stuck. Try to avoid doing this.

By steviesteveo on 24 Jun 2010

Need to address the fundamentals

Having read both articles and comments I think there are three fundamental issues:

Firstly, it seems that you don't have a standard set of T&C's that are attached to any "letter of understanding" you may draft, a practise that is generally frowned upon. If a client wishes you to proceed 'yesterday' then at least commence work with minimual contract cover with the "letter of understanding" being T&M based agreement with a report/specification as the deliverable. Over and above this, you may take the risk and incur the cost of commencing manufacture of software during this time, but no software is actually delivered until such time as a contract is signed (in the ideal world, you complete the development before the contract is signed and so deliver a product to its first customer complete with a price tag fully reflecting the risks and costs of development and the value of rapid delivery!)

Secondly, it seems that many software people are under the false impression that their standard libraries are part of their 'toolkit', this is totally wrong!

Taking your analogy of the plumber, if you take a look in their van, you will see that they carry around TOOLS and STOCK PARTS. In completing a job such as replacing the kitchen tap, a plumber will: with the customers involvement purchase a new tap, secondly they will fit it using their tools and stock parts as necessary to join the new tap to the old water pipe. When the plumber leaves, you are left with (the bill) a working tap and associated installed parts that you now own and can do what you like with, additionally, the plumber will has assigned to you any manufacturers warranties associated with the parts supplied and added their warranty. Translating this into software, you can see: your computer(s) and SDE are your tools and to some extent your van, your standard libraries are your stock parts (which may be stored within your SDE/van) and the tap a COTS package.

Taking this approach, you can now correctly account for and price the maintenance and use of your libraries, which in turn will lead you to selecting an appropriate licensing strategy for them, which in turn will feed into your standard T&C's.

Thirdly and finally, you are now in a better position to determine what it is that you are actually delivering and its value: Are you just providing a body shop or are you delivering a solution/product to it's first (and maybe only) customer? The outcome of this thinking will reflect not only in your pricing and standard T&Cs, but also in the way you package your deliverables along with the ownership and disclaimers on them.

You only need to look at the history of Microsoft/IBM DOS to see the importance of getting the IPR and Commercial exploitation clauses right. Also major package vendors will contract for installation and configuration/tailoring of their package, even though such configuration can include the development of substantive amounts of software.

Having established you standard T&Cs, you now have a defined starting point in any customer negotiations.

By RBell6 on 13 Jul 2010

Leave a comment

You need to Login or Register to comment.


Kevin Partner

Kevin Partner

Kevin is a contributing editor to PC Pro. He's managing director of NlightN Multimedia, a Milton Keynes-based company specialising in web application development and internet marketing.

Read more More by Kevin Partner


Latest Real World Computing
Latest Blog Posts Subscribe to our RSS Feeds
Latest News Stories Subscribe to our RSS Feeds
Latest ReviewsSubscribe to our RSS Feeds


Sponsored Links

Your email:

Your password:

remember me


Hitwise Top 10 Website 2010

PCPro-Computing in the Real World Printed from

Register to receive our regular email newsletter at

The newsletter contains links to our latest PC news, product reviews, features and how-to guides, plus special offers and competitions.