Skip to content

Latest commit

 

History

History
158 lines (141 loc) · 22.9 KB

standards.md

File metadata and controls

158 lines (141 loc) · 22.9 KB

Standards

Every standard and specification Solid Memo uses, with its version, status, where it's published and where the code uses it. The glossary explains unfamiliar terms; rules beyond these formats, such as SM-2 and FSRS-6, are in policy.md.

Open means anyone may read and implement the specification, free of charge and royalties, and no single vendor decides who may use it. Every specification below is open; the drafts and de facto ones are in Drafts and de facto specifications.

Solid

Standard Version Status Where used Open
Solid Protocol 0.11.0 W3C Solid Community Group draft Reading and writing the pod: packages/solid/src/ through its client modules (client/) on @inrupt/solid-client; the storage found by pim:storage (data-model.md) Yes (draft)
Solid-OIDC 0.1.0 W3C Solid Community Group draft Login and session restore: solidSessionGateway.ts through the sign-in client, client/session.ts, on @inrupt/solid-client-authn-browser (with SOLID_CLIENT=solid-memo-client, on oauth4webapi, solid-memo-client.md), and the site's Client ID Document, which clientId.ts writes (authentication.md) Yes (draft)
WebID and the Solid WebID Profile WebID 1.0 (2014); Solid WebID Profile 1.0.0 W3C Incubator Group editor's draft; W3C Solid Community Group draft The user's identity; the profile gives the issuer, storage and type indexes (authentication.md, onboarding.md, data-model.md) Yes (draft)
Type Indexes 1.0.0 Editor's draft Finding and registering an instance: typeIndex.ts (data-model.md) Yes (draft)
Web Access Control and Access Control Policy WAC 1.0.0; ACP 0.9.0 W3C Solid Community Group drafts Making a published release public: solidReleasePublisher.ts, through @inrupt/solid-client's universal access in client/access.ts, which speaks whichever the pod uses (boundaries.md) Yes (draft)
Linked Data Platform 1.0 W3C Recommendation Containers in the pod and the guest's pod: localPod.ts (guest-mode.md) Yes
Linked Web Storage Protocol and its OpenID Connect authentication suite 1.0 W3C Working Draft A storage that speaks LWS: finding it (lwsStorage.ts) and its sign-in (lwsAuth.ts), on a server that takes the Solid Protocol's requests too (lws.md) Yes (draft)
OAuth 2.0 Token Exchange and Protected Resource Metadata RFC 8693 (2020); RFC 9728 (2025) IETF Proposed Standards The ID token exchanged for an LWS storage's token, and the challenge that leads to it (lwsAuth.ts, solid-memo-client.md) Yes

Linked data

