Über mich

Drei Dinge, zu denen ich immer wieder zurückkomme

Schwachstellendaten, Open-Source-Governance und Aktienmärkte. Fast alles, was ich baue, geht auf eines davon zurück.

Hintergrund

Die drei Stränge

GAdvisory und die CNA-Arbeit kommen aus dem ersten. Wie ich über Lizenzierung und Maintainer-Burnout denke, kommt aus dem zweiten. GBoarse kommt aus dem dritten.

Das ist kein Zufall. Man baut am Ende Werkzeuge für die Probleme, in die man immer wieder hineinläuft.

Schwachstellendaten

Das interessante Problem war nie, Fehler zu finden. Es ist, dass Advisory-Daten dort festsitzen, wo sie veröffentlicht wurden: auf der Plattform, die sie hostet, gut lesbar, überall sonst unhandlich.

Eine CNA zu betreiben heißt, darin zu leben. Zuweisung, Bewertung, Schwächenketten, Datensatzformate, Offenlegungsfristen. GAdvisory gibt es, weil die Reibung in diesen Abläufen für mich nicht theoretisch ist, und GAnalytics gibt es, weil ich messen wollte, ob das Programm als Ganzes besser oder schlechter wird, statt es zu vermuten.

Open-Source-Governance

An einem Projekt zu arbeiten, das wirklich Open Source ist, neben einer Produktreihe, die es bewusst nicht ist, zwingt einen zur Genauigkeit über den Unterschied.

GHub ist Open Core, und ich sage das auch. Ich nenne es nicht Open Source, weil es das nicht ist. Postiz ist Open Source und gehört seinen Maintainern, und mein Anteil daran ist ein Beitrag und kein Besitz. Beides in einen Topf zu werfen würde beides falsch darstellen.

Contribution Checker ist aus der anderen Hälfte davon entstanden: Beliebte Repositories ziehen Pull Requests an, um die niemand gebeten hat, und der teure Teil ihrer Sichtung ist nicht das Code-Review.

Aktienmärkte

Der eine Strang ohne berufliche Rechtfertigung, weshalb er vermutlich der unterhaltsamste ist.

GBoarse ist eine vollständige Marktsimulation mit einem echten zentralen Orderbuch, doppelter Buchführung auf bigint und einem deterministisch wiederholbaren Kern. Märkte sind ein ungewöhnlich ehrliches Systemproblem: Die Regeln sind aufgeschrieben, die Fehlerbilder gut dokumentiert, und die Buchführung geht entweder auf oder nicht.

Wie ich baue

UI-first, überall. Wenn die API es kann, muss die Oberfläche es auch können. Das kostet vorne mehr, und bereut habe ich es nie.

Selbstbetrieb als vorrangiges Ziel, nicht als Nachgedanke. Bare Metal vor Containern, wo die Wahl ansteht. Was einen Neustart überleben muss, läuft auf dauerhaften Workflows statt auf prozessinternen Timern — ein Bot, der neu startet, soll nicht den automatischen Abschluss verlieren, den er zugesagt hat.

Wo ich arbeite

In Deutschland, auf Deutsch und auf Englisch. Advisories, Release Notes und Support-Antworten gehen in der Sprache raus, die der lesenden Person entgegenkommt.

Eigene Projekte und das Homelab laufen unter Gelhaus Solutions. Die Seite zur Arbeit beschreibt, was dort läuft und warum es so gebaut ist.

Abseits des Terminals

Selbstbetrieb und Netzwerktechnik, meistens. Und schauen, wohin die Branche tatsächlich geht, statt wohin die Pressemitteilungen zeigen.

Fähigkeiten

Werkzeuge und Systeme, die ich betreibe

