TimeLinux1

Monday, December 16, 2013

Software Licensing Terms and Meanings

Free Open Source Software Licensing Terms and Meanings.

Note: The following discussion is based on my personal software industry experience and observation. This is not a legal advice. Any comments/corrections/suggestions for improvements are welcome.

In context of Computer Software:

Copyright = Owner has Exclusive ownership of work. No one else does. Copyright is automatic--ie, if you write an original software program, create an original art, write a new book, etc, you are automatically the default Copyright owner of the that work. You dont have to apply for your Copyright (unlike Patents). You can do whatever with it. You can patent it (and make it exclusive) or you can free it by allowing others to freely copy/replicate your work (this is what Copyleft attempts to do--see below).
Patent = Superset of Copyright in terms of restrictions. It disallows even 'similar' works attempted by others. You have to apply for it with the Patents office for it. It gives you exclusive rights over your work. You can legally sue anyone who tries to copy it or steal it.
Public Domain =  No copyright. No one person owns it. Everyone collectively owns it. No cost. (Think of a public road or park).
Free s/w = Source Code + Binary. NOT no cost. Although it can be granted for no money..(IF the software Copyright owner so desires).
Note: Software in Public Domain is essentially Free s/w. It can also be made closed.
Note: this is because NOone owns Public Domain s/w. It is 'use it as you like'.

Copyleft = Copyright + Copyright owner Frees it (ie source code + binary) using a Free software license (like GPL, Apache, etc) + All Derivatives required to be Free (ie source + binary)
Note: FSF and GNU encourage Copylefting. They dont encourage Public Domain s/w. This is because Public Domain s/w can potentially be turned closed (use it as you like) where as Copyleft s/w can NOT be closed.

Note: NOT all Free s/w (in Public Domain) is Copyleft. Copyleft is Free s/w with that cannot be closed. (eg X Windows is Free but not Copyleft). infact, many Free s/w licenses like Apache, Mozilla, MIT, LGPL etc are NOT Copyleft. This means that s/w (or their derivatives) under such licenses can be turned into closed. This is what Android and ZFS are.

Specific Cases:
GNU GPL v2 and GNU GPL v3 are BOTH Copyleft Licenses.
GPLv3 is more restrictive in that it forbids only a certain version of Copyleft s/w to be run on a certain h/w.
In other words, GPLv3 says, end user can run any version of a Copyleft s/w on a certain h/w.
This is in response to DVR maker TiVo who allowed ONLY a certain version of their Copyleft s/w to run on their h/w. Under GPLv2, this would be ok--because GPLv2 only mandates s/w being Free+Copyleft--it doesnt talk of what hardware it should or should not be run on.
GPLv3 is designed to prevent DRMs.

DRM = short for Digital Rights Management.
DRM comprises of  Digital signatures placed in h/w &/or s/w (Free or Closed) to restrict what h/w a s/w can run on.
DRM is used by hardware vendors to control what software runs on their hardware.
DRM is used by software vendors to control what hardware their software runs on.
DRM is essentially not CopyLeft. It is extreme CopyRight.

Tuesday, December 3, 2013

Business Legal Musings - 1



Some commonly used Business Terms regarding Intellectual Property:

Invention = Any new Idea or Creative work or improvement in existing product/idea.
   eg: A new recipe for Ketchup.

Intellectual Property = An Invention legally owned by Inventor.
   eg: Inventors copy of the recipe for the Ketchup with legal evidence to show ownership.

Patent = Exclusive legal right to own and use an Invention.
   eg: Legal Evidence & Acknowledgement by Patent Office to the Inventor of the Ketchup's Recipe.
Note: Patents Expire. Usually granted for 15-20 years.
Note: Patents are usually for Design/Technical/Science related IP. 
Note: The equivalent term for Patents For Artistic IP (eg Music, Literature or Recipe) is Copyright. Like Patents, Copyrights too expire after certain time but usually after longer time(70-100+ years).
Note: The concept of Patents is a superset of Copyright in terms of legal rights.
   eg: whereas copyright will protect against verbatim copy of the Ketchup Recipe (ie Plagiarism) it wont protect if there is minor differences in the wording of two recipes. 
   Patent will actually prevent anyone but the IP owner to even attempt to make a similar Ketchup Recipe.
   This is especially true in case of Computer Software Patents.

Innovation = Popularizing an Invention usually through Marketing, Sales & PR.
   eg: Mass production and sale of the new Ketchup.

Trademark = A Symbol for an Innovation (for exclusive use by someone).
   eg: a logo for the Ketchup.

Royalty = Fee paid to the Inventor or Innovator for sharing their Intellectual Property.
   eg: Fee paid to the Inventor or Innovator to gain access to their Ketchup Recipe.

Public Domain = Public property; Allowing Unrestricted Access to an Invention/Innovation.
   eg: Once the Ketchup Recipe Patent (or rather Copyright) expires, the Recipe becomes Public Property; i.e., Royalties no longer need be paid for using the Recipe.

Sunday, December 1, 2013

Pointer Refresher in C Language:

Here is a short Pointer Refresher in C Language:

-pointers: variables that hold the 'memory address' of another variable
-They are declared using '*' operator and initialized using '&' operator.
-eg:
$ cat -n ptr0.c 
    1 #include <stdio.h>
      2
      3 int main()
      4 {
      5 int num;
      6 int *pnum; /* pointer declaration */
      7 pnum=&num; /* pointer initialization */
      8 num=57;
      9 printf("\n Value of variable num = %d.", num);
    10 *pnum=23; /* indirect invocation of value of variable num via pointer */
    11 printf("\n New value of variable num = %d.", num);
    12 printf("\n The first value was direct invocation of variable.");
    13 printf("\n The second value was an indirect invocation of variable, using a pointer.");
    14 printf("\n Good bye.\n");
    15 return 0;
    16 }

-advantages of Pointers:
.allow dynamic allocation of mem /* see '*pum=23;' in above code */
.allow functions to modify calling argument

-void pointer:
.is defined as 'void *pointervar'
.its type is unknown and can thus receive a parameter that receive any type of pointer argument
.in other words, during value assignment, no explicit cast is required.
-see below code for void pointer illustration:
$ cat -n voidptr.c 
      1 #include <stdio.h>
      2
      3 int main()
      4 {
      5 int i=5;
      6 char ch='M';
      7 void *ptr; /* declaring a void pointer */
      8
      9 ptr=&i; /* initialize ptr with an integer var addr */
    10 printf("\n Pointer ptr now points to an integer %d.", *(int *)ptr);
    11 ptr=&ch; /* initialize ptr with an character var addr */
    12 printf("\n Pointer ptr now points to a char %c.", *(char *)ptr);
    13 printf("\n The same pointer was used to point to an integer and then to a char.");
    14 printf("\n This was possible only due to a void pointer.");
    15 printf("\n Good bye.");
    16
    17 return 0;
    18 }
    19