Version 3.6.1 · All versions

All pages

These are the docs as released with Solid Memo 3.6.1. Read the latest docs.

The Standard for Public Code

How well Solid Memo meets the Standard for Public Code (version 0.8.1), what the maintainer decided, and what is left. Each criterion is a list of requirements, and each requirement is a MUST, a SHOULD or OPTIONAL. The project is committed to meeting the Standard, and says so with the commitment badge in its README; this page shows how far it has come.

This is an assessment of main at 2b780237 (version 2.1.1), made on 2026-10-16 (#78). Every requirement of the 16 criteria, MUST, SHOULD and OPTIONAL, was checked again against the Standard's own list. It replaces the re-review of 2026-10-13 (main at 90652c08 with the branch public-code-followup, updated in pieces until 2026-10-16 as changes landed), the assessment of 2026-10-11 (the branch standard-for-public-code, based on main at cae0a9f) and the first one, of main at 18eace6 on 2026-10-10. It is not a promise. Check items off as they land, and re-assess when they do.

Summary

The first assessment found strong engineering and weak process. The branch standard-for-public-code closed most of the process gaps with files and checks, and the maintainer has since changed every setting it asked for:

The branch public-code-followup fixed what the re-review found: tests for the two scripts that had none, the standards missing from standards.md, the tool terms missing from the glossary, a checklist for reviewers, a plain statement that 0.1.0 was not tagged yet (which the branch semantic-release replaces, below), the maintainer's GitHub account in GOVERNANCE.md, CODEOWNERS and CODE_OF_CONDUCT.md, and this page.

The branch semantic-release replaces the plan to tag 0.1.0 by hand (decision 7): every commit follows Conventional Commits, checked by commitlint in CI, and semantic-release releases a version after CI passes on main. The first version is 1.0.0, and stable, and 0.1.0 is never tagged (releasing.md).

Since 2026-10-13, main has released eight versions, 1.0.0 to 2.1.1, each with a GitHub release, and the site runs only the newest. Every pull request goes through the merge queue, which merges it with a merge commit that names it. The release's key is in the release environment, which allows only main. CI fails a change to the public API that no commit calls breaking, and a commit that says no why or names no issue. CodeQL scans the code, and the five alerts it raised were fixed in pull requests (#96, #99 to #102). The project talks only in public and in writing (decision 13).

What is left falls into three groups:

  1. Actions for the maintainer: making the project findable, and the leftover local branches.
  2. Small fixes the re-assessment found, which this page records and does not make. Two of them would bring back SHOULDs met on 2026-10-13: terms that are not explained (10), and a DOI whose entry does not name the website (14).
  3. Gaps that stay open for now. The largest is criterion 7, review by someone other than the author, which cannot be met honestly while the project has one maintainer, and is a decided gap until then. Criterion 6 is non-compliant: older commits on main record no reason and link no issue; both apply from 1.0.0 on, and CI now refuses a new commit without a reason or a link. Declaring 1.0.0 stable makes the 0.x dependencies it ships a partial in criterion 16, a decided gap (decision 14).

Scorecard

The counts are requirements met out of those in the criterion. Partial and unknown count as not met. A requirement that holds because there is nothing to apply it to counts as met, and the text says so.

#CriterionMUSTSHOULDVerdict
1Code in the open3/30/1Compliant
2Bundle policy and source code2/22/2Compliant
3Make the codebase reusable and portable2/24/8Compliant
4Welcome contributors3/34/4Compliant
5Make contributing easy5/5–Compliant
6Maintain version control1/34/4Non-compliant
7Require review of contributions1/31/5Non-compliant
8Document codebase objectives1/11/1Compliant
9Document the code3/34/5Compliant
10Use plain English5/51/2Compliant
11Use open standards4/43/3Compliant
12Use continuous integration4/42/3Compliant
13Publish with an open license4/41/1Compliant
14Make the codebase findable–3/8No MUSTs
15Use a coherent style1/12/2Compliant
16Document codebase maturity2/32/2Partial
Total41/4634/51

A criterion is compliant when all its MUSTs are met. It is non-compliant when more than half of them are not met, and partial otherwise.

What changed since 2026-10-13

The re-review of 2026-10-13 scored 41/46 MUSTs and 36/51 SHOULDs. Two SHOULDs went from met to partial, and no MUST changed:

Two verdicts changed within a count:

One OPTIONAL requirement was missing from the page and is added, met: courtesy translations (10). Everything else held. Where its text changed, it is to record what landed since: the releases, the merge queue, the release environment, the breaking-change gate, the commit checks, CodeQL, the changelog in the footer and the Arabic decks.

Earlier scores

main at 90652c08 alone scored 36/46 MUSTs and 31/51 SHOULDs. The branch public-code-followup added 4.3, 7.4, 10.3, 10.6, 11.3, 12.1, 16.2 and the changelog's SHOULD in criterion 16. The branch semantic-release turned 16.3 from met to partial: it declared 1.0.0 ready to use, and 1.0.0 ships four dependencies before their own 1.0.0. Its first release, 1.0.0, met 16.1 and the SHOULD to mark released versions in criterion 6, which brought the MUSTs to 41/46.

The assessment of 2026-10-11 scored 39/46 and 37/51, and the first one 17/44 and 8/50. Each later one was stricter than the last, and counts as partial what has not been done yet, such as reviews by someone else (7.2, 7.5), examples for every feature (9.6) and a check of the docs' coverage (12.7). The first assessment counted too few requirements in criteria 1, 10 and 11; the counts above are the Standard's own.

The five MUSTs left are in criterion 6, the commits on main that record no reason or link no issue, which the history keeps, though CI now refuses new ones; in criterion 7, a second reviewer, whose reviews would also cover the source, the policy, the tests and the docs; and in criterion 16, the dependencies before 1.0.0 that the stable app ships.

GitHub settings

Some requirements depend on settings that are not in the repository. This is their state on 2026-10-16. These were read from GitHub's and Zenodo's public APIs:

The maintainer checked the ones that cannot be read without signing in:

Check them again before relying on them.

Criteria

What holds today, and what does not, criterion by criterion.

1. Code in the open

2. Bundle policy and source code

3. Make the codebase reusable and portable

4. Welcome contributors

5. Make contributing easy

6. Maintain version control

7. Require review of contributions

8. Document codebase objectives

9. Document the code

10. Use plain English

11. Use open standards

12. Use continuous integration

13. Publish with an open license

14. Make the codebase findable

15. Use a coherent style

16. Document codebase maturity

Decisions made

The maintainer made these choices. Each is recorded where it applies.

  1. Governance. One maintainer decides, in public, and gives reasons. A regular contributor can be invited as a co-maintainer. If the maintainer steps away, he hands the organization to a co-maintainer, or the repository is archived (GOVERNANCE.md).
  2. Security contact. GitHub's private vulnerability reporting only: no email address and no /.well-known/security.txt (SECURITY.md).
  3. Review. The maintainer merges his own pull requests without a second reviewer, as a stated, temporary exception (GOVERNANCE.md). The project invites a second reviewer.
  4. Email in decks. The 205 published deck versions keep foaf:mbox, as a published version is never edited. A new version names the project's contact, a dcat:contactPoint that points at the issue tracker, with no email address. npm run library:check checks it for every version not published at the base (deck-library.md, privacy.md).
  5. Repository name. Kept as website. The description and the metadata name the project.
  6. License of docs/ and ns/. MIT, as for the code, stated in the README and set up with REUSE.
  7. Maturity and versions (2026-10-13, replacing "beta, Semantic Versioning at 0.x, tagged by hand, with a changelog in the Keep a Changelog format"). Every commit follows Conventional Commits 1.0.0, Renovate's included, checked by commitlint in CI. semantic-release releases a version on every push to main that has a releasable commit, once CI has passed: it commits the version and the changelog back to main with a deploy key that the ruleset lets bypass its pull request, tags the commit and makes a GitHub release, from which Zenodo mints a DOI. The first version is 1.0.0, and stable; 0.1.0 is never tagged (releasing.md, CONTRIBUTING.md). Only a released version is deployed: deploy.yml deploys the commit a version tag names (deployment.md).
  8. Renovate. Updates are merged automatically through pull requests (automergeType: 'pr'), once CI passes. Renovate cannot approve its own pull requests, so once main requires an approval, a maintainer approves each update and automerge merges it after that; Renovate gets no bypass. If that is too many approvals, automerge is narrowed, not the review (GOVERNANCE.md).
  9. Formatting. Biome, with a line width of 100 (style.md).
  10. Spelling. American English everywhere, checked by cspell.
  11. Code of conduct. The Contributor Covenant 2.1. Reports go to the maintainer's email, which is published for that purpose.
  12. Criteria 6 and 7 with one maintainer (2026-10-13). Decisions in commit messages (6.2) and links to issues (6.3) apply from 1.x: the commits before 1.0.0 stay as they are. Review by another contributor (7.1), and reviews that cover the source, the policy, the tests and the docs (7.2), are recorded as gaps while the project has one maintainer.
  13. Open, written communication (2026-10-15). All collaboration, maintenance, decisions and discussion happen openly and in writing, in issues, Discussions, pull requests and their reviews, and commit messages, so every decision and its reasons can be found and linked later. The project runs and endorses no chat, direct messages, or voice or video calls or meetings. Something said elsewhere counts for nothing until it is written up in public, and a maintainer points such a message to the public channel. This binds the maintainers between themselves too. The two exceptions are private but still written: security vulnerabilities, in a private advisory made public once the fix is deployed, and code of conduct reports, by email or through GitHub's Report abuse (GOVERNANCE.md).
  14. Dependencies before 1.0.0 (2026-10-15). Solid Memo is stable within an ecosystem that is not yet at 1.0: the Solid Protocol and Solid-OIDC are drafts, and the libraries around them are 0.x. The dependencies before 1.0.0 that vendor-code.md allows stay, each with its reason, and criterion 16's MUST on dependencies ready to use is a recorded gap until they reach 1.0.0 or a ready replacement exists. A new dependency before 1.0.0 is still refused unless it is added there with its reason.

Whatever is decided later:

What remains

Each item below starts with its state: Done. when it has landed, Open. when it has not.

GitHub settings (admin)

Only an admin of the repository can change these. All are done:

Actions for the maintainer

Small fixes the re-assessment found

Found on 2026-10-16 and not made here, as #78 leaves fixing to later changes:

Gaps that remain

These are not met, and the settings and actions above do not close them:

The plan, as it landed

The first assessment's plan, each item marked Done. when it has landed and Open. when it has not: most of it landed on the branch standard-for-public-code.

Phase 1: files and small fixes

Phase 2: CI and GitHub settings

Phase 3: larger work

Checking progress