|
1
|
--- |
|
2
|
name: legal-and-trademarks |
|
3
|
description: Legal compliance, license management, trademark guidelines, and distribution requirements for the Onde Inference project and its SDKs. |
|
4
|
--- |
|
5
|
|
|
6
|
# Legal & Trademarks — Onde Inference |
|
7
|
|
|
8
|
> Reference for AI agents and human contributors on all legal, licensing, trademark, and distribution compliance topics for the `onde` crate, `onde-swift`, and all downstream SDKs. |
|
9
|
|
|
10
|
--- |
|
11
|
|
|
12
|
## License |
|
13
|
|
|
14
|
Onde is dual-licensed under **MIT** and **Apache 2.0**, at the user's option. This mirrors the licensing model used by the Rust language itself. |
|
15
|
|
|
16
|
``` |
|
17
|
SPDX-License-Identifier: MIT OR Apache-2.0 |
|
18
|
``` |
|
19
|
|
|
20
|
### Why dual license? |
|
21
|
|
|
22
|
| Concern | MIT alone | MIT OR Apache-2.0 | |
|
23
|
|---|---|---| |
|
24
|
| Patent grant | ❌ None | ✅ Apache 2.0 includes irrevocable patent grant | |
|
25
|
| Enterprise adoption | ⚠️ Legal teams may ask questions | ✅ Widely understood and accepted | |
|
26
|
| Rust ecosystem compatibility | ✅ | ✅ | |
|
27
|
| Contributor protection | ❌ | ✅ Patent termination clause deters trolling | |
|
28
|
| Simplicity | ✅ | ✅ User just picks one | |
|
29
|
|
|
30
|
### License files |
|
31
|
|
|
32
|
| File | Contents | |
|
33
|
|---|---| |
|
34
|
| `LICENSE-MIT` | MIT License, copyright Onde Inference (Splitfire AB) | |
|
35
|
| `LICENSE-APACHE` | Apache License 2.0 | |
|
36
|
|
|
37
|
Never use a single `LICENSE` file for dual-licensed projects. Always maintain both files separately. |
|
38
|
|
|
39
|
### Cargo.toml declaration |
|
40
|
|
|
41
|
```toml |
|
42
|
license = "MIT OR Apache-2.0" |
|
43
|
``` |
|
44
|
|
|
45
|
Use `OR` (uppercase, SPDX standard), not `AND` or `/`. `AND` would mean the user must comply with **both** simultaneously — that is a different and more restrictive claim. |
|
46
|
|
|
47
|
--- |
|
48
|
|
|
49
|
## Copyright |
|
50
|
|
|
51
|
The canonical copyright notice for all Onde Inference files is: |
|
52
|
|
|
53
|
``` |
|
54
|
Copyright (c) 2026 Onde Inference (Splitfire AB) |
|
55
|
``` |
|
56
|
|
|
57
|
- **Onde Inference** — the product/brand name |
|
58
|
- **Splitfire AB** — the Swedish legal entity (org. nr. on file) |
|
59
|
- Use the year of first publication; do not update the year annually in LICENSE files |
|
60
|
|
|
61
|
This notice must appear in: |
|
62
|
- `LICENSE-MIT` |
|
63
|
- `LICENSE-APACHE` (NOTICE file section) |
|
64
|
- Any generated SDK packages distributed to registries (crates.io, pub.dev, npm, PyPI) |
|
65
|
|
|
66
|
--- |
|
67
|
|
|
68
|
## Dependency Licenses |
|
69
|
|
|
70
|
### Direct dependencies — audit table |
|
71
|
|
|
72
|
| Crate | License | Notes | |
|
73
|
|---|---|---| |
|
74
|
| `mistral.rs` (Eric Buehler) | MIT | Must preserve `Copyright (c) 2024 Eric Buehler` | |
|
75
|
| `uniffi` | MPL-2.0 | File-level copyleft; compatible with MIT/Apache 2.0 for binary distribution | |
|
76
|
| `tokio` | MIT | — | |
|
77
|
| `serde` | MIT OR Apache-2.0 | — | |
|
78
|
| `anyhow` / `thiserror` | MIT OR Apache-2.0 | — | |
|
79
|
| `hf-hub` | Apache-2.0 | — | |
|
80
|
| `log` | MIT OR Apache-2.0 | — | |
|
81
|
|
|
82
|
### MPL-2.0 (`uniffi`) — what it means in practice |
|
83
|
|
|
84
|
Mozilla Public License 2.0 is **file-level copyleft**: |
|
85
|
- You may distribute binaries combining MPL code with MIT/Apache code without restriction. |
|
86
|
- If you **modify** MPL-licensed source files, you must make those modifications available. |
|
87
|
- As a consumer of `uniffi` (not modifying its internals), **no disclosure obligation applies**. |
|
88
|
|
|
89
|
### GPL — hard blocker |
|
90
|
|
|
91
|
Never introduce a GPL-licensed dependency (v2-only in particular). GPL v2 is **incompatible** with Apache 2.0 and would contaminate the entire binary. |
|
92
|
|
|
93
|
Before adding any new dependency, verify its license with: |
|
94
|
|
|
95
|
```bash |
|
96
|
cargo license --all-features |
|
97
|
``` |
|
98
|
|
|
99
|
Acceptable licenses for new dependencies: MIT, Apache-2.0, MIT OR Apache-2.0, ISC, BSD-2-Clause, BSD-3-Clause, MPL-2.0, Unicode-3.0, Zlib. |
|
100
|
|
|
101
|
--- |
|
102
|
|
|
103
|
## Model Licenses |
|
104
|
|
|
105
|
**This is the most critical compliance area for downstream users.** |
|
106
|
|
|
107
|
Onde downloads AI models from HuggingFace at runtime. These models carry their own licenses, entirely separate from Onde's MIT OR Apache-2.0 license. Any application that ships with or downloads these models must comply with the model's license. |
|
108
|
|
|
109
|
### Current model license table |
|
110
|
|
|
111
|
| Model | HuggingFace Repo | License | Commercial use | |
|
112
|
|---|---|---|---| |
|
113
|
| Qwen 2.5 1.5B Instruct | `Qwen/Qwen2.5-1.5B-Instruct` | [Qwen Community License](https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct/blob/main/LICENSE) | ✅ Allowed with conditions | |
|
114
|
| Qwen 2.5 3B Instruct | `Qwen/Qwen2.5-3B-Instruct` | Qwen Community License | ✅ Allowed with conditions | |
|
115
|
| Qwen 2.5 Coder 1.5B | `Qwen/Qwen2.5-Coder-1.5B-Instruct` | Qwen Community License | ✅ Allowed with conditions | |
|
116
|
| Qwen 2.5 Coder 3B | `Qwen/Qwen2.5-Coder-3B-Instruct` | Qwen Community License | ✅ Allowed with conditions | |
|
117
|
| Qwen 2.5 Coder 7B | `Qwen/Qwen2.5-Coder-7B-Instruct` | Qwen Community License | ✅ Allowed with conditions | |
|
118
|
|
|
119
|
### Key Qwen Community License restrictions |
|
120
|
|
|
121
|
1. **No training competing models** — you may not use outputs or weights to train a model that competes with Qwen/Alibaba offerings. |
|
122
|
2. **Attribution required** — downstream products must acknowledge the use of Qwen models. |
|
123
|
3. **No misrepresentation** — you may not claim the model is your own original work. |
|
124
|
4. **Threshold clause** — organisations with >100 million monthly active users must obtain a separate commercial licence from Alibaba Cloud. |
|
125
|
|
|
126
|
### Disclosure obligation |
|
127
|
|
|
128
|
Onde's README and any SDK README must contain a `## Model Licenses` section that: |
|
129
|
- Lists every bundled or downloadable model |
|
130
|
- Links to the model's license on HuggingFace |
|
131
|
- States that the model license is independent of Onde's own license |
|
132
|
|
|
133
|
When a new model is added to `src/inference/models.rs`, the model license table in the README **must be updated in the same commit**. |
|
134
|
|
|
135
|
--- |
|
136
|
|
|
137
|
## Trademark Guidelines |
|
138
|
|
|
139
|
### Onde Inference brand |
|
140
|
|
|
141
|
**"Onde Inference"** and the Onde logo (`assets/onde-inference-logo.svg`) are trademarks of Splitfire AB. |
|
142
|
|
|
143
|
MIT and Apache 2.0 grant code rights only — **neither license grants trademark rights**. This is intentional and protective. |
|
144
|
|
|
145
|
#### Permitted uses |
|
146
|
|
|
147
|
- Referring to the project by name: *"built with Onde Inference"*, *"powered by Onde"* |
|
148
|
- Linking to the official website or repository |
|
149
|
- Stating compatibility: *"compatible with Onde Inference 0.x"* |
|
150
|
- Press, editorial, and factual references |
|
151
|
|
|
152
|
#### Prohibited uses |
|
153
|
|
|
154
|
- Using "Onde Inference" or the logo as the name of a fork, competing product, or derived SDK |
|
155
|
- Implying official endorsement or affiliation without written permission from Splitfire AB |
|
156
|
- Using the logo in a way that could cause confusion about the origin of a product |
|
157
|
|
|
158
|
#### Forks |
|
159
|
|
|
160
|
A fork of `onde` may use the code freely under MIT OR Apache-2.0 but **must not**: |
|
161
|
- Use the "Onde Inference" name as its product name |
|
162
|
- Use the Onde logo |
|
163
|
- Claim to be the official Onde Inference project |
|
164
|
|
|
165
|
This is standard open-source brand protection and is consistent with how the Apache Software Foundation, Mozilla, and Rust Foundation handle their trademarks. |
|
166
|
|
|
167
|
--- |
|
168
|
|
|
169
|
## mistral.rs Fork — Attribution Requirements |
|
170
|
|
|
171
|
Onde depends on a personal fork of `mistral.rs` by Eric Buehler: |
|
172
|
|
|
173
|
```toml |
|
174
|
mistralrs = { git = "https://github.com/setoelkahfi/mistral.rs", |
|
175
|
branch = "fix/all-platform-fixes", ... } |
|
176
|
``` |
|
177
|
|
|
178
|
### Obligations |
|
179
|
|
|
180
|
1. **Preserve the upstream LICENSE** — `mistral.rs/LICENSE` must remain intact and contain `Copyright (c) 2024 Eric Buehler`. Never alter it. |
|
181
|
2. **Pin to a commit SHA, not a branch** — branches can be force-pushed or deleted. For any production release, the dependency must be pinned: |
|
182
|
```toml |
|
183
|
mistralrs = { git = "https://github.com/setoelkahfi/mistral.rs", rev = "<commit-sha>" } |
|
184
|
``` |
|
185
|
3. **Upstream-first policy** — fixes that are not Onde-specific should be submitted as PRs to `EricLBuehler/mistral.rs`. Maintaining a long-lived divergent fork creates legal ambiguity about authorship of patches. |
|
186
|
4. **NOTICE file** — if Onde ever produces an Apache 2.0 binary distribution (e.g., via PyPI), a `NOTICE` file must include: *"This product includes software developed by Eric Buehler (mistral.rs)."* |
|
187
|
|
|
188
|
--- |
|
189
|
|
|
190
|
## Distribution Registry Compliance |
|
191
|
|
|
192
|
### crates.io |
|
193
|
|
|
194
|
- `license = "MIT OR Apache-2.0"` in `Cargo.toml` ✅ |
|
195
|
- Both `LICENSE-MIT` and `LICENSE-APACHE` must be present in the repo root |
|
196
|
- `readme = "README.md"` must point to a file that contains the `## Model Licenses` section |
|
197
|
|
|
198
|
### pub.dev (Flutter/Dart) |
|
199
|
|
|
200
|
- `pubspec.yaml` must declare `license: MIT OR Apache-2.0` |
|
201
|
- The `## Model Licenses` section must be present in the published README |
|
202
|
- pub.dev displays the license on the package page — verify after each publish |
|
203
|
|
|
204
|
### Swift Package Manager / onde-swift |
|
205
|
|
|
206
|
- `onde-swift/README.md` license section must state MIT OR Apache-2.0 |
|
207
|
- The XCFramework binary is a compiled artifact — it carries Onde's license, mistral.rs attribution, and the model license notice |
|
208
|
- The GitHub Release notes for every onde-swift release must include a `## Licenses` section |
|
209
|
|
|
210
|
### Apple App Store |
|
211
|
|
|
212
|
- Apple's review guidelines do not restrict MIT/Apache 2.0 licensed code |
|
213
|
- The Qwen model license does not conflict with App Store distribution |
|
214
|
- Ensure the app's **Privacy Policy** states that inference runs entirely on-device and no user data is transmitted (this is a functional claim Onde enables, not a license issue, but legal teams will ask) |
|
215
|
|
|
216
|
--- |
|
217
|
|
|
218
|
## Checklist — Adding a New Model |
|
219
|
|
|
220
|
When adding a new model to `src/inference/models.rs`: |
|
221
|
|
|
222
|
- [ ] Verify the model's license on HuggingFace before adding |
|
223
|
- [ ] Check for the >100M MAU commercial threshold clause |
|
224
|
- [ ] Add the model to the `## Model Licenses` table in `onde/README.md` |
|
225
|
- [ ] Add the model to the `## Model Licenses` table in `onde-swift/README.md` |
|
226
|
- [ ] Add the model to the model license table in this SKILL.md |
|
227
|
- [ ] If the model license is more restrictive than Qwen Community License, escalate before shipping |
|
228
|
|
|
229
|
## Checklist — Adding a New Dependency |
|
230
|
|
|
231
|
- [ ] Run `cargo license --all-features` and confirm no GPL appears |
|
232
|
- [ ] If MPL-2.0: confirm you are not modifying the MPL files |
|
233
|
- [ ] If Apache-2.0 only (not MIT): compatible, no action needed |
|
234
|
- [ ] If custom/proprietary license: stop and escalate to Splitfire AB legal |
|
235
|
|
|
236
|
## Checklist — New SDK Release |
|
237
|
|
|
238
|
- [ ] Both `LICENSE-MIT` and `LICENSE-APACHE` are present |
|
239
|
- [ ] `Cargo.toml` / `pubspec.yaml` / `package.json` declare `MIT OR Apache-2.0` |
|
240
|
- [ ] README contains `## Model Licenses` section |
|
241
|
- [ ] Copyright year and entity (`Onde Inference (Splitfire AB)`) is correct |
|
242
|
- [ ] mistral.rs fork dependency is pinned to a commit SHA |
|
243
|
- [ ] mistral.rs `LICENSE` (Eric Buehler) is intact and unmodified |
|
244
|
|
|
245
|
--- |
|
246
|
|
|
247
|
## Quick Reference |
|
248
|
|
|
249
|
| Question | Answer | |
|
250
|
|---|---| |
|
251
|
| What license is Onde? | MIT OR Apache-2.0 (user's choice) | |
|
252
|
| Who holds the copyright? | Onde Inference (Splitfire AB) | |
|
253
|
| Can someone fork Onde and sell it? | Yes, under MIT or Apache 2.0, but they cannot use the "Onde Inference" name or logo | |
|
254
|
| Are Qwen models MIT? | No — Qwen Community License. Disclose to users. | |
|
255
|
| Can enterprises use Onde commercially? | Yes. Apache 2.0 + Qwen Community License both permit commercial use. | |
|
256
|
| Does the patent grant apply? | Yes, under Apache 2.0. Choose Apache 2.0 if patent protection matters to you. | |
|
257
|
| Who is Eric Buehler? | Author of mistral.rs. His MIT copyright must be preserved in our fork. | |