Licence and attribution
The code is MIT and the guidance prose is separately CC BY 4.0, so a team can quote this guidance inside a clinical safety case with a clear attribution path.
Two licences, on purpose
| What | Licence | File |
|---|---|---|
| Source code, which covers the components, the registry, the scripts and this site | MIT | LICENSE |
| Documentation prose, which is the health, accessibility, content and design guidance | CC BY 4.0 | LICENSE-DOCS |
Most projects apply one software licence to the whole repository and leave the prose in an awkward position. That is a real problem for the people this system is for. Teams building regulated health software quote design guidance verbatim inside clinical safety cases, hazard logs and design-history files, and a software licence says nothing useful about copying a paragraph into a PDF that goes to a regulator.
Creative Commons Attribution 4.0 says it exactly: you may copy and adapt the guidance, including commercially, provided you attribute it. There is no share-alike obligation, so quoting a rule from this site does not place any requirement on the rest of your document.
Using the code
MIT. Copy it, modify it, ship it, sell what you build with it. Keep the copyright notice. There is no warranty. In this domain that is not boilerplate, so it is worth reading the sentence below rather than skipping it.
Using the guidance
Quote it, paraphrase it, adapt it into your own internal standard, translate it. Attribute it like this:
Adapted from the opsinjs documentation (https://opsinjs.pensievelabs.org), CC BY 4.0.Two things make an attribution genuinely useful to whoever reads your document next, and neither is required by the licence:
Name the page and its review date. Guidance here is dated and reviewed on a cadence. See Docs freshness. "Adapted from Clinical status semantics, reviewed 2026-09-02" tells a reviewer which version of a rule you designed against. "Adapted from opsinjs" does not.
Say if you changed it. If you tightened a rule, loosened it, or applied it to a context we did not write for, mark that. A safety reviewer must be able to tell your judgement from ours, and you do not want to inherit the blame for a rule you rewrote.
What is not covered by either licence
- Third-party material we cite. Where a page references the NHS Digital Service Manual, a journal article, WCAG, APCA or a vendor's human-interface guidelines, that material stays under its own licence. We cite and paraphrase in original wording; we do not reproduce. NHS content in particular is Crown copyright and is not redistributed here. The Plain-English A to Z is written from scratch for that reason.
- Names and trade marks. CC BY 4.0 does not license the project's name, and attribution is not endorsement. Do not imply that a product using this system has been reviewed or approved by it.
- Anything on this site marked as an opinion, which is licensed like the rest
but is not evidence and should not be cited as though it were. Health pages
declare
evidence: cited,opinionormixedin their frontmatter for exactly this reason.
No warranty, and no clinical endorsement
The documentation is provided as is. It is design guidance. It is not medical advice, not a clinical safety assessment, and not a regulatory approval. Building an interface that follows this guidance does not make that interface safe; that judgement belongs to the team shipping the product and to its clinical safety officer. Safety, scope and limitations states the full position, including the specific regulatory claims this project does not make.
What we build on
opsinjs stands on other people's work. These are the dependencies whose licences you inherit when you use what this project emits, verified against the versions installed in this repository:
| Project | Licence | What it does here |
|---|---|---|
Base UI (@base-ui/react) | MIT | The unstyled primitives every interactive component is built on, a choice explained in ADR 0001 |
| React and Next.js | MIT | The framework this site runs on |
| Tailwind CSS | MIT | The utility layer the emitted components use |
clsx | MIT | Half of the cn() helper in @/lib/utils, which every emitted component imports: it joins conditional class names |
tailwind-merge | MIT | The other half of cn(): it resolves conflicting Tailwind utilities so that a class you pass in wins over the one the component set |
| fumadocs | MIT | The documentation engine, a choice explained in ADR 0004 |
| shadcn/ui | MIT | The registry specification we distribute through, and the chrome components on this site |
| Lucide | ISC | The one icon library, used for both chrome and components |
| Inter | SIL Open Font License 1.1 | The typeface of this documentation site, and not of the product theme, which uses system-ui |
clsx and tailwind-merge are on that list because emitted source reaches them,
not because this site does. A component copied out of the registry travels with
its own substrate. lib/opsinjs.ts and lib/status.ts are shipped as files
beside it. It imports exactly one module it does not carry: @/lib/utils, which
shadcn init writes into your project and which is those two packages and
nothing else. That is why installing by hand
has you write the helper before a copied component will compile. Packages this
repository depends on but emitted code never reaches are deliberately absent:
they are our problem to license, not something you inherit.
Last read through against the system on 2026-09-20. Due for review every 12 months; expiry is reported by pnpm run check:freshness.