What to do when developers take code snippets with them

When developers carry toolboxes full of code from job to job, intellectual property implications get hairy

Every good carpenter has a box of tools he carries from job to job: a hammer of just the right weight, a selection of drill bits, and so on. As he gains experience, his toolbox gets heavier with new, and sometimes specialized, equipment. Similarly, programmers accumulate their own tools as they move from job to job, but these tools are digital and often include snippets of code written over the years.

And that can create a problem, says Vishwanath Venugopalan, an enterprise software analyst with the 451 Group. These snippets are often reused unintentionally in a simple cut-and-paste operation without full knowledge of their former or current company's intellectual property (IP) policies. What's more, "the ubiquitous availability of code snippets in blogs and online tutorials poses a bigger risk to intellectual-property hygiene in a company," Venugopalan says.

Although the problem of IP pollution is probably greater in the open source world, the growing popularity of modular, reusable code (think about Salesforce.com's AppExchange) creates headaches for users and developers of commercial software as well. And that, in turn, is creating a business opportunity for a handful of specialized software companies, including Black Duck Software, Palamida, and most recently Protecode, a startup based in Ottawa, Canada.

Interestingly, none of the three major players in this niche are open source.

Protecode is a plug-in to the Eclipse IDE that detects and logs the content entering a software project, and then checks it against an online database called the Global Intellectual Property Server, or GIPS. That's much easier and more accurate than relying on memory and manual record keeping. Companies can set policies to restrict the code that can be brought into the project based on the license type (such as to restrict GPL code usage). If a programmer uses code that isn't yet licensed by the employer, Protecode will create a bill of materials needed to comply with licensing provisions.

Because Java, C, and C++ code can be developed in Eclipse, the product's integration into Eclipse lends its support for these programming languages. Protecode has indicated that Visual Basic support might be in the cards as well, says Venugopalan.

More about BillEclipseHewlett-Packard AustraliaHPSalesforce.com

1 Comment



Where is the line drawn?


Interesting article about how developers take code from one company to the next. Of course any kind of copying of code is an automatic infringement on copyright, but there is a far more insidious implication that goes unnoticed in your article.

Lets say I work for company A, and they ask me to build something for them. As part of what I create I use a certain technique that I find works very well. I move on to company B who ask me to build something for them. I find that the same technique I used with company A would work just as well for company B....

What do I do?

Do I avoid the technique altogether because it would infringe on the IP of the company I was at when I created it? Do they own the technique itself or just the implementation? If I use my memory to re-code using the same technique (ie no direct copying of code done) am I breaching their IP? Or am I wasting company B's valuable time and resources by re-inventing the wheel the 10th time over by trying to use my memory to reconstruct the same thing I have created everywhere else?

You could look at two implementations using the same technique and see they were not copied, yet you could see similarities that are significant enough that some people may say its the same thing. Is it considered a pattern and thus not copyrightable? Do I call it MY pattern and put my own patent on it to stop others from using it? Can I put a patent on something which is a technique for doing something?

While some of these techniques may be broad enough to be non-specific (Factory, Controller, Facade, etc), other techniques are fairly specific yet highly re-usable across projects. As a developer I keep seeing a need for a certain implementation, so I keep re-inventing the wheel everywhere I go. Does intellectual property cover the "nuts and bolts" of programming or the use of it as a whole?

I can't help but feel that I am wasting their time by repeating the same thing over and over again when I already know the generic one I created previously already works. What if the new version of it that I coded from my mind misses some vital component? Am I not doing more of a disservice to the customer by NOT re-using code that I know has been tried and tested over and over again by creating something that tries to use my memory to reconstruct the principle?

Surely having a "toolbox" of useful code snippets which you know as a professional is already well tested and encapsulated, as well as being suitable for the purpose is a benefit to any company you bring it to. What I fear is that I do this "favour" for a company, and in return they try to take it off me by claiming it is now their intellectual property, when in reality I could have saved several hours of their time by not re-coding it from memory and costing them money in the process.

Comments are now closed

Intel planning thumb-sized PCs for next year