Hi All,

With some trepidation, I've decided to enter into this conversation.I 
think that people wanting to make decision about a topic would like to 
be well informed on the topic -- even when they involve potentially 
emotional/religious topics (like licensing).

I've decided to offer for your consideration some licensing related 
information about portions of LCNC, as I've come to understand it.I will 
then finish with a pragmatically oriented suggestion for a course of 
action (and it does not involve legal hoop jumping).

I'll start off with the obligatory IANAL. However, I can convey my 
understanding of what I've learned as the result of explicitly 
discussing this topic with people that are real licensed, working 
members of the Bar in California. The content herein reflects my 
understanding of some key parts of the reality of the historical 
licensing situation wrt to EMC/EMC2/LCNC software.

When I ran biz dev organizations, I learned that when folks talk about 
needing a "solution" to something, it can be enlightening to ask what 
the problem really is.It's troubling that I can't make a crisp statement 
of what this community thinks the "LCNC licensing problem" is. The best 
I can do is infer the problem from what I've read, and presume that the 
good folks on this list will correct/refine the problem statement as 
necessary.

As I've read the mail lists for the last several years, I've noticed 
that the talk of "licensing issues" often focuses on various aspects of 
mixing GPL v2 and v3 licenses. That makes me think the perceived 
"license problem" is:

There are incompatibilities between some combinations of GPL license 
revisions. A perceived negative impact of this is that it potentially 
prevents LCNC from using some software tool kits.

The "solution" discussions include notions of "changing the license used 
for LCNC".The unstated assumption is that LCNC is currently covered by 
some flavor(s) of open source license, (specifically the GNU General 
Public License varieties: LGPL. GPLvX, etc), and thus the solution talk 
tends to focus on GPL sub-versions.

Any issues arising from use of a mixture of GPL flavors (v2, v2+, v3) 
can only be a concern for things covered by a some type of GPL license 
to begin with. Thus the recurring GPL licensing discussions could be a 
concern for parts of LCNC (but not for other parts).

Let's start with a simple model and think of the LCNC source base to be 
composed of 3 "chunks" (in layer order):

1: Axis GUI

2: CNC Core (derived from NIST)

3: HAL

Taking them out of (layer) order:

1: Axis is pretty clearly GPL licensed.

It was an original work, and the authors choose to release it with a GPL 
license. No controversy there that I'm aware of. If the axis GPL terms 
are acceptable for you, you can use it, if they aren't, you don't.

3: HAL is mostly LGPL with a bit of GPL mixed in.

I understand that the bulk of the code was created and released under a 
LGPL license. Over the years, it appears a few additional HAL parts 
(some components) were created and they have been labeled/released as 
GPL. Personally, I suspect that license choice for the GPL parts was as 
much a matter of simply saying "GPL" in a generic fashion (like saying 
Kleenex for tissues, or using "Xerox" as the verb for photo copying) as 
much as it was a matter of careful legal thought and decision. I'd also 
guess that the LGPL/GPL mix within HAL could be resolved with a 
tractable amount of effort. Personally, I think it would be good if HAL 
were a layer that was consistently LGPL.

The situation with the CNC core (#2 group) is not as simple. This layer 
represents the bulk of the code that constitutes the CNC part of LCNC. 
In this category is all code that was released by NIST.

The legal conditions for the code release from NIST are determined by

a)USA federal law, and

b)The CRADA agreement (that Matt Shaver worked out with NIST).

Before we get to far ahead of ourselves, let's take a quick look at 
"copy rights" as this is crucial to understanding the basis of software 
licensing.

When an author creates a work, the author has (owns) certain rights in 
that work. These rights attach at the moment of creation. An author does 
not have to do anything additional to establish their rights. What are 
referred to as "copyrights" are actually a set of rights under law that 
an author has as of the instant of creation. Some examples of copy 
rights are the right to allow copies, rights to make derivative works, 
and rights of performance.

When a software author decides to allow others to utilize their work, 
they are granting a subset of the author's (or the current owner's 
rights if the author transferred them) rights (often with 
restrictions/conditions) to other people.The author does not loose their 
rights when making such a grant. Licensing some rights does not require 
transfer of ownership of the rights being licensed.