Standard Version Status Where used Open
RDF 1.1 W3C Recommendation All data in the pod, the vocabulary, the shapes and the deck library Yes
Turtle 1.1 W3C Recommendation Every document Solid Memo writes, through N3.js: packages/turtle/ (architecture.md) Yes
JSON-LD 1.1 W3C Recommendation A deck saved as a file (data-model.md, deckFile.ts); the site's description in apps/web/index.html; the site's Client ID Document, written by clientId.ts (authentication.md) Yes
SPARQL 1.1 Update 1.1 W3C Recommendation Pod edits, a PATCH of DELETE DATA and INSERT DATA blocks (datasets.ts), which the guest's pod accepts too (localPod.ts); not N3 Patch, the Solid Protocol's own format Yes
RDF Schema 1.1 W3C Recommendation Solid Memo's vocabulary, ns/vocab/v1.ttl (vocab.md) Yes
OWL 2 2 W3C Recommendation The vocabulary's classes and properties, and owl:deprecated on a retired card (vocab.md) Yes
XML Schema datatypes 1.1 W3C Recommendation Typed literals (xsd:dateTime, xsd:integer, …) Yes
SHACL 1.0 (2017) W3C Recommendation The shapes in ns/shapes/, checked in the browser by rdf-validate-shacl and in CI by pySHACL (shapes.md, validation.md) Yes
DCAT 3 W3C Recommendation Decks, releases and the library's catalog (deck-library.md, releaseModel.ts) Yes
DCAT-AP 3.0.1 SEMIC (European Commission) specification Profile validation of decks and the library, with the vendored shapes in packages/vocab/vendor/dcat-ap/3.0.1/ (validation.md) Yes
ADMS 1.0 W3C Working Group Note adms:versionNotes on a release (deck-library.md) Yes
SKOS 2009 W3C Recommendation The concept schemes in ns/vocab/ (vocab.md), checked with the vendored SkoHub shapes Yes
PROV-O 2013 W3C Recommendation How a release was made, and the sources it derives from (deck-library.md, provenanceRules.ts) Yes
SPDX RDF terms 2.3 Linux Foundation specification (SPDX 2.2.1 is ISO/IEC 5962:2021) The SHA-256 spdx:checksum of the script that made a deck, in its provenance (decks/swedish-labour-market-taxonomy-occupation-names/v2.ttl), checked by DCAT-AP's checksum shape; the spdx: prefix a release is written with (solidReleaseDraftRepository.ts) Yes
DCMI Metadata Terms 2020 DCMI Recommendation (ISO 15836-2) Titles, descriptions, creators, licenses and dates (dcterms:); a library card's subject (dcterms:subject) and its replacement in its source (dcterms:isReplacedBy) (deck-library.md) Yes
FOAF 0.99 Specification by its authors, stable since 2014 Agents: creators and the publisher (agentRecord.ts) Yes
vCard Ontology 2014 W3C Interest Group Note A deck version's contact, a vcard:Kind with the project's issue tracker as its vcard:hasURL (deck-library.md), checked by deckLibrary.ts Yes
schema.org current release, unpinned (releases) W3C Community Group vocabulary, de facto Courses, chapters, steps, wrong options (courses.md); the site's description in apps/web/index.html Yes (de facto)
EU Vocabularies authority tables as referenced in ns/vocab/external.ttl Publications Office of the European Union reference data A deck's languages and its data theme EDUC (deck-library.md) Yes
IANA media types registry IANA registry dcat:mediaType of a deck's distribution Yes

Text and languages

Standard Version Status Where used Open
CommonMark 0.31.2 Specification by the CommonMark project Text in Markdown: packages/markdown/ (markdown.md) Yes
GitHub Flavored Markdown, pipe tables only 0.29-gfm Specification by GitHub, de facto Tables in Markdown text, through markdown-it's table rule (markdown.md) Yes (de facto)
markdown-cjk-friendly through markdown-it-cjk-friendly ^3.0.0 Proposed amendment to CommonMark Emphasis next to Chinese, Japanese and Korean text (markdown.md) Yes (proposal)
BCP 47 RFC 5646 and RFC 4647 IETF Best Current Practice Language tags on text, deck languages and the app's locales: languageTag.ts, locale.ts (vocab.md, i18n.md) Yes
Unicode CLDR plural rules the browser's CLDR Unicode Consortium Plural messages, through Intl.PluralRules (i18n.md, policy.md) Yes
ECMAScript Internationalization API the browser's Ecma International standard (ECMA-402) Plural rules, number and date formats: i18n.tsx Yes
Unicode Normalization Forms UAX #15 Unicode Standard Annex Text in normalization form C in the deck library and in search (deck-library.md) Yes
Unicode Bidirectional Algorithm UAX #9 Unicode Standard Annex Right-to-left text keeps its own direction: isolated between U+2068 and U+2069 in a message (langText.ts), and by the style sheet (i18n.md) Yes
Unicode Text Segmentation UAX #29, the runtime's Unicode Standard Annex Characters counted as grapheme clusters, through Intl.Segmenter, in the deck library's checks (deckLibrary.ts) Yes
Unicode Collation Algorithm UTS #10, the browser's Unicode Technical Standard Sorting and comparing cards and decks, through Intl.Collator (cardQuery.ts, deckTable.ts) Yes
CSS Writing Modes Level 4 W3C Candidate Recommendation direction and unicode-bidi: isolate for right-to-left languages, under :lang() in style.css (i18n.md) Yes
CSV RFC 4180 IETF RFC (Informational) The answers a learner downloads from the statistics: answerCsv.ts (statistics.md) Yes

