From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 X-Received: by 2002:a6b:92d4:: with SMTP id u203-v6mr1274752iod.27.1524067005095; Wed, 18 Apr 2018 08:56:45 -0700 (PDT) X-Received: by 2002:a9d:445c:: with SMTP id f28-v6mr168950otj.2.1524067004948; Wed, 18 Apr 2018 08:56:44 -0700 (PDT) Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!feeder.eternal-september.org!news.uzoreto.com!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder-in1.iad1.usenetexpress.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!f63-v6no340298itc.0!news-out.google.com!u64-v6ni6907itb.0!nntp.google.com!k65-v6no3714699ita.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: comp.lang.ada Date: Wed, 18 Apr 2018 08:56:44 -0700 (PDT) In-Reply-To: Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=47.185.233.194; posting-account=zwxLlwoAAAChLBU7oraRzNDnqQYkYbpo NNTP-Posting-Host: 47.185.233.194 References: <1c73f159-eae4-4ae7-a348-03964b007197@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <1430cb28-1bdf-4574-85b5-9f2a55506871@googlegroups.com> Subject: Re: How to get Ada to ?cross the chasm?? From: "Dan'l Miller" Injection-Date: Wed, 18 Apr 2018 15:56:45 +0000 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Received-Bytes: 6691 X-Received-Body-CRC: 2731120758 Xref: reader02.eternal-september.org comp.lang.ada:51598 Date: 2018-04-18T08:56:44-07:00 List-Id: On Wednesday, April 18, 2018 at 9:36:12 AM UTC-5, Simon Wright wrote: > Simon Clubley writes: >=20 > > Also, as far as I can see (and I am willing to be corrected here if I > > am wrong) it means that you can't even write a library in Ada under > > something other than the GPL if you are going to use the Community > > version. As soon as you compile the library source with the Community > > version, it falls under the GPL and hence any software using your > > library also falls under the GPL. >=20 > There are a host[1] of licenses compatible with the GPL. > ... > [1] https://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses Well, not so fast. Clubley's =E2=80=9Cfall under=E2=80=9D is correct. Alt= hough Wright is narrowly correct, the narrowness of the precise correctness= of =E2=80=9Ccompatible with=E2=80=9D is highly misleading. How many months have 28 days? The narrowly-precise correct answer is: all= of them. This style of mathematically-narrow correctness is what is at pl= ay here with =E2=80=9Ccompatible with the GPL=E2=80=9D. The best correct a= nswer is of course to transparently answer both interpretations in one fell= swoop: all of them and only February on non-leap-years. https://www.gnu.org/licenses/gpl-faq.html#WhatDoesCompatMean GNU's =E2=80=9Ccompatible with the GPL=E2=80=9D can very easily be misinter= preted. First let's consider licenses that are incompatible with the GPL. = If you statically link GPLed object code with, say, Microsoft EULAed objec= t code, you have prima-facie violation of the GPL right from the git-go: y= ou cannot release the source code for the EULAed software, because (even if= you have the source) the EULA prohibits publicly releasing the EULAed sour= ce code. Next let's consider licenses that are deemed =E2=80=9Ccompatible=E2=80=9D w= ith the GPL but that lack the copyleft demand to released source code. Let= 's take, say, the Boost Software License (BSL). Normally, if you modify Bo= ost source code, you are not compelled in any legal way to release those mo= dified lines of source code to anyone. But if you statically link that BSL= ed object code with GPLed object code, you have the =E2=80=A2opportunity=E2= =80=A2 to do what the GPL absolutely requires: release your modifications = to the Boost source code publicly. You don't have a prima-facie violation = of the GPL yet, hence BSL is so-called =E2=80=9Ccompatible=E2=80=9D with th= e GPL. You only violate the copyleft provisions of the GPL if you of your = own volition refuse to publicly release your modifications to the BSLed sou= rce code; hence it was not the BSL that was the root cause of the violation= of the GPL's terms; hence the BSL is compatible with the GPL's copyleft te= rms. (Note that there exist other license-of-other-code mechanisms of being prim= a facie in violation of the GPLv3 right from the git-go (e.g., patents; pro= hibitions on reverse engineering); thus there exist other ways of a license= being incompatible with the GPL. I am simply utilizing the copyleft's dem= and to publicly release the source code as the most-often-encountered examp= le, and the one that Clubley was mentioning above.) Clubley's =E2=80=9Cfall under=E2=80=9D more accurately captures what is goi= ng on here. =E2=80=9CFalls under=E2=80=9D does =E2=80=A2not=E2=80=A2 mean:= all licenses of statically-linked object code are retroactively retexted = as now GPL itself, requiring new licensing text to be issued by the origina= l copyright holder(s). Clubley's =E2=80=9Cfalls under=E2=80=9D =E2=80=A2= =E2=80=A2does in fact=E2=80=A2=E2=80=A2 mean: the copyleft terms of the GP= L apply to nonGPLed object code that was statically linked to the GPLed cod= e, which is clearly the meaning that Clubley was intending to convey: the = not-originally-copylefted source code becomes copylefted here by its object= code being statically linked with copylefted-from-the-git-go object code. = Colloquially, this transitivity of spread of the copyleft's demand for pub= lic release of source code of not-otherwise-copylefted source code is what = is termed =E2=80=98viral=E2=80=99 pejoratively. (Btw, I limit these examples to static linking within an executable. 1) Dy= namic linking GPLed code to an otherwise not-copylefted executable and 2) d= ynamic linking not-copylefted object code to an otherwise GPLed executable = both require vastly more detailed analysis of precisely how the dynamic lin= king transpired and what knew what about the interfaces across that boundar= y, which even gets into the thorny topic of the Oracle-v.-Google case of wh= ether declarations of subroutines can be copyrighted, and if they can, what= is and is not fair-use of those declarations of subroutines. The vast maj= ority of the time [e.g., not LGPL; the executable being the link-loader rat= her than the OS; the interface across the DLL is parameterless procedure wi= th no string identifier name such as indexing into an array of addresses wh= ere that array starts at a well-known address]=E2=80=94the DLL case is almo= st exactly the same as the statically-linked case regarding the spread of t= he copyleft's release-the-source-code demand to otherwise not-otherwise-cop= ylefted object code and thus to its not-otherwise-copylefted source code.)