Whenever a coolie starts writing code – it’s based on the shoulders of other coolies work (frameworks, libraries, services etc.). For this reason, it’s very important to understand – if you can actually reuse that work in some form? or are there restrictions which the original author can enforce? are they legally abiding? It’s very important to understand these before taking a decision about reusing code within your systems.
Developing software falls under the purview of intellectual property. An intellectual property could be a copyright, patent, trademark or a trade secret – its important to understand the differences in them.
What is a Copyright?
In order to motivate the creation of content , government authorities grant creators (authors) a temporary monopoly on distribution of their work – called copyright.
Example: Books are covered by copyrights. You (a reader) can – read it as many times as you want, but cannot make copies to redistribute to friends. Its copy-righted. (copy-protected).
It’s actually funny to think of copyright in certain instances. The reason for copyright to exist was to regulate *distribution* of content – but not on how it is consumed.
So – when we say a book is copyrighted – it gives the reader the right to read it – but does not enforce that he should read it only when at home! On the other hand movies on VCD’s, DVD’s are sanctioned copyrights for home use but not for public viewing!
So a software or a piece of code is copyrighted?
A source code is copyrighted by its authors. (even if they do not register for the same).
A author of that work can decide to redistribute that code if she wants to. This is where licensing of software kicks in.
A Software License !(?)
It documents the contract between the creator of software and the user.
There are 2 broad categories in which one can separate them
a. Proprietary – Constrained from certain types of use, modification etc.
b. Free / Open Source – right to Freely use, copy, study, change, and improve its design.
What is OPEN SOURCE?
Open Source has 3 key traits
– Software is freely available in source code format
– Ability to modify software
– Redistribution cannot be prohibited / royalty charged
(OSS community is sensitive about meaning and use of the term) Ex: OSI, FSF and Free Software.
What are the various software licenses?
Amongst, the thousands available following are quite widely used
GPL – GNU General Public License, LGPL, EPL, MPL etc.
Mozilla Public License
(This gives a good overview of major software licenses that are available.)
Yikes. What are they? How are they different?
Different licenses reflect differences in objectives.
Example: GPL (often referred to as copyLeft)
– All software should be freely available
– Redistribution of binary code must be governed under GPL
– Requires free availability of all source code and its modifications.
It is natural for any coolie to get lost in these legal terms and be overwhelmed by the information. But, at the crux understand these points
If you are using existing works of code. you need to ask these questions ..
a. Can I use it in my code ?
b. Can I derive / extend that code ?
c. Can I distribute that code to others – packaged in my code?
d. Would I have to make the source code available to others if I do (c)?
This article touched the basics of software licensing.
Following questions would be covered in detail in the following parts.
- As a developer how should I distribute my code?
- Differences between GPL, MIT, BSD, Apache