Skip to content

Commit a67adf8

Browse files
committed
Close #3: Clarify runtime license, add legal
1 parent 1754288 commit a67adf8

File tree

5 files changed

+85
-3
lines changed

5 files changed

+85
-3
lines changed

COPYING

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
Copyright (c) 2020 Macoy Madson
22

3-
This file is part of Cakelisp.
3+
This file is part of Cakelisp. All files excluding those in runtime/
4+
share the following terms.
45

56
Cakelisp is free software: you can redistribute it and/or modify
67
it under the terms of the GNU General Public License as published by
@@ -13,4 +14,8 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1314
GNU General Public License for more details.
1415

1516
You should have received a copy of the GNU General Public License
16-
along with Cakelisp. If not, see <https://www.gnu.org/licenses/>.
17+
along with Cakelisp. If not, see <https://www.gnu.org/licenses/>.
18+
19+
Additional permission under GNU GPL version 3 section 7
20+
21+
See LICENSE_EXCEPTION

LICENSE_EXCEPTION

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
Linking Cakelisp statically or dynamically with other modules is making a combined work based on Cakelisp. Thus, the terms and conditions of the GNU General Public License cover the whole combination.
2+
3+
As a special exception, the copyright holders of Cakelisp give you permission to combine Cakelisp program with free software programs or libraries that are released under the GNU LGPL and with independent modules that communicate with Cakelisp solely through the Cakelisp Compile-time Code Execution interface. You may copy and distribute such a system following the terms of the GNU GPL for Cakelisp and the licenses of the other code concerned, provided that you include the source code of that other code when and as the GNU GPL requires distribution of source code and provided that you do not modify the Cakelisp Compile-time Code Execution interface.
4+
5+
Note that people who make modified versions of Cakelisp are not obligated to grant this special exception for their modified versions; it is their choice whether to do so. The GNU General Public License gives permission to release a modified version without this exception; this exception also makes it possible to release a modified version which carries forward this exception. If you modify the Cakelisp Compile-time Code Execution interface, this exception does not apply to your modified version of Cakelisp, and you must remove this exception when you distribute your modified version.
6+
7+
This exception is an additional permission under section 7 of the GNU General Public License, version 3 ("GPLv3")

ReadMe.org

+6-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,12 @@ You can see the [[https://macoy.me/blog/programming/CakelispIntro][introduction
1313
* Terms
1414
Cakelisp is copyright (C) 2020 Macoy Madson ~<[email protected]>~.
1515

16-
Licensed under ~GPL-3.0-or-later~. Contact [email protected]~ if you would like to negotiate an exception for your use-case.
16+
Licensed under ~GPL-3.0-or-later~, with added [[https://www.gnu.org/licenses/gpl-faq.en.html#LinkingOverControlledInterface][Linking Over Controlled Interface]] exception.
17+
~runtime/~ is licensed under MIT License.
18+
19+
Please see [[file:doc/Legal.org][doc/Legal.org]] for a detailed explanation.
20+
21+
Contact [email protected]~ if you would like to negotiate an exception for your use-case.
1722
* Features
1823
- *The metaprogramming capabilities of Lisp:* True full-power macro support. Macros can use compile-time code execution to conditionally change what is output based on the context of the invocation
1924
- *The performance of C:* No heavyweight runtime, boxing/unboxing overhead, etc.

doc/Legal.org

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#+title: Legal
2+
The /Too Long, Didn't Read/ is this: If you make something using Cakelisp as a tool, you have full rights over the terms of that thing. If you make something which includes Cakelisp as part of the distribution to end users (for example, an IDE which has Cakelisp built-in, or a game which supports end-user modding via Cakelisp), you must comply with ~GPL-3.0-or-later~.
3+
4+
* Terms
5+
- "Cakelisp": All the files, excluding ~runtime/~ within the Cakelisp repository, and the binaries generated by these files (excludes binaries generated /with/ Cakelisp binaries, i.e. user runtime code)
6+
- "Runtime": Code which runs outside Cakelisp, after generation has been completed. This can also be termed the "user's generated program"
7+
- "Cakelisp runtime": The files in ~runtime/~
8+
* Copyright
9+
Cakelisp is copyright (C) 2020 Macoy Madson ~<[email protected]>~.
10+
* License
11+
Licensed under ~GPL-3.0-or-later~, with added [[https://www.gnu.org/licenses/gpl-faq.en.html#LinkingOverControlledInterface][Linking Over Controlled Interface]] exception. There is no SPDX identifier for this exception, as far as I know.
12+
13+
~runtime/~ is licensed under ~MIT~ License.
14+
15+
Contact [email protected]~ if you would like to negotiate an exception for your use-case.
16+
* License Exception
17+
The ~LICENSE_EXCEPTION~ file allows the creation of plug-ins for compile-time code execution under licenses that are not the GPL. *However*, if you distribute Cakelisp with these plug-ins, you still need to distribute the source code of the plug-ins.
18+
19+
If your program is intended to be GPL, you must release any compile time code used to build the program along with the program's source code, because it is otherwise impossible to build the program, therefore violating the GPL.
20+
* Cakelisp runtime exception
21+
The files in ~runtime/~ are under MIT license instead of GPL. This is to ensure your freedom to determine license for your non-derivative work by providing minimal constraints.
22+
23+
* Explanation
24+
*IMPORTANT:* This section is not legally binding, and is only meant to help the reader quickly determine whether their use-case /may/ be appropriate.
25+
26+
Cakelisp's licensing was chosen to protect my efforts and help the community. Generally, I think the party with the most effort spent should be able to determine the terms of that work.
27+
28+
If you make something utilizing Cakelisp, your something is where most of the work is. If you make something which has Cakelisp embedded as an integral/supplementary part, our work amounts are now closer to even, and you need to obey the ~GPL-3.0-or-later~. Anything you generate with Cakelisp is your own, and any Cakelisp code you write is your own, but as soon as you start distributing Cakelisp itself, you must obey the terms.
29+
30+
From a high level:
31+
- Cakelisp distribution is under ~GPL-3.0-or-later~
32+
- Cakelisp runtime distribution is under ~MIT~ License
33+
- Runtime distribution is under whatever terms the copyright holder decides, provided that they comply with all other software they include in the runtime. If you e.g. link to a GPL library in your runtime (e.g. Cakelisp itself), you then need to comply with the GPL
34+
35+
** Things which are permitted
36+
- Releasing a proprietary game/software project written in Cakelisp, without releasing any of the source code, or sharing any similar licenses. Broadly speaking, what you make /with/ Cakelisp is entirely your own
37+
- Building a proprietary game/software project using Cakelisp's build system
38+
- Releasing products utilizing Cakelisp to the end user, so long as the terms of the ~GPL-3.0-or-later~ are met
39+
** Things which are *not* permitted
40+
- Releasing a proprietary game/software project which ships any of Cakelisp, *excluding* ~runtime/~, without also releasing the source code of that project
41+
- Distributing modified versions of Cakelisp without also releasing the full modified source code
42+
- i.e., you must follow ~GPL-3.0-or-later~ if you actually "ship" any Cakelisp code

runtime/LICENSE

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
MIT License
2+
3+
Copyright (c) 2020 Macoy Madson
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.
22+
23+
This license applies only to the files contained in this folder (runtime/).

0 commit comments

Comments
 (0)