I was stimulated into re-visiting an issue that I've done a lot of thinking and reading about in the past, by a conversation that erupted in the chatterbox today. It was initially a question I put forth asking about people's past experiences with Sourceforge which gave rise to this debate. The issue is software licenses, an issue which every hacker who has been around for awhile thinks they understand very well, and most are eager to give less well-acquainted colleagues the benefit of their insight ;-).

I won't refrain from mentioning that it was a specific Monk, my friend theorbtwo, who pointed me towards the document that I'd like to discuss. I won't forbear to mention him since he is so steadily a regular at Pm that he'll surely be around soon to make response to anything I write. ;-)

The document in question is the OSD, the Open-Source Definition. I hadn't taken much time reading the OSD until now; my time has been invested instead in repeated careful study of the FSF/GNU GPL and related licenses, ones I was much more interested in. Having read the OSD now, however, I came to a disturbing realization: the OSD is a mess.

What is use and how does it change depending on where you are standing?

The core problem with the OSD is a language problem, of course. It is very poorly written. For TV screenplays, poorly-written is not a disaster. For documents that attempt to provide ethical or legalistic guidelines it is a very serious matter. Imprecise language or language that leaves too much room for interpretive 'wiggle' is truly a problem.

The central problem that impacted on my situation is that the definition of "use" is left far too unclear in the OSD. I believe that my friend theorbtwo, a very bright and gifted fellow, has been led astray in his understanding by that lack of clarity; and if it has happened to him, how many others are not grasping it correctly?

A program, software, as the non-technical user sees it, is a set of instructions for a processor compiled (or not) into a formatted file, which the user executes on her computer system. If the software is a library (or module) it is still executed or "used" in this primary sense, when the program incorporating it is executed. In a legalistic document the most everyday, generally-understood sense of a word or term "wins" if it is not specifically qualified to sharpen, expand, or multiply its meaning. The way the OSD employs the term use is left extremely vague. It is very understandable that technical people, hackers, those who write program code in various languages, may have a distinctly different sense of what use might mean in the OSD. For example, one fellow may feel that use means to him, putting the software to use by studying the source code in order to get ideas about how to write other software; another might think of use-ing the software by copying portions of it verbatim into an independent, unrelated program she is writing. Yet another might say that use primarily means to link library code in, as when we use a perl module in a perl script or other module code.

The trouble with all the possible varying senses of use is not simply in the multiplicity of meanings but also in the exclusionary thinking that can take place. I have invented the term "Occupational Blinders" to use in thinking to myself about this matter. Specialized and highly trained people in any field can become so immersed in their field that it is possible and frequently observable that they will lose the ability to grasp any longer how non-technical, outside people who don't share their background and preoccupation, so to speak, will understand things when first exposed. I'll get back to that a little later, though.

A semantic problem related to the use dilemna is the imprecise intention of "software" as a term itself. To a non-technical person, "software" means something they acquire through some medium of distribution, that they can run in order to accomplish some task or effect on their computer. They do not think of software as source code vs compiled binary or opcodes or bytecode. They are unaware of these distinctions. Obviously it matters, since we are addressing the issue of the OSD, but the principle of recognizing what the most general, widely-understood sense of a word or term being used in a legalistic document remains crucial to examining the weaknesses of the OSD. Unless a term is defined in a narrowed, sharpened sense, we need to keep a background acknowledgement of what the most generally-understood sense of the term is, in mind.

Specifics

Now I'll cite a specific paragraph of the OSD that I feel demonstrates these problems. I will offer my explanation of what I feel is the most "common-sense", "likely intention" of the language and then contrast that with what theorbtwo seems to have stated is his interpretation of the meaning of the section.

Item 6 in the OSD states:

6. No Discrimination Against Fields of Endeavor

The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.

Rationale: The major intention of this clause is to prohibit license traps that prevent open source from being used commercially. We want commercial users to join our community, not feel excluded from it.

To me, the language of the Item was clear enough in its meaning, but another smart Monk has interpreted it in a very contradictory manner, so I believe that its clarity must not be sufficiently good after all. My interpretation is this: The software can be used in the most general, non-technical sense (because no sharpening definition has been provided to narrow or expand or multiply the sense of the term) of "use": the software program can be run by anybody working in any institutional environment, for any category of employer, in the service of any end goal. The Open-Source compliant license cannot circumscribe who can install and run the software in the sense of making the script, binary executable or other, available to the Operating System installed on the user's computer, so that in whatever manner is ordinary and characteristic of that OS, it can be actively loaded into memory and begin to give instructions to the processor unit.

