Source Code Management System for GPL code

Posted on 2011-10-10
Last Modified: 2013-11-13

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
Question by:jkeagle13
    LVL 24

    Expert Comment

    git e.g: ?

    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....

    LVL 8

    Expert Comment

    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.
    LVL 39

    Expert Comment

    Why not just have more than one repo? One containing the open source and the other your code?
    LVL 6

    Expert Comment

    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.
    LVL 8

    Accepted Solution

    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 to insure that your proprietary code does not contain any open source code.  
    LVL 24

    Expert Comment

    Plastic SCM is very flexible

    Write Comment

    Please enter a first name

    Please enter a last name

    We will never share this with anyone.

    Featured Post

    How your wiki can always stay up-to-date

    Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
    - Increase transparency
    - Onboard new hires faster
    - Access from mobile/offline

    This is an explanation of a simple data model to help parse a JSON feed
    This is about my first experience with programming Arduino.
    The goal of this video is to provide viewers with basic examples to understand and use structures in the C programming language.
    Video by: Grant
    The goal of this video is to provide viewers with basic examples to understand and use for-loops in the C programming language.

    759 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    14 Experts available now in Live!

    Get 1:1 Help Now