Re: [Numpy-discussion] Proposal to add clause to license prohibiting use by oil and gas extraction companies

2020-07-02 Thread John Preston
Thank you all for your input on this proposal. I am very grateful for
the time you have all spent to provide such well reasoned critiques
and I'm especially glad to see that this thread has triggered
discussion of other, more pragmatic, actions that the community can
take in pursuit of climate justice. 

I found Stanley's analogy of this proposal being a "backwards
incompatible [legal] API change" particularly insightful, and Daniele
has illustrated exactly the kind of chaos this would create
downstream, threatening both NumPy itself (due to the packaging
requirements of distributors like Debian and Fedora) and its dependent
packages like Conda. Fundamentally I see this issue as a philosophical
one around how we define, and the importance of, 'free software' and
'open source software'. From a principles-based perspective, I agree
with Ryan that "equal rights except" is not truly equal, and that
changing the definition(s) of F/OSS would damage the movement by
making it much less clear what is and isn't F/OSS. On the other hand,
from a pragmatic perspective, I care less about if software I use is
strictly F/OSS, and more about if I can do what I want with it, and
who else gets to enjoy those privileges -- I choose the word
'privilege' here specifically to highlight that the core of F/OSS is
rights, which are unconditional, whereas this proposal would make
those rights contingent on conditions that cannot be met by all
actors, and therefore they would be privileges, not rights. So
essentially, this proposal is asking "are there some uses of NumPy
which are so ethically wrong, that it would be better for NumPy to be
non-F/OSS in order to prevent those uses, than for NumPy to be F/OSS,
and advance the F/OSS movement, while also allowing those uses?"

Answering this question requires an awareness of the broader context
within which NumPy sits. Ilhan has pointed out that O companies
cannot be coerced by more restrictive licensing of NumPy because there
are commercial options that they could use instead. Therefore, without
evidence that NumPy powers a significant chunk of the analytics at
major O companies, and that relicensing NumPy would cause
significant disruption to those companies and their ability to carry
out their operations, it is much more likely that any negative effect
on O, and therefore any positive effect on the climate, would be
outweighed by the harm caused to downstream packages.

I agree that the first term is particularly vague, and I would love to
see input from lawyers on how the software community can adopt rigid
clauses in licenses for software that needs this, because although
F/OSS may be "good by default" in that for most software, most of the
time, releasing as F/OSS will be good, this does not mean that there
is no software which requires stricter licensing. I would draw an
analogy with responsible disclosure of vulnerabilities: vendors are
provided with a window of time to fix a vulnerability before
researchers publish their findings, on the basis that immediate
publication of the findings presents more of a threat than a benefit,
because malicious actors could weaponise and abuse the vulnerability
before it is patched. In other words, as software creators, we have a
responsibility to weigh the potential and actual uses of our software
to determine if we are in a position to prevent harm by licensing or
relicensing our software appropriately.

I do not think the second clause is vague or unenforceable, as it
should be demonstrable by any company what its primary revenue sources
are and if any of those activities constitute fossil fuel extraction.
However, the second clause by itself may not be sufficient to prevent
use of software by O: Shell could form a company Shell Analytics,
which carries out all analytical work for the other departments, and
thus the primary business of that company would be "numerical
services".

Regarding other political agendas, as an advocate of
responsible/ethical/political/... software licensing (where
appropriate), I would like to see a set of lawyer-vetted clauses that
could be plugged into base licenses and combined in a compatible way.
While there are many other causes (arms manufacture, animal rights,
...) which are more controversial than the climate emergency which
could be discussed in the context of software use and software
licensing, I do not think that it would be a bad thing for these
discussions to be able to take place.

Regarding companies migrating their business models, this is a great
point but I have no ideas how I would structure a clause that could
allow this without potentially opening an unwanted loophole. I suppose
any company that wished to pivot like this could incorporate a new
entity which would be permitted to use the software, effectively the
inverse of the Shell Analytics example.

I believe I have addressed all of the issues which have been raised.
In the interest of keeping discussion here focused on NumPy and
actions 

[Numpy-discussion] Proposal to add clause to license prohibiting use by oil and gas extraction companies

2020-07-01 Thread John Preston
Hello all,

The following proposal was originally issue #16722 on GitHub but at
the request of Matti Picus I am moving the discussion to this list.


"NumPy is the fundamental package needed for scientific computing with Python."

I am asking the NumPy project to leverage its position as a core
dependency among statistical, numerical, and ML projects, in the
pursuit of climate justice. It is easy to identify open-source
software used by the oil and gas industry which relies on NumPy [1]
[2] , and it is highly likely that NumPy is used in closed-source and
in-house software at oil and gas extraction companies such as Aramco,
ExxonMobil, BP, Shell, and others. I believe it is possible to use
software licensing to discourage the use of NumPy and dependent
packages by companies such as these, and that doing so would frustrate
the ability of these companies to identify and extract new oil and gas
reserves.

I propose NumPy's current BSD 3-Clause license be extended to include
the following conditions, in line with the Climate Strike License [3]
:

* The Software may not be used in applications and services that
are used for or
   aid in the exploration, extraction, refinement, processing, or
transportation
   of fossil fuels.

* The Software may not be used by companies that rely on fossil
fuel extraction
   as their primary means of revenue. This includes but is not
limited to the
   companies listed at https://climatestrike.software/blocklist

I accept that there are issues around adopting such a proposal, including that:

addition of such clauses violates the Open Source Initiative's
canonical Open Source Definition, which explicitly excludes licenses
that limit re-use "in a specific field of endeavor", and therefore if
these clauses were adopted NumPy would no longer "be open-source" by
this definition;
there may be collateral damage among the wider user base and project
sponsorship, due to the vague nature of the first clause, and this may
affect the longevity of the project and its standing within the
Python, numerical, statistical, and ML communities.

My intention with the opening of this issue is to promote constructive
discussion of the use of software licensing -- and other measures --
for working towards climate justice -- and other forms of justice --
in the context of NumPy and other popular open-source libraries. Some
people will say that NumPy is "just a tool" and that it sits
independent of how it is used, but due to its utility and its
influence as a major open-source library, I think it is essential that
we consider the position of the Climate Strike License authors, that
"as tech workers, we should take responsibility in how our software is
used".

Many thanks to all of the contributors who have put so much time and
energy into NumPy. ✨ ❤️ 

[1] https://github.com/gazprom-neft/petroflow
[2] https://github.com/climate-strike/analysis
[3] https://github.com/climate-strike/license
___
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion