Rune - Pass-through -O[n], drop more insns in RAS
[rune.git] / COPYRIGHT
1
2                             RUNE LANGUAGE COPYRIGHT
3
4     This software is (c)Copyright 1993-2016 by Matthew Dillon.  Use of
5     this code and binaries produced by this code are governed by the
6     following stipulations:
7
8     (1) All files making up the Rune distribution are defined as "the product"
9         and subject to these terms.
10
11     (2) There are two Rune Language licenses:  A commercial license, and a
12         free license.  The license you need depends on the conditions under
13         which you use this program.  Most open-source programmers and users
14         will fall under the free license.
15
16         The free license, when applicable, does NOT require registration or
17         a signed contract.  Commercial licenses are negotiated on a
18         case-by-case basis.
19
20     (3) All uses of the product are governed by these copyright terms PLUS
21         the license terms under the appropriate license.  WITHOUT A LICENSE,
22         YOU HAVE NO RIGHTS AT ALL TO USE OR MODIFY THIS PRODUCT.  IF THE
23         LICENSE IS DEEMED WHOLELY INVALID, YOU HAVE NO RIGHTS AT ALL TO USE
24         OR MODIFY THIS PRODUCT.
25
26     (4) NON TRANSFERABILITY: Unless otherwise stated, licenses are 
27         non-transferable.  This means that it applies to you and does not
28         automatically transfer to the people you distribute your product to.
29         In order to use the product you have distributed, those people will
30         be subject to the same copyright terms and MAY OR MAY NOT qualify for
31         their own separate, free, unregistered license.
32
33     (5) This copyright notice, applicable licenses, copyright notices in
34         all distributed source code and documentation, and copyright notices
35         embedded in object code and binaries, must be retained at all times,
36         even when codebase modifications are allowed.  In particular, the
37         copyright and license must be retained and readily accessible in
38         the directory tree containing the the files it applies to.  If you
39         are managing code with a repository (for example, git), the copyright
40         and license must also be retained in the repository.
41
42     (6) Any documentation referencing this work must refer to or contain
43         this copyright notice and the following acknowledgement: "This product
44         includes software developed by Matthew Dillon and contributors.".
45
46         ---------------------------------------------------------
47                         The "FREE" Rune Language License
48                                (when applicable)
49
50     Synopsis: This license is designed to support and promote an open-source
51     and open-use environment while still protecting the author's interests
52     in preventing misuse.  All use of this distribution not covered by this
53     license requires a negotiated commercial license.
54
55     (1) There are distinctions between using this product, porting
56         modifications, enhancement modifications, integrations, and
57         redistributions.  This license may be used for these purposes
58         in the limited fashion covered in the clauses below.
59
60         Clause (1) covers binary derived works (below).
61         Clause (2) covers using the product.
62         Clause (3) covers porting modifications.
63         Clause (4) covers enhancements.
64         Clause (5) covers integrations.
65         Clause (6) covers packaging systems.
66
67         When you write a program in Rune, intermediate, library, and binary
68         files will contain some copyrighted Rune code simply by being linked
69         against the rune core and the runtime will also have dynamic library
70         dependencies against the rune core.  You are granted a perpetual,
71         non-revocable license to be able to run such binaries as well as to
72         distribute such binaries and the related run-time support
73         infrastructure commercially or non-commercially, as long as your
74         application is not substantially similar to the Rune product itself
75         (e.g. not used to simply wrap our product, with or without enhancement).
76
77         Your own wholely written source files and the derived program binary
78         itself is yours, you can copyright and license them as you wish.  The
79         specific elements of Rune embedded in these files (such as the Rune
80         grammar) are not yours, but operate under a perpetual license which
81         allows your program binary to use them.
82
83     (2) Using Rune is defined as downloading, compiling, installing, and
84         then using the Rune binaries and libraries to write your own
85         applications in the Rune language.
86
87         Just as with most computer languages, installing and using the rune
88         environment is unrevocably free and covered by the free license.
89
90     (3) Porting modifications.  Any commercial or non-commercial entity can
91         make modifications to the Rune distribution for the purpose of
92         porting the distribution to an architecture under the following
93         stipulations.
94
95         * If you distribute your modifications or anything derived from your
96           modifications, including binaries, you agree to make all such
97           modifications available in patch or GIT form as an
98           internet-accessible publically available patch or GIT repo,
99           and:
100
101         * You agree to relinquish all the rights releaseable under your
102           country's law to said modifications such that anyone else can use
103           your modifications, including any recopyrighting and relicensing,
104           almost as if they were in the public domain.  In return, anyone
105           using your modifications agrees to attribute them to you.  A
106           GIT commit message in the repo is considered sufficient, and
107           if the modification is significant enough the person using your
108           modifications (under his sole discretion) may also add the author
109           of the modification to the contributors list at the top of the file.
110
111           The Rune copyright holder (Matthew Dillon) will specifically use
112           this release to integrate patches into the main distribution under
113           the Rune copyright.
114
115         * If the law does not allow the degree of freedom required to allow
116           others to use modifications as stipulated, then you may not make
117           modifications under this clause.
118
119         * Contributions to the project are assumed to be made as a good
120           faith donation as stipulated above.  For example, if a patch is
121           mailed to us, posted on a public forum, or integrated into any
122           open-source distribution.  We assume these to be contributions
123           that fall under these stipulations.
124
125           If you do this mistakenly and do not wish to contribute the
126           material, within a reasonable period of time of 6 months or as
127           allowed by law from when you published it, you must notify us and
128           we will withdraw it from the public.  Your only recourse is that
129           it be withdrawn from the HEAD of the repo and no longer used in
130           ongoing distributions down the line.  The repo history will remain
131           intact.
132
133         * The author of any modifications stipulates that they are entirely 
134           his own work and that he or she agrees to the terms of the license.
135           If multiple authors, that all authors have read and agree to the
136           terms of this license.
137
138         * These stipulates remain in effect whether the copyright holder
139           of the product (Matthew Dillon) decides to integrate the
140           modifications into the base distribution or not.
141
142         * Again, as a clarification, you cannot apply your own license or
143           copyright to modifications, even whole-file modifications.
144
145           In the open-source world, authors typically name themselves in
146           source files via a copyright line near the top of the file.  We
147           wish to allow authors to include their names in source files but
148           it cannot be done with a copyright line.  Instead, you may add
149           your name in comments near the top of a source file using the
150           following example form:
151
152           /*
153            * Contributor - Charlie Chan <charlie@backplane.com> - bug fixes
154            */
155
156           or (if Rune code)
157
158            #
159            # ... other contributors ...
160            # Contributor - Charlie Chan <charlie@backplane.com> - bug fixes
161            #
162
163     (4) An 'enhancement' is defined to be the addition of any new feature
164         to Rune.  As a clarification, features include optimizations,
165         grammar changes, additions to the core classes, and anything else
166         that adds functionality to the Rune language that isn't a simple
167         patch for porting purposes or bug fix to existing functionality.
168
169         This clause is meant to control the open-source forking problem that
170         can quickly destroy portability (particularly for a language), and
171         indeed can destroy the whole project.  Enhancements can be made with
172         the following stipulations:
173
174         * All stipulations in section (3).
175
176         * Your enhancements are being made with the intent of getting them
177           back into the core distribution.  The copyright holder and core
178           team for Rune have final say on whether features and enhancements
179           go in or not.  We will probably say 'no' a lot, we do not want Rune
180           to become a kitchen-sink language and complex features have to be
181           extremely well-tested before they can be considered for inclusion.
182           On the otherhand, there is a huge amount of work that needs to
183           be done especially on the core classes.
184
185         * You cannot fork the project, meaning you can't take rejected
186           enhancements and start your own project up to support them.
187           That said, we need and expect contributors to maintain their
188           own GIT repos with all their work.  Theoretically these repos
189           are a fork of a sort, but there is a big difference between using
190           a repo to hold side branches in a supporting role and using copies
191           of the repo in a primary role.  We distinguish between these two
192           use cases.
193
194           Using copies of the repo in a supporting role is fully supported
195           and allowed by this clause.
196
197         * SUNSET CLAUSE FOR FORK RESTRICTIONS - The restriction on forking
198           the project will be lifted on December 31 2018.  The project
199           forking stipulation above will no longer be applicable and can be
200           removed on that date.
201           
202     (5) We consider an 'integration' of our product to be any situation where
203         a substantial portion of the functionality of our product, such as
204         being able to parse, compile, assemble, link, or interpret a Rune
205         program (including JIT compilation), is repackaged into some other
206         distribution not under our (the copyright holder, Matthew Dillon's)
207         control.  Integrations are governed by the following stipulations:
208
209         * Integration into any non-commercial open-source product is allowed,
210           defined as any product governed by the BSD or any GPL license whos
211           controlling entity is not also distributing (or associated with an
212           entity distributing) a proprietary form of the product.
213
214           For example, Rune could be integrated into most linux distributions
215           under this clause.
216
217         * Integration into any commercial product or by any commercial
218           entity who distributes a proprietary form of an open-source
219           product requires a commercial license.  The Free license may not
220           be used in this case.
221
222         * A commercial license is required for any other integration of Rune. 
223           Also, keep in mind that this license is not transferable so any
224           users of your distribution must separately qualify for the free
225           license or obtain their own.
226
227     (6) Packaging.  Any packaging system which packages the core Rune
228         distribution, unenhanced, with only porting modifications which
229         follow clause (3), may use this license to generate the port,
230         maintain a copy of the sources, and build and host binary
231         distributions.
232
233     (7) LIMITED-REVOKABILITY of the FREE license by Matthew Dillon.  This
234         clause exists to protect the integrity of the Free License for both
235         the licensee and the copyright holder, protecting both sides from
236         extreme levels of liability should a conflict arise.  This clause
237         does NOT prevent the copyright holder (Matthew Dillon) from filing
238         a lawsuit based on copyright law, but it does say in writing what the
239         intent of the copyright holder is and any judge is expected to take
240         that into account.
241
242         By using this software the licensee is agreeing to the terms and
243         conditions of this license.  The Free license is not revocable when
244         used in good faith.  However, situations may arise where the licensee
245         does not act in good faith.
246
247         The copyright holder (Matthew Dillon) reserves the right to revoke
248         the free license if he believes the licensee is not using it in
249         good faith.  Upon notification, the licensee is no longer able to use
250         the Free license and must immediately stop using the product.  If
251         the licensee stops using the product and does not contest the
252         revocation the conflict is considered resolved.
253
254         The licensee has the right to contest the revocation by posting
255         bond within 30 days at the going rate (as determined by the mediation
256         company chosen by the copyright holder) for a licensed mediator to
257         resolve the conflict.  If the revocation is not contested within
258         the time limit the mediation option is taken off the table and the
259         copyright holder (Matthew Dillon) may resort to a lawsuit.
260
261         If bond is posted within the time limit or as otherwise agreed to
262         by the copyright holder if past the time-limit, The copyright holder
263         (Matthew Dillon) will then hire a licensed mediator who will then
264         mediate the conflict within 30 days and render a final verdict.
265         The question to the mediator is solely as to whether the free license
266         was applicable to the licensee's use case or not, it is not meant to
267         adjudicate royalties or other payments (though such conversations can
268         occur directly between licensee and copyright holder).
269
270         If the copyright holder wins the licensee pays for the mediation via
271         the bond and the licensee agrees to stop using the product.  If the
272         licensee wins the bond is returned and the copyright holder
273         (Matthew Dillon) pays for the mediation.
274
275         Note that 'good faith' is a matter of interpretation.  It is not meant
276         to be a strict reading of the license, but it is meant to distinguish
277         between honest mistakes and intentional actions.  Of course, given
278         notification of a mistake, an honest mistake can quickly turn into an
279         intentional one if the licensee does not quickly address it.  The
280         mediator is asked to take this into account as well.
281
282         Once revoked, the person or entity in question will no longer be
283         able to use the Free license for Rune for any purpose, indefinitely,
284         and must withdraw any products already distributed or sold using
285         the license, and any future products.
286
287     (8) LIMITED LIABILITY.  THIS SOFTWARE IS PROVIDED BY MATTHEW DILLON AND
288         CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
289         INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
290         MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
291         IN NO EVENT SHALL MATT DILLON OR CONTRIBUTORS BE LIABLE FOR ANY
292         DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
293         DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
294         GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
295         INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
296         IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
297         OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
298         EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
299
300     (9) Sunset provision for entire project.  On December 31st 2030 the
301         copyright on the official distribution will be replaced with the
302         2-clause BSD copyright in its entirely.  This license will no longer
303         be applicable at that time and instead of the almost-public-domain
304         BSD license will become applicable, allowing the codebase to be
305         used for virtually any purpose by virtually anyone, commercial or
306         not.
307
308         ---------------------------------------------------------
309                         Examples of Free vs Commercial use.
310
311     These examples are meant to clarify the intent of our copyright and
312     license.  These examples are not part of the official copyright or
313     license, but may be used by mediator or the courts for clarification.
314     Generally speaking my goal is for Rune to be freely useable in
315     open-source-friendly settings but I want a piece of the pie if a
316     commercial entity integrates it into a commercial product.  A commercial
317     license is generally required when you wish to make proprietary 
318     modifications or extensions to Rune, or integrate Rune into a commercial
319     product.  If you aren't sure, assume that a commercial license is required.
320
321     * Lets say you are FreeBSD or Debian and you wish to distribute Rune
322       as part of the base system or as a package, including hosting copies
323       of the repo and/or binary packages.  The Free license will allow you
324       to do so.  Keep in mind that any patches you place in the ports
325       system must adhere to clause (3).
326
327     * Lets say you are a commercial CD printing outfit and wish to include
328       Rune on one of your CDs, which you sell.  The Free license will allow
329       you to do so under clause (5)... that is, if the CD printing outfit is
330       merely redistributing a wholely open-source product as a product and
331       not distributing its own proprietary version of the product, then it
332       may use clause (5).  However if the CD printing outfit wants to
333       sell both a fully-open-source and a proprietatry product, then a
334       commercial license is required for both
335
336     * Lets say you are a company that wishes to make proprietary modifications
337       to Rune and sell the result.  A Commercial license would be required.
338
339     * Lets say you are a company that wishes to create proprietary extensions
340       to Rune, for example by interfacing it to your own proprietary backend.
341       We consider this an enhancement (even if it operates as a separate
342       program) and not an application and you would need a commercial license.
343
344     * Lets say you are a company that wishes to incorporate Rune into your
345       proprietary commercial application in order to allow users of your
346       application to write code in Rune via the application.  We consider
347       this a proprietary 'Integration' of our product and a commercial
348       license would be required.
349
350     * Lets say you are a company that uses Rune to develop an application.
351       You can distribute binaries of your application without having to
352       get a Rune Commercial License.
353
354     * Lets say you want to rebrand Rune and sell the result.  We consider
355       this wrapping and a commercial license would be required.
356
357     * Lets say you wish certain negotiated rights to be transfered to the
358       end-user.  Since the Free License is non-transferable you would need
359       a commercial license to be able to grant your end-users negotiated
360       rights.  For example, if you want to give your end-users the right
361       to make proprietary extensions to Rune libraries you would need a
362       commercial license from us because the Free License does not provide
363       any such right.