Platform · Engines & Licensing
Built on open-source engines, with licence rules written down first
One3 is designed to embed proven open-source engines instead of rebuilding them, but only under licences that allow commercial SaaS, self-hosting and your own branding without a paid edition.
Why licences are a product decision
Open source is not "free of rules". Every project is copyrighted software, and the author hands out a licence: a conditional permission. For a multi-tenant, white-labelled SaaS hosted in India, four questions matter at once:
- Can we use it commercially?
- Can we run it as a hosted service for paying tenants?
- Can we keep One3's own code closed?
- Can we remove the project's branding and show the tenant's brand instead?
A licence answers the first three. Trademark policy answers the fourth. One3's plan checks both for every engine.
The founder's decision is open-source engines only, under licences that permit commercial SaaS, self-hosting and white-labelling without source disclosure or a paid edition. One3 does not rewrite what a well-maintained permissive engine already does. It also does not adopt an engine whose rebranding, service use or redistribution depends on buying a licence.
The evaluation in plan numbers
- open-source candidates evaluated
- 100
- licences read from a primary source
- 99
- verdicts of adopt, adopt-candidate or adopt-as-alternative
- 54
- rejected for customer-facing use
- 33
- written decision rules (DR-1 to DR-10)
- 10
The four licence buckets and One3's position
| Licence class | Examples | One3 position |
|---|---|---|
| Permissive | MIT, BSD-2/3-Clause, ISC, Apache-2.0 | Default choice. Keep the notice and licence text. Do not use the project's trademarks in tenant-facing branding. Apache-2.0 is preferred where there is patent surface. |
| Weak / file-level copyleft | MPL-2.0, LGPL, EPL-2.0 | Allowed. MPL files are used unmodified; any change lives in a public fork. LGPL components stay replaceable through dynamic linking or a separate service. One3's own code stays closed. |
| Strong / network copyleft | GPL-2.0, GPL-3.0, AGPL-3.0 | Not in the product stack. Only as an isolated, separately deployed service with no linking and counsel sign-off, or under a purchased commercial licence. No AGPL component is in the recommended stack. |
| Source-available / non-OSI | BSL/BUSL, SSPL, Elastic License 2.0, Sustainable Use, Functional Source, Commons Clause | Rejected for anything customer-facing, because these licences restrict offering the software as a service. |
| Forced branding | Any engine with a forced logo, watermark or paid white-label rights | Rejected, or treated as a paid component and priced before adoption. |
The decision rules
Ten rules bind every Capability Brief that proposes an embedded engine. These are the core of them.
Default to permissive or MPL-2.0
MIT, BSD, ISC, Apache-2.0, MPL-2.0, PostgreSQL, 0BSD and CC0 components may be adopted without legal review, subject to the obligations checklist.
MPL-2.0 used unmodified
If an MPL-2.0 file must change, the change lives in a public fork and the fork URL goes on the attributions page. No private patches in the monorepo.
GPL and AGPL only under strict conditions
Either a fully isolated, unmodified separate service with counsel sign-off, or a purchased commercial licence. There is no third option.
Never source-available for customer-facing use
Anything a tenant can see or use, or that runs in the tenant's data path, never uses BSL, SSPL, ELv2, Sustainable Use, FSL or Commons Clause terms.
Branding must be replaceable
No forced logo, watermark, splash or "powered by" badge, and no use of the project's mark in One3 naming.
A Fact Register row for every engine
Version, licence, source URL, access date, integration shape, obligations, owner and re-check date. No engine ships without its row.
Maintenance is a licence-adjacent risk
A component with no release in 18 months (an estimate to confirm) needs fork ownership or a narrow, format-stable surface.
Every engine is replaceable
Each engine sits behind a One3 interface, so a relicensing can be handled by swapping the implementation without touching business logic.
Copyleft never shares a process or schema
Copyleft components get their own process and their own store or schema. One3 reads them through their API.
How an engine is decided
Every candidate goes through the same flow before it can enter the product.
- 1
Check for a source-available licence
If it is non-OSI source-available and customer-facing, it is rejected. An internal developer tool goes to a separate ADR review.
- 2
Check for GPL or AGPL
If it can run as a fully isolated, unmodified separate service, it is adopted only after counsel signs off. If not, a commercial licence must be available and affordable, or it is rejected.
- 3
Check for LGPL
Server-side only and not distributed: adopted. Inside a shipped desktop or mobile client: legal review for the relinking obligation.
- 4
Check for MPL-2.0 or EPL-2.0
Adopted when used unmodified. Any modification goes to a public fork.
- 5
Check branding on permissive engines
If branding can be replaced, the engine is adopted with the checklist and a Fact Register row. If not, it is treated as a paid component and priced first.
Engines adopted for the Office app
| Office module | Adopted engines | How they run |
|---|---|---|
| Drive | Apache OpenDAL, SeaweedFS, ClamAV, qpdf | OpenDAL as a library; SeaweedFS as a separate service; ClamAV as its own daemon, never linked and never shipped in a client |
| Docs | TipTap core and open extensions, Yjs, Hocuspocus; Collabora Online for imported-file fidelity; Gotenberg for rendering; Pandoc for structured conversion | TipTap and Yjs as libraries; Hocuspocus and Collabora as separate services; Pandoc as a separate process |
| Sheets | Univer Apache-2.0 core, Yjs and Hocuspocus, SheetJS CE, ExcelJS; Collabora for full-fidelity .xlsx | Libraries, with Collabora as a separate service; SheetJS pinned from its official CDN |
| Slides | Reveal.js, PptxGenJS; Collabora for imported fidelity | Libraries, with Collabora as a separate service |
| Calendar & Booking | ical.js, ical-generator, FullCalendar MIT core | Libraries; ical.js used unmodified |
| Meet | LiveKit; faster-whisper and whisper.cpp; FFmpeg LGPL-only build | LiveKit and whisper as separate services; FFmpeg as a separate process with its build flags asserted in CI |
| Sign | pdf.js, qpdf, pdf-lib, Apache PDFBox, plus a CCA-empanelled eSign provider for Aadhaar eSign | Libraries and one optional JVM sidecar; no copyleft in this path by design |
| Search / eDiscovery | OpenSearch | Separate service |
| Sandbox / add-ons | QuickJS-ng, isolated-vm, gVisor or Firecracker | Library, then OS-level sandbox |
| OCR / viewers | Tesseract, PaddleOCR, pdf.js | Separate AI service; model weights get their own Fact Register rows |
| Desktop sync client | rclone plus One3's own server sync API | No GPL or LGPL component may be linked into a downloadable client |
Mail and Chats use no engine in Year 1
Mail in Year 1 is planned as a connected integration over the Gmail and Microsoft Graph APIs under tenant consent. The plan's reasoning is that the real cost of hosting mail is deliverability and sender reputation, not code. A native self-hosted option is considered only after W3. Chats is built on One3's own realtime gateway.
Adopted engines beyond Office
The same rules apply to design, video, BI and automation.
Whiteboard and canvas
Excalidraw for the whiteboard and diagram surface, Fabric.js for canvas-object editing and Konva as the canvas rendering layer.
Video rendering
An LGPL-only FFmpeg pipeline with a One3 composition layer above it is the default renderer.
Metrics and charts
Cube as the semantic and metrics layer, and Apache ECharts as the charting library for One3-built dashboards.
Durable workflows
Temporal for long-running Actions, sagas and compensation.
Forms runtime
The MIT survey-core runtime. One3 builds its own form designer on top of it.
The complete copyleft inventory
| Component | Licence | How it runs | Why it is defensible |
|---|---|---|---|
| Collabora Online | MPL-2.0 | Separate service | File-level copyleft, no network trigger, used unmodified |
| Pandoc | GPL-2.0-or-later | Separate process (CLI) | GPL has no network trigger; not conveyed; not linked |
| ClamAV | GPL-2.0 | Separate daemon | Same as Pandoc |
| FFmpeg (LGPL-only build) | LGPL-2.1+ | Separate process | LGPL on the server, nothing distributed |
| ical.js | MPL-2.0 | Library, unmodified | File-level copyleft; no modification |
The four artefacts CI must produce
Licence obligations are planned as build outputs, not as a manual review.
- 1
Third-party notices file
Generated from the dependency manifest and from container image contents, and shipped in every build and image.
- 2
In-product attributions page
At Settings → About → Open-source licences, styled in the tenant's own chrome, reachable but never a banner.
- 3
Public modifications index
Lists every fork URL where One3 carries changes to MPL, LGPL or GPL files. Empty is the goal.
- 4
Build-flag assertion suite
FFmpeg has no GPL or non-free flags, no GPL binary appears in any client build, SheetJS resolves to the official CDN, and no source-available package appears anywhere in the dependency tree.
Licences change, so every row has a re-check date
Several well-known projects have moved from permissive licences to source-available or AGPL terms in recent years, and some have moved back. That is why every engine sits behind a replaceable interface and every Fact Register row has a re-check date: the next major upgrade or 12 months, whichever comes first. Open questions on GPL boundaries, LGPL in shipped clients, trademarks, patents and indemnities are listed for Indian counsel to answer before W3. This page describes the plan's approach and is not legal advice; verify with counsel.
Questions about open source in One3
Will my One3 workspace show other projects' logos?
It is not designed to. Before adoption, each engine is checked for forced logos, watermarks, splash screens and "powered by" strings. Attribution lives on an about and licences page, not in the product chrome.
Does One3 use AGPL software?
No AGPL component is in the recommended product stack. For every AGPL candidate evaluated, either a permissive or weak-copyleft alternative existed, or the capability was One3 product logic to build anyway.
Does using open-source engines add licence fees?
The plan's Office engine decisions carry no licence fee. Four previously considered commercial engine tiers were removed. The cost is replaced by obligations: notice files, a licence check in CI and Fact Register re-checks.
What happens if an engine changes its licence?
Each engine sits behind a One3 interface, so the plan treats a relicensing as an operational task: swap the implementation without touching business logic. Licences are re-read on every major version bump.
What does One3 still build itself?
The parts that make it One3: binding every file, thread and meeting to business records, the governed Action layer, accountable Digital Employees, the Investment & ROI Ledger, India-first compliance, multi-tenancy and white-label, and the replaceability layer.
Is this legal advice for my own use of these engines?
No. It describes One3's internal rules. Licence terms can change and their meaning depends on how software is used, so verify your own position with counsel.
Ask about One3's engine and licence choices
Talk to us about how One3 plans to use open-source engines, keep your brand in front, and document every licence obligation.