[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Pan-users] GPLv2(+) discussion (Was: Pan 0.135 Win32 build update)
From: |
Duncan |
Subject: |
[Pan-users] GPLv2(+) discussion (Was: Pan 0.135 Win32 build update) |
Date: |
Fri, 21 Oct 2011 00:50:03 +0000 (UTC) |
User-agent: |
Pan/0.135 (Tomorrow I'll Wake Up and Scald Myself with Tea; GIT 91b5ad5 branch-master) |
Petr Kovar posted on Thu, 20 Oct 2011 19:12:21 +0200 as excerpted:
> When we're at it: I was recently told that GPL, the license we use for
> Pan, requires us to reference or include all patches and instructions
> needed to build Pan. So if we release a binary version of Pan,
> regardless of platform, we should also put all the needed patches and
> instructions somewhere and reference them.
This is true. See below.
> Probably the easiest way here to meet the requirements is to simply
> commit the patch to the Pan repo, or patch the configure.in script after
> some #ifdef modifications.
This topic is of quite some interest to me as it regards my legal
freedoms as a user in relation to my software. As such, I've paid
particular attention to discussions on the GPL and its requirements over
the years, but I am not a lawyer so don't take this opinion as if I were.
FWIW, it may be useful when reading this to refer to an actual copy of
the license, like the one available from pan's about dialog.
Section 3 of the GPLv2 covers permissions and and conditions for
distribution, tho it should also be noted that the GPL is designed to
give the user/distributor permissions beyond those they'd ordinarily have
from copyright law, not to further restrict, so anything ordinarily
allowable by copyright law (which may vary by country) remains allowed.
Further, paragraph 2 of section 0 states that activities other than
copying, distribution and modification are outside the scope of the
license, and section 5 explicitly states that you don't have to accept
the license, but that it's the authority by which you are granted
copying, distribution and modification rights (as otherwise prohibited by
law in most jurisdictions, at least), so if you are distributing, you're
assumed to have accepted the license as you'd otherwise be breaking the
law. The intend is not to restrict ordinary use outside those three
(copying, distribution and modification), as when simply running the
program, etc.
So we'll take a closer look at section 3.
Basically, there are three options for compliance, covered in subsections
a-c. However, the third one (c), allowing simple downstream
(re)distribution of binaries without modification by simply pointing
those interested in sources back to to upstream providers, is more
restrictive than the others (non-coor very common community development
practices would be in violation and would have likely never become so
common as a resultmmercial only, applies in practice only to further
binary-only redistribution), so it's of little use except to simple users
wishing to share with friends, etc.
That leaves the two alternatives covered in section 3, subsections a and
b.
Section 3 subsection a covers concurrent distribution of binaries and
sources. In practice, this tends to be the easiest compliance option for
commercial distribution and those distributing modifications (who
therefore can't use subsection c) as unlike subsection b, there's no
3-year mandate. Section 3 paragraph 3 (last paragraph before section 4)
makes clear than offering "equivalent access" to the sources (see below)
at the time of binary distribution is enough, regardless of whether the
third party actually procuring the binary (executable or object code)
chooses to take the sources as well, or not.
That leaves section 3, subsection b. This second option (the third we've
discussed) allows accompanying the binary with a written offer to supply
the sources, but there's a couple significant limitations that make
subsection a preferable to most, once they've actually considered the
options.
First, such offer to supply sources now applies to ANY requester, NOT
just to those who originally got their binaries from you. This is in
fact the other end of subsection c, since you're now supplying not just
those who originally got their binaries from you, but all those to whom
/they/ may have further distributed those binaries in accordance with
subsection c, and in fact, to any requester at all, since it's not
required for such requester to have actually received a binary -- any joe
blow can request the sources from you now. (There is however one
redeeming bit to this, the supplier is allowed to recover costs limited
to those of physically performing source distribution. Back before
Internet distribution became the norm, this allowed the supplier to in
effect recover postage and media costs. I'm not aware of a case in which
such charges were disputed, but it's pretty clear that charges in the
hundreds of dollars aren't allowed, so it's quite possible they were if
someone tried to take undue advantage of that.)
Second, there's a three-year clock that resets every time the supplier
distributes a binary -- the sources must remain available for three years
after the supplier distributed their last binary.
This one's the real kicker for most non-commercial and non-big-time
distributors, including most community Linux distros, as maintaining the
availability of legally compliant sources (again, see below) for three
years after ceasing binary distribution can be a *BIG* compliance burden.
If the subsection b option is chosen, that means the distributor must
track what exact version of sources (and automated build-scripts, etc)
correspond exactly to each version of binary distributed, and ensure that
they remain available to supply upon request to anyone who should ask,
for three years AFTER they've quit distributing that binary! Simply
providing CURRENT sources (and build-scripts) is *NOT* enough, it must be
possible to rebuild from the provided sources the SPECIFIC version that
corresponded to a SPECIFIC binary for A FULL THREE YEARS after
distribution of that binary ceased.
That's a *LOT* of rather precise record keeping and source and script
archiving (the build-scripts potentially being the kicker in addition to
the record keeping itself, since source management itself isn't a big
deal these days as it's quite automated and has been for some time) for
your typical small-time or individual developer community distributor.
So as I said, most distributors choose the concurrent availability option
(3a) once they've examined the alternatives, since that way, once they've
distributed the binary and the one procuring it has made their choice as
to whether to procure the sources along with it or not (and procured them
if so), the GPLv2 license obligations of the distributor are fulfilled,
no three-year-clock and complicated record and archive keeping to worry
about.
OK, the major point is covered, but there's still a couple loose ends to
tie up, one of which was alluded to above but is important enough to
consider on its own, especially as it's thread-topical.
The second sentence of section 3 paragraph 2 is worth quoting verbatim:
>>> For an executable work, complete source code means all the source
>>> code for all modules it contains, plus any associated interface
>>> definition files, plus the scripts used to control compilation and
>>> installation of the executable.
FWIW, sentence 3 of the same paragraph is the famous (in GPL context)
"system component exception", allowing GPLed works on MS Windows, for
instance, to make use of system services without making the work legally
unredistributable due to (otherwise) requiring distribution of the
corresponding MS Windows sources. This is what allowed the GPL to "work"
in the early days, when virtually all GPLed software was built to work on
proprietary systems, because there /were/ no freedomware systems to build
and work on.
The legal implication of the above is that (with the system component
exception), it's not just traditional source code that must be provided,
but that source code, together with the make files and any further
scripted automation of the build and/or installation process. Gentoo
users in particular should be aware of the significance of the scripts
inclusion, since in that context, it'd include the package ebuild, any
referenced eclasses, and probably the profile information as well. (The
package manager itself, and its dependencies, would probably be excluded
under the system exception, however. But again, IANAL.) For RPM-based
binary distros, it'd be the SRPMs and related spec files at least, and
for other binary distros, the corresponding source-rebuild scripts and
specification files, whatever they're called.
*** It's worth noting here what is arguably the most commonly held myth
within the free software community:
*** Myth: Distributing binaries and pointing to one's modification
patches along with upstream sources is GPL compliance.
*** Fact: At least according to the Free Software Foundation (FSF) and
thus applying to software they own and distribute under the GPL (for
other GPL software, the copyright owner or owners would make the decision
as to whether they consider such an action sufficient or not, or arguably
more importantly, whether it's worth pursuing legal action over),
distributing one's patches as source and pointing to upstream for the
sources they apply to is *NOT* legal compliance with the GPL, if one is
distributing the resulting binaries as well (obviously one can distribute
only the patch diffs as source, if not distributing the resulting
binaries). In effect, that's misuse of section 3 subsection c, which as
explained above, applies only to non-commercial distributors of
unmodified binaries.
This is an important principle since it helps to facilitate the
availability of multiple distribution points, in effect making the free
software system more robust and resistant to single-point failure, since
it effectively requires anyone distributing modified binaries to be a
distribution point for all required sources (not just the modifications),
as well.
It can be noted, however, that there's nothing in the GPL preventing
"outsourcing" the entire thing: If the entity (company or individual)
distributing modified binaries has a legally enforceable agreement with
someone else to "host" the sources they're legally required by the GPL to
provide, that's entirely fine. Just be sure that you're comfortable with
the legal viability of said agreement to the same degree (or higher) that
you are with your compliance with the GPL, because in effect, that IS
part of said compliance.
Thus, Petr's observation is absolutely correct. If pan binaries for MS
Windows are being distributed (as they are), whoever's building and
distributing them is legally required to provide the full sources for
those binaries, not just the modifications, including any scripts, etc,
used to automate that process.
Of course, that's where the discussion above about concurrent
distribution of binaries and sources, vs. written offer to provide upon
request, with the latter valid for a minimum of three years after
distribution of the binaries terminates, comes in. Again, the concurrent
offer is generally held to be FAR less trouble to manage, and with the
three-year-clock offer in practice mostly relegated to those who haven't
actually studied their options and the implications thereof, and to those
who comply only reluctantly and are in general hoping nobody actually
requests the sources.
(It's also worth noting the tactics of sveasoft and the like, here. They
do give registered users, only, the choice of getting sources, but upon
the user actually availing themselves of that opportunity, they cancel
the contract and the user gets no further updates, etc. The cost of
registration is sufficiently high to discourage most users from
requesting sources, thus terminating further services under the
contract. Obviously the free software world isn't particularly happy
with this sort of thing, but it does happen occasionally. This is a
legal shadow area that I don't believe has been fully resolved, I believe
in part because at least the Linux kernel folks have a somewhat wider
interpretation of the GPLv2 than does the FSF, and nobody owning rights
to at least the kernel code has been willing to take these folks to court
and settle the issue. But definitely talk to a lawyer on this if it's of
personal interest to you, since my knowledge of the area is very limited
-- in practice as a user I simply steer well clear of such entities, and
as a potential developer I'm not sufficiently skilled to have had to
worry about pursuing legal recourse on code I own the rights to.)
If said modifier/builder/distributor of the binaries is not comfortable
with their ability to provide full sources either concurrently or on
request (for three years after distribution of the binary ceases), as is
very likely to be the case here...
Then yes, by *FAR* the simplest solution is to get those modifications
upstream, so there's no longer any modifications from the original to
worry about.
Another option I've seen, especially with DSCM (distributed source-
control-management, like git, tho there are others) based repos, is
upstream itself hosting multiple branches or entirely separate trees, one
for each contributor/distributor. The Linux kernel itself has just this
sort of arrangement on git.kernel.org (recent security issues and
subsequently more secure policies as it has come back up aside), and I
was recently reading about some critical package, I think it was actually
glibc but might be mistaken, where Red Hat actually has its own branch
(or possibly entire tree/repo, IDR) in upstream itself. (That actually
makes quite a bit of sense for Fedora/RedHat and glibc, since it's a
RedHat employee that's upstream lead developer as well. I wouldn't be
surprised if they have similar arrangements for other packages as well,
given their position in the community and the number of lead devs for
various packages they employ.) went into which historic binary releases.
A closely related variant on this is already in use to some extent for
pan, given the number of pan2 github-based "forks" out there.
*** As a practical matter, all a pan-on-MS dev really needs to do is
create a github account, fork a pan repo into it from his choice of
available upstream forks already available there, upload his
modifications to his github pan2 repo, and ensure that any time he links
a new pan binary, he links the appropriate tag/branch/treeish on github
as well, thus quite reasonably complying with pan's GPLv2 (3a). Since
it's a concurrent link, he doesn't have to worry, at least in terms of gpl
compliance, about github failing or ceasing to offer free accounts for
free software in the three-year-clock period, since the 3-year-clock only
applies to (3b), and he's using (3a). The only requirements would be to
ensure that he always posts the two links together (or only the sources
one, never only the binary one), that the sources link is to the sources
corresponding to the specific code used to build the binary (keep them in
sync), and that if github /does/ go down, disappear, out of business,
whatever, he ceases posting links to the binary until such point as other
source provision arrangements are made. Since the link was concurrent
for previous posts of the binary, there's no clock to have to worry about
and no need, at least for gpl compliance reasons, to worry about tracking
precisely what version of the code corresponded to specific historic
binaries.
That's what I'd try to do if it were me shipping those modified binaries.
One more time, in case anyone forgot in the above discussion. I am not a
lawyer. Don't mistake me for one as that might prove quite an expensive
and disastrous mistake!
That leaves one more loose end, which I've been meaning to ask about for
some time. This would seem the appropriate time.
As far as I can see, pan is GPLv2 only. Not GPLv2 or later, not GPLv3,
not whatever future GPL there might be, GPLv2 only.
This would seem to be the case because I don't see the usual "version 2
or any later version" language, but DO see GPLv2, specifically, in
various places including the source code files themselves, so it would
appear to be GPLv2 only (see section 9).
I haven't the foggiest idea what Charles thought on that, except in as
much as the code /does/ seem to indicate (by omission of other
indication) v2 only, that he might at least have had questions in regard
to GPLv3.
Further, given the apparent GPLv2 status and the number of contributions
from others over the years, it may not be practical to relicense pan to
GPLv3+ even if the current developers (and Charles) wished to. But, it's
likely that the C++ rewrite first released publicly as pan 0.90
eliminates much or all of the issue for previous code (fortunately,
copyright, unlike patents, only applies to verbatim code and direct
derivatives, not the ideas behind them), so it's not as impractical to
consider GPLv3 and/or other relicensing, were it desired, as it would be
were we still using the old C code base (thru 0.14/0.15-ish).
So, five questions:
1) Confirmation: Does this observation appear correct to others, or is
there an "or later version" that I've overlooked? (I've obviously seen
the mention in section 9 of the GPLv2 itself, but that doesn't specify
pan's version.)
2) What are the thoughts of others here, particularly developers,
concerning the GPLv3 and/or "or later version" language, either specific
to pan or in general?
3) To those with any code in pan at all, patches or otherwise, do you
claim ownership or not (trivial patches are often viewed as
uncopyrightable, but the borderline on just what "trivial" is, is a
definite gray area, so...)? (This obviously assumes that Charles and
others didn't require signing over rights, but I'm not aware of any such
requirement for pan, ever. Maybe in some prehistoric (to me, switching
in 2001) 90s era...)
4) If you claim ownership, would you even consider a different license,
and under what conditions (strict copyleft, loose copyleft like the MPL,
liberal MIT style, other considerations)? (This obviously assumes that
such relicensing is decided to be practical at all.)
5) Perhaps most importantly, is anyone aware of any pending or future
license compatibility issues with pan either remaining at GPLv2, or
switching to GPLv3 or other. (FWIW, at least gentoo lists gtk+ as
LGPLv2, so pan should be fine there with GPLv2, GPLv2 or later, or a more
liberal MIT style license, at least, for some time. AFAIK they've cited
LGPL as a feature, so they're unlikely to move from that, tho conceivably
they could try LGPLv3.)
--
Duncan - List replies preferred. No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master." Richard Stallman
- Re: [Pan-users] Pan 0.135 Win32 build update, (continued)
- Re: [Pan-users] Pan 0.135 Win32 build update, Heinrich Müller, 2011/10/06
- Re: [Pan-users] Pan 0.135 Win32 build update, Steve Davies, 2011/10/06
- Re: [Pan-users] Pan 0.135 Win32 build update, Heinrich Müller, 2011/10/06
- Re: [Pan-users] Pan 0.135 Win32 build update, Steve Davies, 2011/10/06
- Re: [Pan-users] Pan 0.135 Win32 build update, Heinrich Müller, 2011/10/07
- Re: [Pan-users] Pan 0.135 Win32 build update, Petr Kovar, 2011/10/20
- [Pan-users] GPLv2(+) discussion (Was: Pan 0.135 Win32 build update),
Duncan <=
- Re: [Pan-users] Pan 0.135 Win32 build update, Steve Davies, 2011/10/21