KVStore-raft-consensus

github.com/mokhatiri/KVStore-raft-consensus

2024-03-16 ~ 2024-06-13 · 89 days

Solo Burnout

Rafting alone into burnout with a single SQLite paddle

Distributed dreams, solo demise.

Death Type

Solo Raft Navigator

This project was a testament to the solo developer's ambition, implementing a complex distributed Raft consensus algorithm, a full HTTP API, and a robust CLI for cluster management. Designed for 'dynamic membership' and 'node failures', the project ironically became a single point of failure due to its singular contributor, attempting a distributed system with a centralized development model.


Cause of Death

1. Unrelenting core logic development

The 'consensus/raft.go' file saw an impressive +952 lines added and -300 lines removed, while 'consensus/consensus.go' added +904 lines and removed -190. This indicates a singular, intense focus on the intricate Raft implementation, consuming a significant portion of the 18 total commits.

2. Full-stack ambition for a solo endeavor

Despite being a solo project, the developer implemented a comprehensive HTTP API with +460 lines in 'api/http_test.go', alongside a detailed CLI for cluster management, evidenced by +549 lines added to 'cli/managercli/manager_handling.go'. This breadth of features for a single contributor proved unsustainable.

3. The fading language of ambition

Commit messages declined drastically in detail, from an average of 40 characters to a mere 14, a 65% reduction. This linguistic entropy coincided with a high burnout risk of 65/100, with 33% of commits landing late-night and another 33% on weekends.


Vibe Score

2/ 100

Hand-coded. Respect.


What They Did

The README promised a 'production-ready' distributed key-value store, leveraging Go 1.25.5 and the Raft consensus algorithm for 'strong consistency and fault tolerance'. It aspired to support 'dynamic membership' and 'surviving node failures', yet ultimately succumbed to solo developer fatigue, relying on `github.com/mattn/go-sqlite3` for its single-node persistence dreams.

Gogithub.com/mattn/go-sqlite3

Burnout Analysis

The solo developer, 'mohammed khatiri', demonstrated a high burnout risk of 65/100 across 89 days of development. 33% of commits occurred late-night, with another 33% on weekends. Commit messages plummeted from an average of 40 characters to a mere 14, a 65% reduction in descriptive ambition. The final 37 days of silence followed a relentless, solitary effort.


Dependency Archaeology

The project relied on a singular external dependency, `github.com/mattn/go-sqlite3 v1.14.34`, for its persistent storage within each node. For a 'distributed' system aiming for 'strong consistency', this choice highlighted the inherent tension between the project's grand vision and its solo execution. 1 dependency, 18 commits — a focused, yet ultimately exhausting, ratio of effort to external leverage.


Autopsy: File Structure

├──go.modThe module defined as 'distributed-kv', a grand title for a project with only one external dependency.
├──consensus/raft.goThe heart of the Raft dream, meticulously coded by one, with +952 lines added.
├──consensus/consensus.goMore core consensus logic, another +904 lines of solo effort.
├──app/node/main.goThe main application entry point for a node, now a silent monument after +570 lines of development.
├──cli/managercli/manager_handling.goA robust CLI for managing a cluster that never quite grew beyond paper, with +549 lines added.
├──api/http_test.goRigorous tests for an HTTP API few would ever call, boasting +460 lines of validation.
└──README.mdThe ambitious manifesto, frequently updated with +865 lines, now merely a historical document of what could have been.

Eulogy Stats

Total Commits
18
Ambitious Adjectives
5
Deploy Config
No
Estimated Users
0 (despite supporting dynamic membership for untold legions)

Last Words

finished implimenting the manager, fixed a lot of bugs along the way in the RPC logic.

Perhaps next time, distribute the work before distributing the system.

Solo BurnoutRafting alone into burnout with a single SQLite paddle

Share on X