You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: rfc/002-License.md
+30-21Lines changed: 30 additions & 21 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -20,7 +20,7 @@ Now, with contributors who've put significant work into these projects, I need t
20
20
21
21
## Background: The Pattern of Exploitation
22
22
23
-
The current Open Source model assumes symmetry between all users. But as David Whitney argues, in his NDC talk ["Open-Source Exploitation"](https://www.youtube.com/watch?v=9YQgNDLFYq8), when there's a power imbalance between the largest organizations in the world and someone putting code on the internet, the organization always benefits. When the OSI insists cloud providers deserve equal treatment to individual developers, it forces projects into defensive positions.
23
+
The current Open Source model assumes symmetry between all users. But as David Whitney argues, in his NDC talk ["Open-Source Exploitation"](https://www.youtube.com/watch?v=9YQgNDLFYq8), when there's a power imbalance between the largest organisations in the world and someone putting code on the internet, the organisation always benefits. When the OSI insists cloud providers deserve equal treatment to individual developers, it forces projects into defensive positions.
24
24
25
25
The database world has experienced this firsthand:
26
26
@@ -50,7 +50,7 @@ The pattern becomes clear.
50
50
51
51
Elastic and Redis (but not MongoDB) added AGPLv3 after their license changes. Two reasons:
52
52
53
-
First, SSPL isn't recognized as open source by the OSI because it discriminates against offering software as a service. The OSI maintains that open source must treat all users equally—even when those users are trillion-dollar companies exploiting smaller projects.
53
+
First, SSPL isn't recognised as open source by the OSI because it discriminates against offering software as a service. The OSI maintains that open source must treat all users equally - even when those users are trillion-dollar companies exploiting smaller projects.
54
54
55
55
Second, strategy. AGPLv3 allows projects to legally incorporate improvements from forks. You can't take BSD-licensed code from Valkey and add it to SSPL Redis. But between compatible copyleft licenses? That works. Yes, also if there's more than one license to the same code.
56
56
@@ -60,23 +60,23 @@ The dual licensing trend represents adaptation to this reality. It's not ideal,
60
60
61
61
### Permissive Licenses: The Current Problem
62
62
63
-
Apache 2.0, MIT, and BSD say: take this code, do whatever you want, just give attribution. This generosity becomes vulnerability when cloud providers monetize your work without reciprocating.
63
+
Apache 2.0, MIT, and BSD say: take this code, do whatever you want, just give attribution. This generosity becomes vulnerability when cloud providers monetise your work without reciprocating.
64
64
65
65
### AGPLv3: Network Copyleft
66
66
67
67
[AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) extends GPL's copyleft to network use. If you modify AGPLv3 software and users interact with it over a network, you must provide the source code of your modifications.
68
68
69
-
"Users interacting over a network" means any service where users access the functionality—web applications, APIs, any network protocol. This applies only to modifications of the licensed software itself.
69
+
"Users interacting over a network" means any service where users access the functionality - web applications, APIs, any network protocol. This applies only to modifications of the licensed software itself.
70
70
71
71
Many developers misunderstand this. They believe AGPLv3 requires open sourcing their entire application. It doesn't. If you build a banking system using Emmett, your business logic remains proprietary. Only if you modify Emmett's core event sourcing engine and expose that modified version as a service would you need to share those Emmett modifications.
72
72
73
73
### SSPL: Explicit Service Protection
74
74
75
75
[SSPL](https://www.mongodb.com/legal/licensing/server-side-public-license) takes AGPLv3 and replaces Section 13. The new text:
76
76
77
-
> if you make the functionality of the software available to third parties as a service, you must release the "Service Source Code"—all management software, user interfaces, APIs, automation, monitoring, backup systems, storage software, hosting software.
77
+
> if you make the functionality of the software available to third parties as a service, you must release the "Service Source Code" - all management software, user interfaces, APIs, automation, monitoring, backup systems, storage software, hosting software.
78
78
79
-
If AWS (or any other company) wants to offer "Emmett-as-a-Service," they'd need to open source their AWS infrastructure used to run it. For normal usage—building applications—SSPL behaves exactly like AGPLv3.
79
+
If AWS (or any other company) wants to offer "Emmett-as-a-Service," they'd need to open source their AWS infrastructure used to run it. For normal usage - building applications - SSPL behaves exactly like AGPLv3.
80
80
81
81
### The Fair-Code Movement
82
82
@@ -96,7 +96,7 @@ Dual license Emmett and Pongo under AGPLv3 and SSPL. Users choose:
96
96
97
97
**AGPLv3 if**:
98
98
99
-
- Your organization requires OSI-approved licenses,
99
+
- Your organisation requires OSI-approved licenses,
100
100
- You understand and accept network copyleft,
101
101
- You want maximum compatibility with OSS tooling.
102
102
@@ -108,6 +108,17 @@ Dual license Emmett and Pongo under AGPLv3 and SSPL. Users choose:
108
108
109
109
This is explicitly pro-user. Those preferring OSI-approved licenses choose AGPLv3. Those wanting clearer terms choose SSPL. Those licences ensure that core code of Emmett and Pongo remain open.
| Use Emmett or Pongo as a dependency in an internal system (no modification) | ✅ No obligations | ✅ No obligations |
114
+
| Modify Emmett or Pongo for internal use only | ✅ Must release modifications if accessed over a network | ✅ Must release modifications |
115
+
| Use unmodified Emmett or Pongo in a public-facing service (e.g., API, SaaS) | ✅ No obligation to release code | ✅ No obligation to release code |
116
+
| Modify Emmett or Pongo and expose it in a public-facing service | ✅ Must release modified source | ✅ Must release modified source **and** all service infrastructure |
117
+
| Offer Emmett or Pongo as a managed service (e.g., “Emmett-as-a-Service”) | ✅ If unmodified, no obligation - if modified, must release modifications | ✅ Must release modifications and service stack |
118
+
| Distribute an app embedding unmodified Emmett or Pongo | ✅ No obligations | ✅ No obligations |
119
+
| Build and distribute proprietary plugins/modules using public APIs | ✅ Allowed if not modifying core | ✅ Allowed if not modifying core |
120
+
| Embed Emmett or Pongo into a closed-source commercial product (with modifications) | ✅ Must release modifications | ❌ Not allowed without releasing entire service stack |
121
+
111
122
## Implementation
112
123
113
124
### License Files
@@ -120,16 +131,14 @@ There will be added License files explaining the licensing.
120
131
121
132
### Contributor License Agreement
122
133
123
-
Contributor License Agreement (CLA) Summary
124
-
125
134
To contribute code to Emmett or Pongo, people will need to sign a Contributor License Agreement. This ensures legal clarity and protects both contributors and maintainers. The key terms of the CLA are:
126
135
127
-
1.**Rights Granted** - contibutors grant the project a license to use, modify, and distribute your contributions under both AGPLv3 and SSPL. This allows users to choose either license, and ensures consistency across the codebase.
128
-
2.**Copyright** - Contibutors retain full copyright over their contributions. The project does not take ownership of your work. Attribution will be maintained as required by both licenses.
136
+
1.**Rights Granted** - Contributors grant the project a license to use, modify, and distribute your contributions under both AGPLv3 and SSPL. This allows users to choose either license, and ensures consistency across the codebase.
137
+
2.**Copyright** - Contributors retain full copyright over their contributions. The project does not take ownership of your work. Attribution will be maintained as required by both licenses.
129
138
3.**Future License Options** - Contributors allow the project to add additional licenses in the future, provided your contribution remains available under AGPLv3 and SSPL. This flexibility enables adaptation to changing legal or strategic needs while preserving existing license paths.
130
139
4.**Contributor Protection** - The CLA does not allow the project to relicense your work under more permissive or proprietary terms unless explicitly stated and agreed upon. The CLA applies only to the specific contributions you submit to this project.
131
140
132
-
Why the CLA Is Needed?
141
+
**Why the CLA Is Needed?**
133
142
134
143
- It ensures clear legal rights for all users of the code under both licenses.
135
144
- It protects contributors from unintended license violations or uncertainty.
@@ -148,7 +157,7 @@ Emmett and Pongo core remains free under AGPLv3/SSPL. No gatekeeping for regular
148
157
To fund development and make Emmett and Pongo sustainable, I plan to provide additional paid products and services. For instance:
149
158
150
159
- Advanced tooling for observability, troubleshooting and monitoring,
151
-
- Web UI for project documentation, messages visualization,
160
+
- Web UI for project documentation, messages visualisation,
152
161
- Advanced multitenancy, security and other enterpise features,
153
162
- Additional integrations with Cloud/AI/ML tooling.
154
163
@@ -160,23 +169,23 @@ I also want to offer support services and paid features prioritisation. But that
160
169
161
170
I maintained Marten for years. Despite adoption and success, I couldn't make it sustainable. Good intentions don't pay bills.
162
171
163
-
With Emmett and Pongo, I've been transparent from the start: these need to be sustainable for me to focus on them. Keeping Emmett unlicensed was deliberate—avoiding the permissive-to-restrictive transition that breaks trust.
172
+
With Emmett and Pongo, I've been transparent from the start: these need to be sustainable for me to focus on them. Keeping Emmett unlicensed was deliberate - avoiding the permissive-to-restrictive transition that breaks trust.
164
173
165
174
Now, with meaningful community contributions, I'm formalizing what I've always intended: a structure that's fair to contributors while enabling sustainable development.
166
175
167
176
## Risks and Trade-offs
168
177
169
-
### Fork Risk
178
+
### Fork Risk and External Managed service without contributing back
170
179
171
-
Cloud providers may fork rather than negotiate. Valkey shows this is real. But maintaining forks requires resources, and I'd rather have a sustainable project than one exploited by cloud providers.
180
+
Cloud providers may fork rather than negotiate. Valkey, Open Search, and DocumentDB show this is real. There's still a risk that someone will just run managed service on unmodified Pongo and Emmett using AGPLv3 without contributing back. Still, they will need to make it a publicly available open source. Thanks to that we can get the improvements back. Also, all of that requires resources and community work and getting a buy-in from users. On the bright side, having this risk should be a trigger for me to plan better core project work and productize additional features.
172
181
173
182
### Adoption Barriers
174
183
175
-
Some organizations prohibit AGPL or SSPL. The dual approach maximizes compatibility, but some potential users will be lost. Better sustainable development with narrower adoption than broad adoption of an abandoned project.
184
+
Some organisati ons prohibit AGPL or SSPL. The dual approach maximises compatibility, but some potential users will be lost. Better sustainable development with narrower adoption than broad adoption of an abandoned project.
176
185
177
186
### Complexity
178
187
179
-
Two licenses create confusion. Clear documentation and decision trees help, but it's added friction.
188
+
Two licenses can create confusion. Clear documentation and decision trees help, but it's added friction. That's also why we're doing it transparently as an RFC.
180
189
181
190
### Trust
182
191
@@ -188,7 +197,7 @@ This dual licensing addresses goals I've had from the beginning: creating sustai
188
197
189
198
Will it work? MongoDB protected itself but faces ongoing community friction. Elastic and Redis found a middle path but spawned major forks. Projects staying permissively licensed often struggle with sustainability or watch cloud providers profit from their work.
190
199
191
-
I'm choosing to formalize now what I've always planned, with community input. The alternative—continuing without proper licensing or choosing permissive licenses—guarantees either abandonment or exploitation.
200
+
I'm choosing to formalise now what I've always planned, with community input. The alternative - continuing without proper licensing or choosing permissive licenses - guarantees either abandonment or exploitation.
192
201
193
202
This isn't about getting rich or rug pull. It's about creating conditions where these projects can survive in a long-term, serving users and enabling me to get the full focus on them. This is the indended win-win for both sides.
194
203
@@ -208,11 +217,11 @@ Yes, if your plug-ins are separate modules that use public interfaces and do not
208
217
209
218
### Why offer SSPL if AGPLv3 already provides protection?
210
219
211
-
SSPL makes the service-use restrictions more explicit and comprehensive. It removes ambiguity around what counts as a modification, and helps organizations who want stronger language around SaaS offerings without worrying about copyleft infecting unrelated application code.
220
+
SSPL makes the service-use restrictions more explicit and comprehensive. It removes ambiguity around what counts as a modification, and helps organisations who want stronger language around SaaS offerings without worrying about copyleft infecting unrelated application code.
212
221
213
222
### What does SSPL require that AGPLv3 does not?
214
223
215
-
SSPL extends the copyleft obligation: if you offer Emmett or Pongo as a service to third parties, you must open source not only modifications to Emmett or Pongo, but all the infrastructure code used to run that service—monitoring, orchestration, authentication, deployment scripts, UI dashboards, etc. For internal use or building apps with Emmett/Pongo, SSPL behaves like AGPLv3.
224
+
SSPL extends the copyleft obligation: if you offer Emmett or Pongo as a service to third parties, you must open source not only modifications to Emmett or Pongo, but all the infrastructure code used to run that service - monitoring, orchestration, authentication, deployment scripts, UI dashboards, etc. For internal use or building apps with Emmett/Pongo, SSPL behaves like AGPLv3.
216
225
217
226
### What counts as a "modification" under AGPLv3 and SSPL?
0 commit comments