GPL licenses (of any version/flavor) are simply examples of a set of 
conditions under which an author has granted some rights.It is important 
to understand that such a grant of rights can only be done by the owner 
of the rights being granted. For example; Tom can't grant Bob rights to 
Frank's works unless Tom actually owns the rights to Frank's works.

In Matt's post (June 7, 2013), he drew attention to section 5.3 of the 
CRADA (reproduced here for ease of reference):

"5.3*_Subject Data._* All research results and Subject Inventions under 
this agreement, including subject data and implementation agreements, 
will be available in the public domain and shall not be copyrighted or 
patented, and NIST has the right to use such data for any government 
purpose."

This explicitly states that the EMC code from NIST is not subject to 
either copyright or patents. That condition is consistent with my 
understanding of various applicable aspects of federal law concerning 
copyright of works developed by the US government (many such works are 
not subject to copyright by statute).

For whatever it's worth to readers of this, I've discussed this topic at 
some length with two different, very respected senior lawyers, from two 
different firms, both of whom specialize in IP law, one of whom also 
specializes in open source software licenses.

I am told that no copy rights (the space between the two words is 
intentional) exit for any of the EMC code that came from NIST. The EMC 
NIST code release was, and is, in the public domain. No author's 
copyrights have ever applied, nor ever will, nor can be applied to that 
code. This is a true public domain situation, there is no owner of 
copyrights for the NIST code.

Note: This is not the same as an individual creating something, then 
saying "anyone can do anything they like with this code". That would be 
a situation where the author has granted unrestricted rights to anyone. 
Here there is still an owner of the copy rights and the owner of the 
copy rights can do anything with those rights that the law permits 
(including granting unrestricted usage). Making an unrestricted rights 
grant does not put the work into the public domain.

The public domain, non-owned situation wrt to NIST EMC code applies to 
whatever legal structure currently exists (or does not exist) for the 
loosely operating"EMC/EMC2/LCNC" organization. It will also apply to any 
governance organization that might be invented. No such entity will be 
able to own or control the #2 blob CNC Core code.(If you should 
personally not like that reality, please refrain from blaming the 
messenger for the message...)

Now remember that license rights can only be granted by the owner of the 
underlying rights. There is no copyright owner for any of the code from 
NIST, and a GPL license is a grant of rights by the owner of those rights.

I have been told that legally, a GPL (or any other type of ) license can 
not be applied to any of the EMC code created and released from NIST. 
Please note the use of the phrase "can not" -- literally in this sense 
it means "it is not possible" or "there is no ability to".

So what about the comments in a lot of the LCNC files?

When you go back and look, you'll (unsurprisingly) find that the NIST 
source files did not have GPL statements in them. At some time in the 
past, many NIST source files were edited to add comments about licensing.

One common comment added is that the code is "derived from a work by 
Proctor and/or Shackleford" (or similar wording) and that is true: the 
code was created in NIST by the people mentioned (and others), while 
they worked for NIST.

These same source files also contain comments that claim the contents of 
the file are licensed under a GPL license. Counsel tells me those 
comments are at best wishful thinking. For better or worse, no matter 
what anyone may want or wish, asserting a GPL license status for the 
NIST code does not make the existence of GPL license conditions true.

I suppose that about now some readers will be raising their hands and 
saying "...but I own characters 3 , 14 and 27-54 on page 12 of file XYZ 
and all of page 13 as I wrote those lines!".Such a reaction makes some 
assertions about the granularity of ownership of code source etc.

I asked the lawyers about this situation. A programmer's intuitive 
notion of "lines of code" is not relevant from the legal viewpoint.The 
legal question involved (paraphrasing) is "At what point is a derivative 
work sufficiently different from the original that it would be 
considered a work that is independently / separately copyrightable?".

Frankly, we could all assert a personal opinion about the answer to that 
question, and have some debate over whose personal opinion is "best"; 
but it would not really matter.

I'm told that this legal question has no objective, quantifiable metrics 
in case law that can be used to predetermine the amount of change that 
is required. So we can't look at a file and determine "this one is" or 
"that one isn't".The question only gets answered on a case by case basis 
by a jury, and then the answer is likely only for that specific case.I 
gently suggest that one avoid this particular intellectual rat hole.

All this leads me to think that worrying about creating a LCNC 
governance structure to address license issues and/or fretting over the 
impacts of using GPLvX licensed code with any of the LCNC code that 
originated from NIST, seems (at least to me) to be a rather fruitless 
exercise.