The web

Standard Version Status Where used Open
OpenID Connect Core and OAuth 2.0 1.0; RFC 6749 OpenID Foundation final specification; IETF RFC Under Solid-OIDC (authentication.md) Yes
DPoP RFC 9449 IETF RFC Under Solid-OIDC: tokens bound to the browser's key Yes
HTTP Semantics RFC 9110 IETF Internet Standard Conditional writes to the pod and the guest's pod: If-Match the ETag read, If-None-Match: * to create (solidDeckRepository.ts, localPod.ts, migrations.md) Yes
Web Linking RFC 8288 IETF RFC (Proposed Standard) The Link header with rel="type" that finds the storage, walking up from the WebID (solidStorageGateway.ts, data-model.md) Yes
UUID RFC 9562, version 4 IETF RFC (Proposed Standard) New deck and card names (deck-<uuid>, card-<uuid>, part of pod IRIs) and the guest's pod's ETags, through crypto.randomUUID() (solidDeckRepository.ts, appUseCases.ts) Yes
Content Security Policy Level 3 W3C Working Draft The policy meta tag in apps/web/index.html, checked by build.test.ts (markdown.md); the docs pages' policy, written by docsSite.ts (markdown.md) Yes
Media Queries Level 5 W3C Working Draft prefers-color-scheme for the theme and prefers-reduced-motion for motion (theme.tsx, motion.ts, style.css) Yes
CSS Color Level 4 W3C Candidate Recommendation Palettes of one's own: opaque sRGB #rrggbb colors, required by the shape ns/shapes/color-set/v1.ttl and read by customPalette.ts (theme.md) Yes
SVG 1.1 (Second Edition) W3C Recommendation The docs' diagrams, drawn by the build into docs/diagrams/ and limited by checkSvg to Mermaid's output (diagrams.ts, markdown.md); the Studio's graph (GraphView.tsx, studio.md); and the statistics charts (BarChart.tsx, LineChart.tsx, statistics.md) Yes
WOFF 2.0 W3C Recommendation The app's self-hosted fonts (vendor-code.md) and Fredoka, embedded in each docs diagram (markdown.md) Yes
IndexedDB 3.0 W3C specification The guest's pod: indexedDbResourceStore.ts (guest-mode.md); the session solid-memo-client restores (oidcStore.ts) Yes
Web Storage HTML Living Standard WHATWG standard Choices kept on the device (privacy.md) Yes
Web Locks W3C Working Draft W3C Working Draft Keeping tabs apart while the guest's pod is written or moved (guest-mode.md), and while solid-memo-client refreshes or clears the stored session (oidcSession.ts) Yes
Open Graph — De facto, published by Meta Link previews in apps/web/index.html Yes (de facto)
Sitemaps 0.9 De facto, by the major search engines sitemap.xml, written by the build (siteMap.ts) Yes (de facto)
robots.txt RFC 9309 IETF RFC robots.txt, written by the build (siteMap.ts) Yes
GraphQL October 2021 Specification by the GraphQL Foundation (Joint Development Foundation) Reading every version of the JobTech taxonomy for the taxonomy deck: taxonomy_deck.py (deck-library.md) Yes
JSON RFC 8259 IETF Internet Standard (STD 90) The taxonomy's answers, read by taxonomy_deck.py, and the normalized snapshot whose checksum the deck's provenance records (deck-library.md) Yes
WCAG 2.2 W3C Recommendation Level AA for the web app and the Studio, checked with axe on every screen the journeys visit (accessibility.md), including the Studio's minimum target size and its single-key shortcuts, which can be turned off (studio.md) Yes

