• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 412
  • Last Modified:

Source Code Management System for GPL code


I am looking for a system, preferably open source, that will help us manage code that is GPL and code that isn't. We are designing a fairly exhaustive hardware product that will rely heavily on open source code, but will also contain proprietary non-open source code.

We want a system to help keep track of the two, preventing us, for example, from putting proprietary code in GPL files. We want to maintain a clear delineation between the two. This will also help so when we receive a GPL request, we can easily furnish everything that is needed in a timely fashion without pulling our our hair trying to navigate hundreds of thousands of files to determine what we should and shouldn't provide.

Is there any sort of a code versioning tool that can maintain a separation between GPL and non-GPL code?

Joseph Irvine
1 Solution
git e.g: http://git-scm.com/ ?

Any SCM will help you. I'd try them and see what I'd like most.
On Windows I've used successvully TortoiseSVN, TortoiseHG etc. I'd not so good experiences with the RCS from Microsoft....

Versioning tools don't look at the license details of individual files.
So, you will have to write a script, which can read the license information, identify the GPL license and take necessary action.
evilrixSenior Software Engineer (Avast)Commented:
Why not just have more than one repo? One containing the open source and the other your code?
Cloud Class® Course: Python 3 Fundamentals

This course will teach participants about installing and configuring Python, syntax, importing, statements, types, strings, booleans, files, lists, tuples, comprehensions, functions, and classes.

Are you using GPL code or another licence similar to GPL?  If you're using the GPL licence, then you have to be careful.  If you are building any GPL code into your final executable, then all your proprietary code becomes GPL as well.  The only way you could use GPL code and maintain some proprietary code would be if the GPL code was a seperate executable and not linked in any way to your proprietary code.

Extract from the GNU GPL FAQ explaining how you can use GPLed code in a proprietary system:


However, in many cases you can distribute the GPL-covered software alongside your proprietary system. To do this validly, you must make sure that the free and non-free programs communicate at arms length, that they are not combined in a way that would make them effectively a single program.
Any SCM can be used to manage both proprietary and open source files. With git, which I recommend, it is very easy to create multiple repositories, as @evilrix says.  As @ssnkumar says, an SCM, out of the box, will not prevent you from putting code in the wrong place.

Some SCM's will allow you to write scripts which can scan the source before it is checked in.  You can add one of these scripts to the repo containing your proprietary source and have the source look for copyright notices or other indications that it contains open source.  This will catch adding open source code which contains copyright or license notices, but will not catch cut-and-paste of open source code into proprietary software, which seems to happen pretty frequently.  

To catch this, you can run an audit program (such as the one that Black Duck Software sells http://www.blackducksoftware.com/) to insure that your proprietary code does not contain any open source code.  
Plastic SCM is very flexible
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: C++ 11 Fundamentals

This course will introduce you to C++ 11 and teach you about syntax fundamentals.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now