Security
CVE / CNA operations CVSS 3.1 & 4.0 CWE CVE JSON 5.1 GHSA OSV / osv.dev Coordinated disclosure
Identity & secrets
HashiCorp Vault · Raft, PKI, ACME Authentik · self-hosted OIDC OpenID Connect
Platform
Proxmox · four-node cluster Ansible Docker Kubernetes Nginx Linux VLAN segmentation
Orchestration
Temporal Jenkins CI/CD pipelines BullMQ · Redis-backed queues Turborepo · pnpm workspaces GitHub Actions GitLab CI
Monitoring
Sentry Prometheus · custom exporters Grafana
Backend
Node.js NestJS TypeScript Python Bash Fastify Express gRPC · Protobuf, typed clients
Data
PostgreSQL MySQL / MariaDB Redis MongoDB InfluxDB SQLite Prisma Drizzle ORM TimescaleDB · time-series over Postgres Meilisearch MinIO / S3-compatible storage
Frontend
React Next.js JavaScript HTML & CSS Figma Tailwind CSS tRPC
Testing
Vitest Jest Playwright · deploy-gating smoke suites

Fragen

Was oft gefragt wird

Ist GHub Open Source?

Nein. Open Core. Die Basisversion jeder App ist kostenlos, Pro und Enterprise sind es nicht, und alles steht unter einer proprietären Lizenz, an der ich sämtliche Rechte halte. AGPL ist es nicht.

Postiz, wo ich arbeite, ist Open Source. Meine eigene Reihe ist es nicht, und ich versuche, das deutlich zu halten.

Warum ist alles UI-first?

Weil eine Funktion, die nur hinter einem CLI-Flag oder einem undokumentierten Endpunkt existiert, eine Funktion ist, die wirklich nur Maintainer haben.

Das kostet vorne mehr. Bereut habe ich es nie.

Wie melde ich eine Sicherheitslücke?

Per E-Mail, koordinierte Offenlegung. Sie bekommen eine Eingangsbestätigung, eine eingegrenzte und bewertete Einschätzung und einen gemeinsam vereinbarten Zeitplan. Über WKD ist ein PGP-Schlüssel veröffentlicht, falls die Meldung verschlüsselt werden soll.

Wie erreiche ich Sie am schnellsten?

E-Mail, wenn es einen Beleg braucht. Discord, wenn wir ohnehin gerade im Gespräch sind. Mehr als diese zwei gibt es nicht.

Arbeiten Sie auf Deutsch wie auf Englisch?

Ja, beides, täglich. Advisories, Release Notes und Support-Antworten gehen in der Sprache raus, die der lesenden Person entgegenkommt.

Was ist Gelhaus Solutions?

Das Dach für mein Homelab und meine eigenen sowie Community-Projekte. Von der Rolle bei Postiz getrennt.

Warum ein Projekt forken, statt upstream beizutragen?

Weil manche Änderungen nur für meine Arbeitsweise Sinn ergeben, und es keiner Seite gegenüber fair wäre, einen Maintainer zu bitten, sie mitzutragen.

Vulnogram ist der klarste Fall. Die Anhangsverarbeitung und das Einfügen von CVSS-Vektoren, die ich ergänzt habe, passen zu der Art, wie ich Advisory-Arbeit betreibe, und wären für eine CNA, die anders arbeitet, nur Lärm. Forken war billiger, als für jede Änderung zu streiten, und ehrlicher darüber, für wen die Änderungen sind.

Wo das Ursprungsprojekt etwas will, geht es upstream. Postiz und die OSV-Arbeit sind Beiträge, keine Forks.

Was heißt „Closed Source" auf dieser Seite?

Nicht veröffentlicht. Es heißt nicht undokumentiert.

Ein Teil davon ist Kundenarbeit: Jemand hat dafür bezahlt, der Code gehört ihm und nicht mir, und ich kann ihn nicht weitergeben. Der Rest ist eigene Arbeit, die ich bewusst nicht geöffnet habe.

So oder so beschreibt der Eintrag das Problem und was gebaut wurde, um es zu lösen — dieser Teil ist meiner, und über den kann ich sprechen.