Of the rest of the web platform (HTML, CSS, the DOM, Fetch, ECMAScript), a part is listed only when the app's data or what the reader sees depends on it.

Deck metadata names a license by its own IRI, such as https://creativecommons.org/licenses/by/4.0/, typed dcterms:LicenseDocument (deck-library.md).

The project

Standard Version Status Where used Open
REUSE 3.3 Specification by the Free Software Foundation Europe Every file's copyright and license, in its SPDX header or in REUSE.toml, checked by reuse lint in CI (style.md, testing.md) Yes
SPDX License List current release, unpinned Linux Foundation reference data License identifiers in the files' SPDX-License-Identifier headers and in LICENSES/; dcterms:license <https://spdx.org/licenses/MIT> on the topics scheme (vocab.md) Yes
publiccode.yml publiccodeYmlVersion: "0" Specification by Developers Italia, de facto publiccode.yml, checked by the publiccode.yml parser in CI (testing.md) Yes (de facto)
Citation File Format 1.2.0 Specification by its authors, de facto CITATION.cff, its version and date set by each release (releasing.md) Yes (de facto)
Zenodo deposit metadata — Zenodo's own format, de facto .zenodo.json, the metadata Zenodo gives each archived release, in place of CITATION.cff (releasing.md) Yes (de facto)
Semantic Versioning 2.0.0 Specification by its authors, de facto The app's versions from 1.0.0, chosen by semantic-release from the commits' types (releasing.md) Yes (de facto)
Conventional Commits 1.0.0 Specification by its authors, de facto Every commit message from 1.0.0 on, checked by commitlint in CI (CONTRIBUTING.md) Yes (de facto)
Contributor Covenant 2.1 Code of conduct by its authors, de facto CODE_OF_CONDUCT.md Yes (de facto)
EditorConfig — De facto, by its authors The repository's whitespace: .editorconfig (style.md) Yes (de facto)

Drafts and de facto specifications

None of these is a formal standard, but each is open, so none stands in the way of others working with Solid Memo's code or data.

  • The Solid specifications (the Solid Protocol, Solid-OIDC, the Solid WebID Profile, WAC and ACP), which the W3C Linked Web Storage Working Group is taking toward a Recommendation, are what every Solid server and app implements. Solid Memo's tests run against several servers (testing.md). Its code for them is all in one package, @solid-memo/solid, and its calls to the Inrupt client libraries in that package's src/client/ (vendor-code.md), so a change in the specifications is a change there. The second client, @solid-memo/solid-memo-client, implements the same modules without them, and changes with them.
  • The type indexes are how Solid apps find each other's data today; Solid Memo finds and advertises its instances through them. An instance can also be attached by its URL, without a type index (discovery chain).
  • schema.org is read by search engines and learning tools and free to use (CC BY-SA 3.0). Its terms only add to Solid Memo's own (courses.md), so a tool that doesn't know schema.org still reads the data.
  • GitHub Flavored Markdown: Solid Memo takes only its pipe tables, which most Markdown tools read.
  • markdown-cjk-friendly, by one author, changes only emphasis next to Chinese, Japanese and Korean text; a CommonMark reader without it shows some asterisks as typed. The sm:markdown concept fixes both dialects; a wider or different one is a new concept (markdown.md), so written text keeps its meaning.
  • SM-2 (SuperMemo) and FSRS-6 (Open Spaced Repetition) are published algorithms, not standards. SM-2's description is public (srs.md, policy.md), and so are FSRS-6's formulas and default parameters, with a BSD-3-Clause reference implementation (srs.md, policy.md). A review state names its scheduler (sm:scheduler, vocab.md), so the two live side by side and another can join them.
  • Open Graph and Sitemaps serve link previews and search engines; publiccode.yml, the Citation File Format, Zenodo's deposit metadata, Semantic Versioning, Conventional Commits, the Contributor Covenant and EditorConfig describe the project to people and tools. Nothing in the app or its data depends on any of them.