Should everyone panic and raise a loud hue and cry? Well, if it will 
makes anyone feel better, go ahead. Be advised that doing so won't alter 
the reality of the situation (and some (at least myself) probably won't 
be paying attention until the emotional venting is completed ;-).

"But we need to do something!"... Do we really?

Matt suggested that "we" (the larger community) could start a new 
(untainted, born from a virgin?) project and sort of move code over as 
it is (re)created. That has generated talk of "agreements with all 
contributors" etc.I don't see this as a viable approach and I also don't 
foresee that yielding a "license solution" in any time frame that is of 
practical interest.

Let's explore the ("one license to rule them all, all one license to 
find them, one license to bring them and in the darkness bind them..." 
apologies to Tolkien, I could not resist) approach as a "what if"....

Someone gets to create a legal entity (a legal entity/person is needed 
to hold ownership of the rights to the new thing). The entity could 
maybe acquire (I think I'm being optimistic here) non-exclusive use (but 
not ownership) of Axis (but not the EMC derived GUIs) and HAL. Just 
getting that done would be a significant project. The new entity can not 
(has no ability to) gain ownership of the #2 set of stuff. So this new 
entity now has a GUI and a HAL layer, but no core CNC functionality to 
connect the two... that combination seems of little practical interest. 
Further suppose that the members of this entity set out to recreate the 
CNC Core stuff from scratch... Clean room approach?How long will that 
take (even without the clean room)?

My answer is "longer than the probable attention span of the volunteers 
in the LCNC group".

Frankly, I'm thinking that a pragmatic approach would be to use a bit 
more of the "don't worry, be happy" philosophy wrt to licensing and 
instead steer community effort to improving the CNC Core code.

When I think about what single initiative would most benefit LCNC as a 
project, I end up with:

**

*Build LCNC community consensus around an updated code architecture for 
the CNC core (blob #2) which is modular, with well defined module 
interfaces (probably message passing based), and then transition to this 
gradually (and steadily) over time. *

IMHO, the single biggest barrier to LCNC contribution is the monolithic, 
intertwined code blob that makes up the LCNC core code. On a part time 
basis (perhaps even on a full time basis) it's hard to wrap one's brain 
around enough of the code in sufficient details to be confident that a 
change will not break some other part that seems (should be) unrelated.

If the code base were consciously evolved into smaller independent 
modules, it would be easier for a potential contributor to learn a 
module and improve it. That would increase participation and be good for 
the overall health of the project.

[Side bar: If messaging tools are used to define module interfaces, this 
also starts to whittle away (over time) at the perceived license issues 
(messaging layers are net connections, not compile time linkages). 
Modularity also can create "license issue isolating sand 
boxes".Modularity with message passing interfaces is a technical 
approach that improves both the technical aspects and the license issue 
aspects of the LCNC project. ]

Increased modularity will not happen by the wave of a magic wand and it 
won't happen by accident.I think there needs to be an architectural plan 
to get from here to there over time. I also think that such a plan needs 
to have good consensus (that word was used above on purpose; a wagon 
moves better when all the animals pull in the same direction, or all the 
wood is behind one arrow, or whatever industry phrase you prefer) if it 
is to succeed.

I can't predict how long modularization could take as the time required 
is totally dependent on the volunteer effort that shows up. A nice 
aspect is that as modularity increases, it takes less effort for any 
individual volunteer to contribute.

A architectural module plan/road map should draw on the broader 
expertise of the community. This is not a topic that benefits from a 
lone wolf approach and creating an architectural development road map is 
the kind of exercise that benefits from having multiple LCNC folks in 
the same place for several days.

I'll be happy to engage in the architectural topic of conversation while 
in Wichita if others are also interested.Personally, wrt to LCNC, I find 
myself more interested in this, and think it has a better chance of 
helping the project, than the various legal/governance topics.

Dave

------------------------------------------------------------------------------
How ServiceNow helps IT people transform IT departments:
1. A cloud service to automate IT design, transition and operations
2. Dashboards that offer high-level views of enterprise services
3. A single system of record for all IT processes
http://p.sf.net/sfu/servicenow-d2d-j
_______________________________________________
Emc-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-developers

Reply via email to