The contrasting interpretation insisted on by theorbtwo went like this: The software, if it is compliant with the OSD, must be free of license restrictions which forbid its inclusion in a commercial product.

These two definitions are really greatly at odds. One, mine, concerns the manner in which the functionality of the software is exploited, for what end, by whom. The other interpretation doesn't address this at all, but instead concerns redistribution of the software (with or without alteration) by another party, for monetary gain, as in a "product" which in this context must mean "software for the use of which, a licensing fee must be paid." This other interpretation directly impacts the software I was discussing (having submitted an application for it to become a Project on Sourceforge, and was, btw, rejected without any message of explanation). The license / terms of use of this software (which I cannot control or determine, since it is an "adopted" orphaned package originally authored by others) do specifically forbid the software to be used as part of a commercial software product (but do not otherwise place limitations on the modification or redistribution of the source code, thus the "source" is "open" (as in "available"). Nor are any restrictions placed on who may run the software, where, or to what larger end purpose.

I will just note here, in a vain, hopeless attempt to proactively forestall the inevitable cascade of obfuscating, non-relevent flames about the GPL and GNU Free software, that I support the GPL and release all the software I author for my own use / pleasure under either it specifically, the LGPL, or the "Terms of Perl", which we must all be familiar with (which according to user choice may be exactly identical to the GPL, or may be different but still compatible with it -- the "Artistic License"). My contention about the Open-ness of the package I sought to released on Sourceforge was not a contention that this would therefore be Free software. I won't even answer replies that are based on failing to read and understand this distinction.

The other item in the OSD which theorbtwo says this package I want to release, would "violate", is Item 1:

1. Free Redistribution

The license shall not restrict any party from selling or giving away the software as a component of an aggregate software distribution containing programs from several different sources. The license shall not require a royalty or other fee for such sale.

Rationale: By constraining the license to require free redistribution, we eliminate the temptation to throw away many long-term gains in order to make a few short-term sales dollars. If we didn't do this, there would be lots of pressure for cooperators to defect.

Again, I have a varying interpretation of the meaning of this part of the document. Again, although this portion seemed fairly clear in intent, it appears that it is not so. My understanding based on key terms mentioned is this: A "distribution" in this context is a collection of software in source code form (but perhaps accompanied by precompiled bianries as well, where this is applicable). The use of three terms specifically supports my interpretation of "distribution": (1) "aggregate" which is a word I find usually conveys as sense of variety and diversity, and (2) "royalty" which is a term that I seldom or never see applied to the "price tag" of commercial "shrink-wrapped" software, and also not to "purchasing a license to install and run" software. And finally, most tellingly, the title of the Item says (3) "Redistribution" which implies to me that this is a clause which mostly concerns source code. Nobody talks about (legally) "redistributing" Microsoft software, for instance, because (a) nobody gets the source code, and (b) mostly it isn't free of charge. I think this clause is specifically intended to be applied to things like CD-ROM compilations of source code and binaries like those that have been appearing in bargain-clearance bins for years.

GoodMonk theorbtwo seemingly didn't think so, however, and instead contends that this Item also refers to software products ("MS Access", "Adobe Photoshop", "Corel Draw") that are sold by companies who clearly intend for their products to be thought of as monolithic, strongly market-identified entities (even if on an engineering level they are realistically composed of multitudes of modules developed at various times and by various individuals or teams, maybe both inside and outside the company selling the "product").

Summary

The long-standing popular (among programmers) sense of "Open-Source" as a kind of software licensing, has been that it is less "doctrinaire" and "rigid" than the GNU/FSF people want for Free software. The exposure I've now had to the OSD makes me feel that this isn't really so, and all that has been done is to create a problematic document that fails the clarity test which it is crucial for such things to pass, if they are to succeed in forwarding their goals. The GPL at least is clear, comprehensive, thoughtful and precise. This OSD thing is so terse and incomplete that it has lost my support, at least at the present; I will not recognize it as a valid set of principles for a community to unite around. I cannot hope to force the people at Sourceforge to re-examine their interpretations of or committment to the OSD, such is Life, but I can still choose to state what I believe is flawed and problematical about it.

    Soren A / somian / perlspinr / Intrepid
P.S. Don't forget: I am expecting all the people the people who say I am posting to Perlmonks for the XP to automatically downvote this posting w/o explanation, thanks.

-- 
Cynicism is not "cool" or "hip" or "intelligent". It's like Saddam Hussein's piss mixed
with 004 grit and nitric acid. It's corrosive to everything it touches, destructive to
human endeavors, foul and disgusting. And ultimately will eat away the insides of the
person who nurtures it.

In reply to Licensing Revisited ... again and again. by Intrepid

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.