← Back to home

Loom — License FAQ

Loom is source-available under FSL-1.1-Apache-2.0 (the Functional Source License 1.1, with an Apache 2.0 future grant). This document answers the questions a typical evaluator — engineer, legal, or procurement — has before adopting Loom for a production system.

If the answer here ever conflicts with the LICENSE file, the LICENSE file is authoritative.


1. What is licensed under FSL-1.1-Apache-2.0?

Everything in this repository: the ddd CLI, the Langium grammar, the IR, the per-platform generators (the five backends — TypeScript / .NET / Phoenix / Python / Java — and the frontends — React / Vue / Svelte / Angular), the VS Code extension, and the documentation. This is the generator itself.

You may use the generator for any Permitted Purpose — internal use, building products and services for your own customers, non-commercial education, non-commercial research, and professional services delivered to a Loom licensee. See the LICENSE file for the formal definition.

Two years after each release is published, that release converts automatically to the Apache License 2.0 (the "future license" clause). No action required on your part.

2. What about the code Loom generates?

The output of ddd generate is yours. We license it to you under the MIT License, unencumbered by FSL.

Concretely:

You are not required to attribute Loom in your generated project, though we'd appreciate it. You may not use the "Loom" name or trademarks to brand your own product (see the Trademarks clause of the LICENSE).

3. What counts as "Competing Use"?

FSL forbids using the Software in a commercial product or service that substitutes for Loom or offers substantially similar functionality. Plain-English examples:

Use case Allowed? Why
Building a SaaS for your own customers using ddd generate ✅ Internal use; the SaaS is not a DDD generator.
Internal line-of-business apps at any company size ✅ Internal use.
Commercial consulting where you generate code for clients ✅ Professional services to licensees.
Forking Loom and contributing patches upstream ✅ Modifications and derivative works are explicitly granted.
Self-hosting Loom for your team's CI ✅ Internal use.
Repackaging Loom (or a fork) as your own commercial DDD code generator ❌ Substitutes for the Software.
Hosting Loom-as-a-Service (web-based generator users pay you for) ❌ Substantially similar functionality, sold to others.

When in doubt, ask: "Are we using Loom to build something else, or are we re-selling Loom-shaped functionality?" The first is allowed; the second is not.

4. Why FSL and not OSI-approved open source today?

FSL is a fair-source license: it gives users near-total freedom for any non-competing use now, and converts to a true OSI-approved license (Apache 2.0) on a fixed schedule. This lets the project sustain itself in its early years while still committing to a fully open future.

If your organisation requires OSI-approved licensing on its dependencies, note that:

If your organisation requires OSI-approved licensing on the generator itself today, Loom is not yet eligible. Watch the LICENSE file for the conversion date or contact the maintainers.

5. The generator emits Dockerfiles, docker-compose.yml, and

infrastructure scaffolding — is that all MIT too?

Yes. Everything ddd generate writes — including docker-compose.yml, db-init/, generated Dockerfiles, CI scaffolding, .loom/wire-spec.json — is part of the generated output and is licensed to you under MIT.

6. What if I pin a generated file via .loomignore?

Pinning a file (see tools.md) tells Loom to leave it alone on subsequent regens. Once pinned, the file is yours to edit freely; the MIT grant from §2 still applies to whatever Loom wrote the first time, and your modifications are yours under whatever license you choose for your project.

7. Can I redistribute Loom internally inside my company?

Yes — internal redistribution within an organisation is included in "internal use and access." Make sure each copy keeps the LICENSE file and copyright notice intact (per the Redistribution clause).

8. Where do I send licensing questions that aren't covered here?

Open an issue on the GitHub repository, or contact the maintainers listed in package.json. Legal notices should reference the specific clause of the LICENSE file your question is about.