Skip to content

About

The DO monogram of Dennis Otto

Who builds them

Dennis Otto builds and maintains every project on this website, in the open and under open-source licenses. He reads every issue, reviews the pull requests of others, decides what comes next and answers the reports of vulnerabilities; bots do the routine work, each with the least permissions it needs.

Why they exist

The projects connect tools that people already use at home and at work: an Autodarts board with Home Assistant, the document archive of Paperless-ngx with Nextcloud, and the issues and releases of a repository with bots that look after them. Each of them is meant to be as dependable as the work of a team, with one person behind it: tests for every change, signed releases that anyone can check, security checks, a website of its own and a first answer to every issue. The Trust page shows what each project guarantees.

How they are built

Every repository is made from one template, Repo Blueprint: the same checks, workflows, settings and policies in each, for every kind of project. What one repository learns, the blueprint brings to every other.

  • One blueprint. A change of the blueprint, such as a faster check or a new security control, becomes a release of the blueprint, and its bot brings that release to every repository as a pull request, which passes the checks of that repository like any other change.
  • Releases. The release bot turns the titles of the merged pull requests into the next version and its changelog, then builds, signs and publishes the release, and a workflow checks it the way its users can.
  • Updates. Renovate keeps the dependencies, the actions and the images current, a week after their release, or at once when an update fixes a vulnerability.
  • Triage. The issue assistant gives a new issue a first analysis by an AI that only reads, adds its labels, finds duplicates, reminds of open questions and closes an issue once a release ships its fix.
  • Settings. The settings bot applies the settings of every repository, such as the rules of its main, from a file of the repository after every change and every week, so that a setting changes only in a reviewed pull request.
  • Help in pull requests. Every check explains itself when it fails: what it found, why that matters and how to fix it, and a bot makes every fix that a command can make.
flowchart TB
    accTitle: From a change to a release in every repository
    accDescr: A change to the blueprint, a pull request of a person, of Renovate or of a bot, reaches main only through every required check. The release bot of the blueprint turns it into a release with a signed tag, provenance and SBOMs, which can't change once published. The blueprint bot of every project verifies that release and opens a pull request with it, which passes every required check of the project, as the own pull requests of the project do. The release bot of the project then publishes a signed, immutable release of its own. A workflow checks each release as its users can, after every release and every week, the issue assistant closes the issues that the release fixes, and the users get the release, which this website shows.

    subgraph blueprint ["Repo Blueprint"]
        change(["A pull request of a person,<br>of Renovate or of a bot"])
        checks{{"Every required check"}}
        main["main"]
        release(["Release bot<br>signed tag, provenance, SBOM,<br>an immutable release"])
    end

    subgraph project ["Each project"]
        update(["Blueprint bot<br>verifies the release and<br>opens a pull request with it"])
        own(["Its own pull requests"])
        projectchecks{{"Every required check<br>of the project"}}
        projectmain["main"]
        projectrelease(["Release bot<br>a signed, immutable release"])
    end

    verify(["Verify release<br>checked as its users can,<br>after every release and every week"])
    issues(["Issue assistant<br>closes the issues<br>that the release fixes"])
    users["The users<br>and this website"]

    change --> checks --> main --> release
    release -- "every project" --> update
    update & own --> projectchecks --> projectmain --> projectrelease
    projectrelease --> verify & issues
    projectrelease --> users

    classDef bot fill:#526cfe2e,stroke:#526cfe,stroke-width:2px
    classDef person fill:#f59e0b2e,stroke:#f59e0b,stroke-width:2px
    classDef done fill:#16a34a2e,stroke:#16a34a,stroke-width:2px
    class release,update,projectrelease,verify,issues bot
    class change,own person
    class users done

Automation lists every workflow of this repository with what it does, and the dashboard shows the state of every repository at a glance.

Decisions

The decisions that shape a project are written down with their reasons, so that a later change can see why things are as they are. The decision records of this website explain how it serves the whole address and where its live facts come from, and those of the blueprint shape every repository.

Support

The projects are free and open source. If they are useful to you, you can support their development on GitHub Sponsors.

Sponsor

Contact

Questions, problems and ideas about a project go to the issues of its repository: the issue chooser of this website leads to those of every project, and has the forms for the website itself. Please report a vulnerability privately, as Trust says. Everything else reaches Dennis through his profile on GitHub.