In der heutigen Softwareentwicklung spielt Versionskontrolle eine zentrale Rolle, insbesondere bei der Organisation von Veröffentlichungen und Updates. Semantic Versioning, kurz SemVer, hat sich dabei als weitverbreiteter Standard etabliert, um klar definierte und nachvollziehbare Versionsnummern zu vergeben. Doxxer, ein neues auf Rust basierendes Kommandozeilen-Werkzeug, schafft in diesem Bereich Abhilfe, indem es die dynamische Erstellung von SemVer-Versionen über Git-Tags automatisiert. Dieses Tool entfaltet sein volles Potenzial vor allem in Projekten, die eine schnelle, zuverlässige und flexible Versionierung benötigen. Doxxer greift auf die Git-Historie zurück, um die aktuellste Version zu ermitteln und unterstützt die einfache Berechnung von Folgeversionen, was den manuellen Aufwand deutlich reduziert.
Die Grundidee hinter Doxxer ist an den bekannten Befehl git describe --tags angelehnt. Doch Doxxer geht weit darüber hinaus und bietet eine Vielzahl von Konfigurationsoptionen, um den jeweiligen Workflow bestmöglich abzubilden. Dadurch kann Doxxer sowohl in kleinen als auch in großen Projekten eingesetzt werden, in denen unterschiedliche Versionierungsstrategien bevorzugt werden. Es ermöglicht die Filterung von Tags, die Anpassung der Versionsformatierung mittels Templates und unterstützt verschiedene Strategien für Versionsbump, wie Major, Minor, Patch oder Prerelease. Insbesondere für Teams, die ihre Releasezyklen durch Continuous Integration und Continuous Deployment automatisieren möchten, stellt Doxxer ein wertvolles Hilfsmittel dar.
Die Installation gestaltet sich dank der Distribution über den Rust-Paketmanager Cargo und vorgefertigten Binärdateien unkompliziert. Einmal integriert, kann Doxxer über einfach verständliche Kommandozeilenbefehle gesteuert werden. Es arbeitet mit zwei Hauptbefehlen: current und next. Der Befehl current gibt die zuletzt existierende SemVer-Version in den Git-Tags zurück, während next eine neue Version errechnet, basierend auf einer gewählten Strategie. Dabei bietet Doxxer die Möglichkeit, Ausgaben flexibel zu gestalten.
So kann zum Beispiel nur ein bestimmter Teil der Version, etwa die Major- oder Minor-Nummer, ausgegeben werden. Der Output lässt sich zudem in den Formaten JSON, Plaintext oder anderen konfigurierbaren Ausgaben darstellen, was eine einfache Integration in Skripte und andere Tools ermöglicht. Ein großer Pluspunkt von Doxxer ist seine konfigurierbare Natur. Die Einstellungen können auf verschiedenen Ebenen vorgenommen werden – Standardwerte, Konfigurationsdateien im Projektverzeichnis (.doxxer.
toml oder doxxer.toml), Umgebungsvariablen oder direkt per Kommandozeilenargumente. Diese Flexibilität erlaubt es Entwicklern, den Workflow exakt an ihre Bedürfnisse anzupassen, ohne tief in den Quellcode eingreifen zu müssen. Zum Beispiel können Filter für Tags definiert werden, um nur jene Tags zu betrachten, die mit einem bestimmten Präfix beginnen, etwa „v“. Die Ausgabe kann so formatiert werden, dass vorangestellte Buchstaben oder bestimmte Build-Metadaten automatisch angehängt werden.
Im Alltag zeigt sich Doxxer besonders hilfreich in der automatisierten Berechnung von Folgeversionen. Die oft mühselige manuelle Anpassung der Versionsnummer entfällt komplett. Ob es um das Hochzählen der Patch-Zahl geht oder das Erstellen von Pre-Release-Versionen mit unterschiedlichen Präfixen wie alpha, beta oder rc – Doxxer unterstützt alle Varianten und kann sogar inkrementelle Zahlen automatisiert anfügen. So entstehen beispielsweise Versionen wie v1.3.
8-rc.2.post.1, die eins zu eins den aktuellen Entwicklungsstatus widerspiegeln. Zusätzlich können Entwickler eigene Templates für die Prerelease- und Build-Metadaten festlegen, was eine präzise und individuelle Anpassung der Versionsstrings erlaubt.
Die Nutzung von Umgebungsvariablen zur Konfiguration ist ein weiteres Plus, das insbesondere in CI/CD-Umgebungen sehr praktisch ist. So lassen sich beispielsweise Versionsinkremente oder Ausgabeformate ohne Änderung an der Konfigurationsdatei steuern. Die Kombination dieser Mechanismen macht Doxxer zu einem vielseitigen Werkzeug, das sich problemlos in moderne Entwicklungsprozesse integrieren lässt und dabei hilft, stets korrekte und aussagekräftige Versionen zu generieren. Auch in Bezug auf Containerisierung und moderne Deployment-Strategien ist Doxxer gut gerüstet. Es existiert eine Docker-Variante, die auf einem schlanken Alpine-Image basiert und in der offiziellen GitHub-Container-Registry zur Verfügung steht.
Dieses Image ermöglicht den einfachen Einsatz in Container-basierten Pipelines ohne zusätzlichen Installationsaufwand. Entwickler können Doxxer somit nahtlos in ihre bestehenden Docker-Workflows einbinden, sei es bei der lokalen Entwicklung oder dem automatisierten Build-Prozess in der Cloud. Nicht zuletzt beeindruckt Doxxer auch durch seine Offenheit und Transparenz. Es ist Open Source und unter der AGPL-3.0-Lizenz veröffentlicht.
Die Entscheidung für Rust als Programmiersprache ist ein bewusster Schritt, der auf moderne, performante und sichere Entwicklung abzielt. Rust ermöglicht es, ein schlankes und dennoch sehr robustes CLI-Tool zu unterstützen, das auch bei größeren Projekten mit langen Historien zuverlässig arbeitet. Darüber hinaus ist das Projekt aktiv gepflegt und wartet regelmäßig mit neuen Releases auf, die Verbesserungen und neue Features bringen. Für Entwickler, die sich fragen, warum das Projekt „Doxxer“ heißt, gibt der Autor eine humorvolle Antwort: Analog zum Begriff „doxing“, bei dem Informationen öffentlich zugänglich gemacht werden, „doxxt“ das Tool im übertragenen Sinne die Versionen des Projekts, indem es sie transparent und leicht zugänglich macht. Obwohl der Name vielleicht nicht hundertprozentig passend scheint, trägt er zur Unverwechselbarkeit und Wiedererkennung bei.
Zusammenfassend bietet Doxxer eine elegante Lösung, um die Versionierung von Softwareprojekten mittels Git-Tags dynamisch und automatisiert zu gestalten. Seine vielfältigen Konfigurationsmöglichkeiten, die Unterstützung von unterschiedlichen Ausgabeformaten und das einfache Zusammenspiel mit CI/CD-Prozessen machen es zu einem wichtigen Werkzeug im Werkzeugkasten moderner Entwickler. Die Konzentration auf SemVer stellt sicher, dass die erzeugten Versionen konform mit einem weit verbreiteten Standard sind, was Interoperabilität und Kommunikation zwischen Teams und Tools erleichtert. In einer Zeit, in der schnelle Entwicklungszyklen und kontinuierliche Integration das tägliche Geschäft bestimmen, hilft Doxxer, den Überblick zu bewahren und das Versionsmanagement zu entlasten. Sein Fokus auf Klarheit, Flexibilität und Automatisierung unterstützt nicht nur die technische Seite, sondern trägt auch dazu bei, Release-Prozesse transparenter und nachvollziehbarer zu machen.
Für Entwickler, die auf der Suche nach einer schlanken, aber leistungsfähigen Lösung für ihre Versionierung sind, stellt Doxxer eine äußerst attraktive Option dar, die sich schnell einführen und an individuelle Bedürfnisse anpassen lässt.