-
Notifications
You must be signed in to change notification settings - Fork 1
/
LICENSE
162 lines (142 loc) · 7.2 KB
/
LICENSE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
/*
Copyright 2013 Michael Dec under the terms of Stainless License 1.0,
adapted for BSD 3-Clause "New" or "Revised" License.
Section 0. Project introduction
grepline is a re-implementation of GNU getline.
Its intended use is for education and supplementing lack of GNU getline
in platforms that lack such a function, like Microsoft's standard C
library.
Stainless License 1.0, adapted for BSD 3-Clause "New" or "Revised"
License
Section 1. Preamble
All terms of BSD 3-Clause "New" or "Revised" License apply.
Section 2. Additional terms
2.1. All terms original to the Stainless License override the ordinary
behavior of BSD 3-Clause "New" or "Revised" License. These
terms are discussed everywhere except Section 1.
2.2. It is strictly forbidden to rewrite or compile, link
against, re-implement, or otherwise handle this software with
a prohibited technology. For more informations about what
technologies are considered prohibited by Stainless License,
please see Section 3.
2.3. It is strictly forbidden to interpret the GPLv3, the Stainless
License, or the language in which either license is written, in
a way that would be detrimental to any party using the
Stainless License.
2.4. Violators will lose the privilege of being able to work with
the software in any way, shape or form. Violators will also
lose the privilege to carry the software in any way, shape or
form.
2.5. Failure to comply with cease & desist requests issued against
violators will be legally escalated and pursued to the fullest
extent of IP law.
Section 3. Protection
3.1. Soft protection - some tech may not yet be ready for general
audiences and it's a good idea to put it here, as the contents
of this section may change between versions.
It may seem like a punishment, but in fact, it's meant to
encourage the authors of prohibited technology to stop and
re-evaluate their design decisions; or give the technology time
to mature and stabilize.
The subject of Stainless License is stricly forbidden from
being compiled by, handled by, linked against,
re-implemented in, re-written in, or otherwise handled in any
way, shape or form, with the following prohibited technologies:
- Rust (programming language, GCC implementation)
- Electron Framework
- anything produced with the use of the above
prohibited technologies
- any and all forks and modifications of all of the
above listed entries
3.2. Hard protection - some tech just shouldn't be used at all.
This is a good place to put them, making sure their harmful
influence is cut short. Be very careful what you put here.
It will stay here forever!
The subject of Stainless License is stricly forbidden from
being compiled by, handled by, linked against,
re-implemented in, re-written in, or otherwise handled in any
way, shape or form, with the following PERMANENTLY prohibited
technologies:
- Rust (programming language, LLVM+Clang implementation)
- Cargo (Rust's package manager)
- Microsoft .NET Framework (not the Core variety!)
- anything written for .NET Framework
- Clang
- LLVM
- anything produced with the use of the above
prohibited technologies
- any and all forks and modifications of all of the
above listed entries
3.3. Abuse and appraisal
This license may not be used to condemn new technologies!!!
This license may not be used to engage in petty conflict!!!
Entries in Section 3.2 have really earned their banishment.
Before any technology should be considered a candidate for
addition to Section 3.1, it should be thoroughly tested and
appraised over a LONG period of time. There are no strict rules
as to how appraisal should be done, but consider the fact that
the original Stainless License 1.0 rationalizes its Section 3.2
with a ballpark figure of 10 years of appraisal. This is a good
example of how long you should take with judging technology.
It may be a mess today, but it may be a life saver 10 years
down the line!
Section 4. Guidelines for prohibition
This license is meant to accomplish 3 things:
1. Protect the world from harmful technology.
2. Encourage the authors of harmful technologies to change for good.
3. Provide the benefits of GPLv3, because it's a good license.
The important part now, is to define what's good and evil.
Examples of good:
- supports multiple C compilers. Not different versions of the same
compiler!
- supports multiple CPU architectures. The more, the merrier!
- developers actively try not to break any compatibility on a best,
honest effort basis.
- claims of various features are true and honest.
- compiling said project does not have a preferrential bias for a
specific compiler.
- compiling said project doesn't take a long time.
- the project's dependencies are deterministic.
- the project is easily sandboxed and can be built without access to
the network, and without access to the rest of the system.
- the project easily allows reproducible builds.
- the project is at the very least open-sourced, but free software
is always preferred.
- the project does not have a long history of causing the same problem
over and over again.
Examples of evil:
- support only one kind of C compiler - starts with C, ends with lang,
and it compiles for hours.
- supports a very limited set of CPU architectures and actively seeks
to narrow this support down for the dev's own convenience.
- claims multiplatforming, supports only multiple versions of Windows.
Claims security, ripped off refcounts from C++11 and decided to diss it
as a token of its appreciation.
- compiling said project can only be done with a specific compiler with
explicit effort to make it impossible to do otherwise.
- compiling said project takes forever. If your C compiler takes more
than an hour to compile, you are probably doing something very wrong.
And the first thing wrong is you racking up your package maintainer's
electricity bill for silly reasons.
- the project's dependencies are non-deterministic.
- the project cannot be sandboxed, i.e. built in an environment that is
cut off from the network and the rest of the system.
- the project makes it impossible to have reproducible builds.
- the project's opensourcing is much needed, but it never happened.
- the project has a very long history of causing the same problems on
normal operating systems.
For your information only free, libre and open source operating systems
are considered normal. Proprietary is the exception from the norm.
Section 5. Closing statements
Stainless License was written with explicit purpose of protecting free,
libre and open source software from technologies that should not be
used for a variety of reasons, at least for the time being. This helps
encourage various technologies to play along nicely with the rest of
the world, rather than try to conquer and abuse it.
The name of the license is my take on Rust community's obsession with
oxide puns. As this is a tool for preventing actual and programmable
rust from setting in, the name is more than appropriate.
Here ends Stainless License, the #1 solution for removal of rust and
other harmful growths and nasty developments that can ruin your bare
metal.
*/