Seregon/StratoSDK

StratoSDK is a framework with a declarative approach similar to Flutter/React, written and designed entirely for Rust.

Rust/27.3 KB/No license
docs/warpui-import/LICENSE_AUDIT.md
StratoSDK / docs / warpui-import / LICENSE_AUDIT.md
1# WarpUI Import License Audit
2 
3Status: **MIT source imported, AGPL Warp dependencies excluded, workspace checks passing**
4 
5This audit was performed to evaluate whether the MIT-licensed WarpUI crates from
6`https://github.com/warpdotdev/warp` can be copied into StratoSDK without
7bringing AGPL-licensed Warp workspace code into this repository.
8 
9## Source And Target
10 
11| Item | Value |
12| --- | --- |
13| Source repository | `https://github.com/warpdotdev/warp` |
14| Source commit | `c61ad5b8a8c3980148f91c76a4ce17d1bf8105fc` |
15| Latest source license re-check | `e9ff9324ea14641326ae62f49e6ba0d39f6954b2` |
16| Target repository | `https://github.com/StratoHQ/StratoSDK` |
17| Target branch | `import-warpui-mit-core` |
18| Target starting commit | `feff8859bed8d3ef35561c79a9b6f4281381eda3` |
19| Audit date | `2026-04-30` |
20 
21## Source License Findings
22 
23The Warp README at the audited source commit states that Warp's UI framework,
24specifically the `warpui_core` and `warpui` crates, is licensed under
25`LICENSE-MIT`, and that the rest of the repository is licensed under
26`LICENSE-AGPL`.
27 
28The Warp root `Cargo.toml` declares:
29 
30```toml
31[workspace.package]
32license = "AGPL-3.0-only"
33publish = false
34```
35 
36The two candidate crates explicitly declare MIT:
37 
38```toml
39# crates/warpui_core/Cargo.toml
40license = "MIT"
41 
42# crates/warpui/Cargo.toml
43license = "MIT"
44```
45 
46The hard license gate therefore passed for the crate manifests themselves, but
47failed at the dependency boundary described below.
48 
49## Copied Paths
50 
51The following MIT-scoped paths were copied after the initial hard stop audit.
52No AGPL-licensed Warp workspace crate was copied.
53 
54| Source path | Target path | Status |
55| --- | --- | --- |
56| `crates/warpui_core` | `crates/strato-ui-core` | Copied, workspace-enabled, crate boundary renamed for Strato |
57| `crates/warpui` | `crates/strato-ui-renderer` | Copied, workspace-enabled, crate boundary renamed for Strato |
58| `LICENSE-MIT` | `LICENSES/WARPUI-MIT.txt` | Copied |
59 
60## Skipped Paths
61 
62| Source path | Reason |
63| --- | --- |
64| `crates/markdown_parser` | Local Warp workspace crate inherits `AGPL-3.0-only`. |
65| `crates/sum_tree` | Local Warp workspace crate inherits `AGPL-3.0-only`. |
66| `crates/warp_util` | Local Warp workspace crate inherits `AGPL-3.0-only`. |
67| `crates/string-offset` | Local Warp workspace crate inherits `AGPL-3.0-only`. |
68| `crates/settings_value` | Local Warp workspace crate inherits `AGPL-3.0-only`. |
69| `crates/command` | Local Warp workspace crate inherits `AGPL-3.0-only`. |
70| `crates/asset_cache` | Local Warp workspace crate inherits `AGPL-3.0-only`. |
71| `crates/virtual_fs` | Local Warp workspace crate inherits `AGPL-3.0-only`. |
72| `crates/ui_components` | Local Warp workspace crate inherits `AGPL-3.0-only`. |
73| `crates/warpui_extras` | Local Warp workspace crate inherits `AGPL-3.0-only`. |
74 
75## Local Workspace Dependency Audit
76 
77Only `warpui_core` and `warpui` are in the explicitly MIT-permitted import set.
78Every other local Warp workspace dependency listed here is unsafe for copying
79because its manifest uses `license.workspace = true`, which resolves to the
80Warp workspace license `AGPL-3.0-only`.
81 
82| Dependency | Used by | Kind / target | Manifest license finding | Status |
83| --- | --- | --- | --- | --- |
84| `warpui_core` | `warpui` | normal, dev | Explicit `license = "MIT"` | SAFE, copied as `strato-ui-core` |
85| `warpui` | `warpui` | dev self-reference | Explicit `license = "MIT"` | SAFE, copied as `strato-ui-renderer` |
86| `markdown_parser` | `warpui_core`, `warpui` | normal | `license.workspace = true` -> `AGPL-3.0-only` | UNSAFE at source, replaced with clean-room Strato formatted text module |
87| `string-offset` | `warpui_core` | normal | `license.workspace = true` -> `AGPL-3.0-only` | UNSAFE at source, replaced with clean-room Strato text offset module |
88| `sum_tree` | `warpui_core`, `warpui` | normal | `license.workspace = true` -> `AGPL-3.0-only` | UNSAFE at source, replaced with clean-room Strato linear index module |
89| `settings_value` | `warpui_core` | optional normal | `license.workspace = true` -> `AGPL-3.0-only` | UNSAFE at source, removed from imported manifests |
90| `warp_util` | `warpui_core` | normal | `license.workspace = true` -> `AGPL-3.0-only` | UNSAFE at source, replaced at imported boundary |
91| `command` | `warpui_core`, `warpui` | dev and non-macOS normal | `license.workspace = true` -> `AGPL-3.0-only` | UNSAFE at source, replaced at imported boundary |
92| `asset_cache` | `warpui` | dev | `license.workspace = true` -> `AGPL-3.0-only` | UNSAFE at source, removed from imported manifests |
93| `virtual-fs` | `warpui` | Linux dev | `license.workspace = true` -> `AGPL-3.0-only` | UNSAFE at source, removed from imported manifests |
94 
95Additional local crates named in the migration guard list were also inspected:
96 
97| Dependency | Manifest license finding | Status |
98| --- | --- | --- |
99| `ui_components` | `license.workspace = true` -> `AGPL-3.0-only` | UNSAFE |
100| `warpui_extras` | `license.workspace = true` -> `AGPL-3.0-only` | UNSAFE |
101 
102## Unsafe Reference Evidence
103 
104The MIT candidate source originally referenced unsafe local dependencies in
105non-trivial implementation paths. The current Strato import removes the active
106references listed below:
107 
108| Identifier | Example source references | Risk |
109| --- | --- | --- |
110| `markdown_parser` | formatted text and font/header parsing in `warpui_core` and examples | Replaced with `strato_ui_core::formatted_text`, a clean-room minimal formatted text model/parser. |
111| `sum_tree` | viewported list and table layout internals | Replaced with `strato_ui_core::linear_index`, a clean-room linear cursor/index structure. |
112| `warp_util` | platform shell family handling | Replaced in the imported boundary with a local `ShellFamily` implementation. |
113| `command` | non-macOS windowing process launch paths and tests | Replaced in the imported boundary with `std::process::Command`. |
114| `settings_value` | optional derives and implementations | Removed from imported manifests and code paths in the first cleanup pass. |
115| `string-offset` | normal dependency of `warpui_core` | Replaced with `strato_ui_core::text_offsets`, a clean-room offset module. |
116 
117The candidate source is large enough that replacing these safely is not a small
118mechanical edit:
119 
120| Source path | Approximate size |
121| --- | --- |
122| `crates/warpui_core` | `3.1M` |
123| `crates/warpui` | `19M` |
124| Combined file count | `387` files |
125 
126## Direct Dependency Inventory
127 
128This inventory was produced with `cargo metadata --no-deps --format-version 1`
129from the Warp source checkout. Registry dependencies are consumed from crates.io
130through Strato workspace manifests. No local AGPL Warp dependency is copied.
131Forked Warp git dependencies were treated as ambiguous and replaced with
132crates.io packages or clean Strato adaptations.
133 
134### `warpui_core`
135 
136| Dependency | Class | Kind / target | Status |
137| --- | --- | --- | --- |
138| `anyhow` | crates.io | normal / all | External, not copied; future third-party license audit required |
139| `async-broadcast` | crates.io | normal / all | External, not copied; future third-party license audit required |
140| `async-channel` | crates.io | normal / all | External, not copied; future third-party license audit required |
141| `async-executor` | crates.io | normal / all | External, not copied; future third-party license audit required |
142| `async-fs` | crates.io | normal / all | External, not copied; future third-party license audit required |
143| `async-task` | crates.io | normal / all | External, not copied; future third-party license audit required |
144| `bounded-vec-deque` | crates.io | normal / all | External, not copied; future third-party license audit required |
145| `bytes` | crates.io | normal / all | External, not copied; future third-party license audit required |
146| `cfg-if` | crates.io | normal / all | External, not copied; future third-party license audit required |
147| `chrono` | crates.io | normal / all | External, not copied; future third-party license audit required |
148| `dashmap` | crates.io | normal / all | External, not copied; future third-party license audit required |
149| `derivative` | crates.io | normal / all | External, not copied; future third-party license audit required |
150| `derive_more` | crates.io | normal / all | External, not copied; future third-party license audit required |
151| `dirs` | crates.io | normal / all | External, not copied; future third-party license audit required |
152| `enum-iterator` | crates.io | normal / all | External, not copied; future third-party license audit required |
153| `float-cmp` | crates.io | normal / all | External, not copied; future third-party license audit required |
154| `futures` | crates.io | normal / all | External, not copied; future third-party license audit required |
155| `futures-lite` | crates.io | normal / all | External, not copied; future third-party license audit required |
156| `futures-util` | crates.io | normal / all | External, not copied; future third-party license audit required |
157| `image` | crates.io | normal / all | External, not copied; future third-party license audit required |
158| `infer` | crates.io | normal / all | External, not copied; future third-party license audit required |
159| `instant` | crates.io | normal / all | External, not copied; future third-party license audit required |
160| `itertools` | crates.io | normal / all | External, not copied; future third-party license audit required |
161| `lazy_static` | crates.io | normal / all | External, not copied; future third-party license audit required |
162| `log` | crates.io | normal / all | External, not copied; future third-party license audit required |
163| `markdown_parser` | local Warp workspace | normal / all | UNSAFE: AGPL via workspace license inheritance |
164| `minimp4` | crates.io | optional normal / all | External, not copied; future third-party license audit required |
165| `num-derive` | crates.io | normal / all | External, not copied; future third-party license audit required |
166| `num-traits` | crates.io | normal / all | External, not copied; future third-party license audit required |
167| `num_cpus` | crates.io | normal / all | External, not copied; future third-party license audit required |
168| `openh264` | crates.io | optional normal / all | External, not copied; future third-party license audit required |
169| `ordered-float` | crates.io | normal / all | External, not copied; future third-party license audit required |
170| `parking_lot` | crates.io | normal / all | External, not copied; future third-party license audit required |
171| `pathfinder_color` | crates.io | normal / all | External, not copied; future third-party license audit required |
172| `pathfinder_geometry` | crates.io | normal / all | External, not copied; future third-party license audit required |
173| `rand` | crates.io | normal / all | External, not copied; future third-party license audit required |
174| `rangemap` | crates.io | normal / all | External, not copied; future third-party license audit required |
175| `raw-window-handle` | crates.io | normal / all | External, not copied; future third-party license audit required |
176| `resvg` | crates.io | normal / all | External, not copied; future third-party license audit required |
177| `rstar` | crates.io | normal / all | External, not copied; future third-party license audit required |
178| `rustc-hash` | crates.io | normal / all | External, not copied; future third-party license audit required |
179| `schemars` | crates.io | optional normal / all | External, not copied; future third-party license audit required |
180| `serde` | crates.io | normal / all | External, not copied; future third-party license audit required |
181| `serde_json` | crates.io | normal / all | External, not copied; future third-party license audit required |
182| `settings_value` | local Warp workspace | optional normal / all | UNSAFE: AGPL via workspace license inheritance |
183| `similar` | crates.io | normal / all | External, not copied; future third-party license audit required |
184| `smallvec` | crates.io | normal / all | External, not copied; future third-party license audit required |
185| `string-offset` | local Warp workspace | normal / all | UNSAFE: AGPL via workspace license inheritance |
186| `strum` | crates.io | normal / all | External, not copied; future third-party license audit required |
187| `strum_macros` | crates.io | normal / all | External, not copied; future third-party license audit required |
188| `sum_tree` | local Warp workspace | normal / all | UNSAFE: AGPL via workspace license inheritance |
189| `tempfile` | crates.io | normal / all | External, not copied; future third-party license audit required |
190| `thiserror` | crates.io | normal / all | External, not copied; future third-party license audit required |
191| `titlecase` | crates.io | normal / all | External, not copied; future third-party license audit required |
192| `tokio` | crates.io | normal / all | External, not copied; future third-party license audit required |
193| `trait-set` | crates.io | normal / all | External, not copied; future third-party license audit required |
194| `vec1` | crates.io | normal / all | External, not copied; future third-party license audit required |
195| `warp_util` | local Warp workspace | normal / all | UNSAFE: AGPL via workspace license inheritance |
196| `command` | local Warp workspace | dev / all | UNSAFE: AGPL via workspace license inheritance |
197| `concat-idents` | crates.io | dev / all | External, not copied; future third-party license audit required |
198| `ctor` | crates.io | dev / all | External, not copied; future third-party license audit required |
199| `rust-embed` | crates.io | dev / all | External, not copied; future third-party license audit required |
200| `simplelog` | crates.io | dev / all | External, not copied; future third-party license audit required |
201| `cfg_aliases` | crates.io | build / all | External, not copied; future third-party license audit required |
202| `arboard` | crates.io | normal / Linux or Windows | External, not copied; future third-party license audit required |
203| `async-io` | crates.io | normal / non-wasm | External, not copied; future third-party license audit required |
204| `ctrlc` | crates.io | normal / non-wasm | External, not copied; future third-party license audit required |
205| `font-kit` | git | normal / non-wasm | Warp git fork excluded; replaced with crates.io `font-kit` |
206| `gloo` | crates.io | normal / wasm | External, not copied; future third-party license audit required |
207| `wasm-bindgen-futures` | crates.io | normal / wasm | External, not copied; future third-party license audit required |
208| `woothee` | crates.io | normal / wasm | External, not copied; future third-party license audit required |
209 
210### `warpui`
211 
212| Dependency | Class | Kind / target | Status |
213| --- | --- | --- | --- |
214| `anyhow` | crates.io | normal / all | External, not copied; future third-party license audit required |
215| `async-task` | crates.io | normal / all | External, not copied; future third-party license audit required |
216| `bytemuck` | crates.io | optional normal / all | External, not copied; future third-party license audit required |
217| `cfg-if` | crates.io | normal / all | External, not copied; future third-party license audit required |
218| `dashmap` | crates.io | normal / all | External, not copied; future third-party license audit required |
219| `derive_more` | crates.io | normal / all | External, not copied; future third-party license audit required |
220| `futures` | crates.io | normal / all | External, not copied; future third-party license audit required |
221| `futures-util` | crates.io | normal / all | External, not copied; future third-party license audit required |
222| `instant` | crates.io | normal / all | External, not copied; future third-party license audit required |
223| `itertools` | crates.io | normal / all | External, not copied; future third-party license audit required |
224| `lazy_static` | crates.io | normal / all | External, not copied; future third-party license audit required |
225| `log` | crates.io | normal / all | External, not copied; future third-party license audit required |
226| `markdown_parser` | local Warp workspace | normal / all | UNSAFE: AGPL via workspace license inheritance |
227| `num-traits` | crates.io | normal / all | External, not copied; future third-party license audit required |
228| `ordered-float` | crates.io | normal / all | External, not copied; future third-party license audit required |
229| `parking_lot` | crates.io | normal / all | External, not copied; future third-party license audit required |
230| `pathfinder_color` | crates.io | normal / all | External, not copied; future third-party license audit required |
231| `pathfinder_geometry` | crates.io | normal / all | External, not copied; future third-party license audit required |
232| `sum_tree` | local Warp workspace | normal / all | UNSAFE: AGPL via workspace license inheritance |
233| `takecell` | crates.io | normal / all | External, not copied; future third-party license audit required |
234| `thiserror` | crates.io | normal / all | External, not copied; future third-party license audit required |
235| `vec1` | crates.io | normal / all | External, not copied; future third-party license audit required |
236| `version-compare` | crates.io | optional normal / all | External, not copied; future third-party license audit required |
237| `warpui_core` | local Warp workspace | normal / all | SAFE MIT candidate, copied as `strato-ui-core` |
238| `wgpu` | crates.io | optional normal / all | External, not copied; future third-party license audit required |
239| `asset_cache` | local Warp workspace | dev / all | UNSAFE: AGPL via workspace license inheritance |
240| `env_logger` | crates.io | dev / all | External, not copied; future third-party license audit required |
241| `futures-timer` | crates.io | dev / all | External, not copied; future third-party license audit required |
242| `image` | crates.io | dev / all | External, not copied; future third-party license audit required |
243| `rust-embed` | crates.io | dev / all | External, not copied; future third-party license audit required |
244| `warpui` | local Warp workspace | dev / all | SAFE MIT candidate, copied as `strato-ui-renderer` |
245| `bindgen` | crates.io | build / all | External, not copied; future third-party license audit required |
246| `cc` | crates.io | build / all | External, not copied; future third-party license audit required |
247| `cfg_aliases` | crates.io | build / all | External, not copied; future third-party license audit required |
248| `arboard` | crates.io | normal / Linux or Windows | External, not copied; future third-party license audit required |
249| `native-dialog` | crates.io | normal / Linux or Windows | External, not copied; future third-party license audit required |
250| `open` | crates.io | normal / Linux or Windows | External, not copied; future third-party license audit required |
251| `global-hotkey` | crates.io | normal / non-macOS and non-wasm | External, not copied; future third-party license audit required |
252| `async-io` | crates.io | normal / non-wasm | External, not copied; future third-party license audit required |
253| `ctrlc` | crates.io | normal / non-wasm | External, not copied; future third-party license audit required |
254| `font-kit` | git | normal / non-wasm, Linux, macOS | Warp git fork excluded; replaced with crates.io `font-kit` |
255| `bimap` | crates.io | normal / non-macOS | External, not copied; future third-party license audit required |
256| `command` | local Warp workspace | normal / non-macOS | UNSAFE: AGPL via workspace license inheritance |
257| `cosmic-text` | git | normal / non-macOS | Warp git fork excluded; replaced with crates.io `cosmic-text` |
258| `derivative` | crates.io | normal / non-macOS | External, not copied; future third-party license audit required |
259| `fontdb` | crates.io | normal / non-macOS | External, not copied; future third-party license audit required |
260| `memmap2` | crates.io | normal / non-macOS | External, not copied; future third-party license audit required |
261| `owned_ttf_parser` | crates.io | normal / non-macOS | External, not copied; future third-party license audit required |
262| `resvg` | crates.io | normal / non-macOS | External, not copied; future third-party license audit required |
263| `serde` | crates.io | normal / non-macOS | External, not copied; future third-party license audit required |
264| `version-compare` | crates.io | normal / non-macOS | External, not copied; future third-party license audit required |
265| `winit` | git | normal / non-macOS | Warp git fork excluded; replaced with crates.io `winit` |
266| `gloo` | crates.io | normal / wasm | External, not copied; future third-party license audit required |
267| `js-sys` | crates.io | normal / wasm | External, not copied; future third-party license audit required |
268| `wasm-bindgen` | crates.io | normal / wasm | External, not copied; future third-party license audit required |
269| `wasm-bindgen-futures` | crates.io | normal / wasm | External, not copied; future third-party license audit required |
270| `web-sys` | crates.io | normal / wasm | External, not copied; future third-party license audit required |
271| `blocking` | crates.io | normal / Linux | External, not copied; future third-party license audit required |
272| `dirs` | crates.io | normal / Linux | External, not copied; future third-party license audit required |
273| `fontconfig` | crates.io | normal / Linux | External, not copied; future third-party license audit required |
274| `futures-lite` | crates.io | normal / Linux | External, not copied; future third-party license audit required |
275| `nix` | crates.io | normal / Linux | External, not copied; future third-party license audit required |
276| `notify-rust` | crates.io | normal / Linux | External, not copied; future third-party license audit required |
277| `tini` | crates.io | normal / Linux | External, not copied; future third-party license audit required |
278| `urlencoding` | crates.io | normal / Linux | External, not copied; future third-party license audit required |
279| `x11-dl` | crates.io | normal / Linux | External, not copied; future third-party license audit required |
280| `x11rb` | crates.io | normal / Linux | External, not copied; future third-party license audit required |
281| `zbus` | crates.io | normal / Linux | External, not copied; future third-party license audit required |
282| `virtual-fs` | local Warp workspace | dev / Linux | UNSAFE: AGPL via workspace license inheritance |
283| `block` | crates.io | normal / macOS | External, not copied; future third-party license audit required |
284| `chrono` | crates.io | normal / macOS | External, not copied; future third-party license audit required |
285| `cocoa` | crates.io | normal / macOS | External, not copied; future third-party license audit required |
286| `core-foundation` | crates.io | normal / macOS | External, not copied; future third-party license audit required |
287| `core-graphics` | crates.io | normal / macOS | External, not copied; future third-party license audit required |
288| `core-text` | crates.io | normal / macOS | External, not copied; future third-party license audit required |
289| `dispatch` | crates.io | normal / macOS | External, not copied; future third-party license audit required |
290| `foreign-types` | crates.io | normal / macOS | External, not copied; future third-party license audit required |
291| `libc` | crates.io | normal / macOS | External, not copied; future third-party license audit required |
292| `metal` | crates.io | normal / macOS | External, not copied; future third-party license audit required |
293| `objc` | crates.io | normal / macOS | External, not copied; future third-party license audit required |
294| `rand` | crates.io | dev / macOS | External, not copied; future third-party license audit required |
295| `dwrote` | git | normal / Windows | Warp git fork excluded; replaced with crates.io `dwrote` |
296| `tauri-winrt-notification` | crates.io | normal / Windows | External, not copied; future third-party license audit required |
297| `windows` | crates.io | normal / Windows | External, not copied; future third-party license audit required |
298| `windows-core` | crates.io | normal / Windows | External, not copied; future third-party license audit required |
299| `windows-version` | crates.io | normal / Windows | External, not copied; future third-party license audit required |
300| `winreg` | crates.io | normal / Windows | External, not copied; future third-party license audit required |
301 
302## Blockers
303 
304No AGPL Warp dependency remains copied or linked from the Strato UI crates.
305Remaining non-blocking follow-up items:
306 
3071. Runtime validation of the macOS Metal renderer requires Apple's Metal
308 Toolchain. The build script currently writes a placeholder shader library for
309 `cargo check` only when the toolchain is absent.
3102. Color emoji detection from Warp's `font-kit` fork is disabled until Strato
311 owns a clean implementation against public crates.
3123. A full third-party registry dependency license report should be generated
313 before publishing the Strato UI crates outside this repository.
314 
315## Conclusion
316 
317The repository remains MIT/commercial-license compatible on the basis of this
318audit because only the two explicitly MIT WarpUI crates and Warp's MIT license
319text were copied. Unsafe Warp workspace dependencies were excluded and replaced
320with clean-room Strato modules or crates.io dependencies. The imported crates
321are workspace-active and compile under `cargo check` in the current StratoSDK
322workspace.
323