Harness Open Source (formerly Drone) — Overview#

Identity#

  • Module path: github.com/harness/gitness
  • Go version: 1.25.8 (go.mod)
  • License: Apache 2.0
  • Repository: https://github.com/harness/harness (main branch = Harness Open Source; drone branch = classic Drone CI snapshot)

Purpose#

Harness Open Source (internally named “gitness”) is a self-hosted, end-to-end open source DevOps platform. It solves the problem of needing a unified, self-hosted alternative to GitHub + GitHub Actions + Docker Hub — combining git code hosting, automated CI/CD pipelines (the Drone heritage), cloud development environments (Gitspaces), and OCI-compatible artifact registries in a single deployable binary. It targets platform engineering teams and organizations that need full control over their DevOps toolchain without cloud vendor lock-in.

Significance#

Drone CI was one of the most influential container-native CI systems in the Go ecosystem, pioneering pipeline-as-code with Docker containers and YAML-defined stages. Harness Open Source is its evolution into a full platform — a bold architectural pivot from a focused CI tool to a GitHub-scale platform. The drone/go-scm library (a dependency here) became a standard Go abstraction for multi-provider SCM APIs. The project demonstrates how a successful OSS tool grows into an enterprise platform while preserving its Go-native, container-centric roots.

Key metrics#

  • Go files: ~2,578 (XL tier)
  • Top-level directories: app/, audit/, blob/, cache/, cli/, client/, cmd/, contextutil/, crypto/, encrypt/, errors/, events/, git/, http/, infraprovider/, job/, langstats/, livelog/, lock/, logging/, profiler/, pubsub/, registry/, resources/, secret/, ssh/, store/, stream/, tests/, types/, version/, web/
  • Direct dependencies: ~106 (excluding indirect)
  • First visible commit: snapshot of existing large codebase (no shallow history available)

Notable characteristics#

  • Dual-heritage architecture: The app/pipeline subsystem retains Drone’s runner-based CI engine (using drone-runners/drone-runner-docker, drone/runner-go, drone/drone-yaml), while app/gitspace, registry/, and git/ are entirely new domains added post-Drone, making this an example of organic platform growth.
  • Google Wire for DI at scale: With 2,500+ Go files, the project uses github.com/google/wire for compile-time dependency injection — one of the largest Wire-based codebases in the open source Go ecosystem, showing how Wire scales (and where it strains).
  • Self-contained git server: The git/ package wraps bare git operations (not Gitea/Gogs), and ssh/ uses gliderlabs/ssh to provide a native SSH server — the platform hosts actual git repositories, not just CI metadata.
  • OCI artifact registry as a sub-module: registry/ is declared as a Go workspace replace directive (replace github.com/harness/gitness/registry => ./registry), demonstrating modular decomposition within a monorepo while still compiling to a single binary.
  • Polyglot surface: Despite being a Go backend, the project ships a full React/TypeScript frontend (web/), gRPC+protobuf internal services, Swagger/OpenAPI external API, SSH protocol, and Starlark scripting for pipeline definitions — a rare breadth of interface types in a single Go project.