DEV Community

Dennis Njuguna
Dennis Njuguna

Posted on

I shipped v0.1.0 of an open source project, realized it was fundamentally wrong, and I’m rebuilding it for v1.0.0

A few weeks ago, I shipped v0.1.0 of an open source project called VES that I’d been hacking on for a while.

It technically worked — but in practice, it was almost unusable.

Instead of piling fixes on top, I made the uncomfortable decision to stop, step back, and redesign it properly. What I thought would be “iteration” turned out to need a rethink at a much deeper level.

What v1.0.0 is really about

v1.0.0 isn’t a polish pass. It’s a reset.

The core focus now is:

Clear separation of concerns between functionality

Less over-engineering, especially the kind caused by over-reliance on AI tools

Small, incremental improvements instead of big, risky rewrites

One hard thing I had to accept is that I dropped out to work on this and subconsciously expected everything to “just work” from the start. That expectation caused more harm than good. I’m learning to be okay with things taking longer, and being messier, than planned.

What I got wrong in v0.1.0

Looking back, there were a few big mistakes.

  • Trying to fly before I could crawl

I leaned heavily on AI tools to fill knowledge gaps and set aggressive deadlines for myself. That often led to plugging in AI-generated code without fully understanding why it existed or whether I even needed it.

The result was code that looked impressive but wasn’t grounded in solid understanding, reason or need.

  • “Move fast and break things”, without knowing why

I adopted the mindset without a clear goal. I wasn’t moving fast toward anything specific, and I mostly just accumulated breakage without real progress.

  • Burning myself out

This one’s harder to admit for myself. The combination of hard deadlines and Rust knowledge gaps left me slightly depressed and frustrated. Instead of tackling those gaps directly, I found myself doing “productive-looking” work, like spending almost a month on GitHub Actions YAML, just to avoid the harder learning.

It felt good in the moment. It didn’t move the project forward.

What I’m changing for v1.0.0

This time, I’m being explicit about my goals.

I’m treating this project as both an OSS contribution and a learning journey

I’m prioritizing understanding tradeoffs, not just making things work

I’m designing the project to be contributor-friendly, not just “done”

I’m not a Rust master, and I can’t always defend every design choice perfectly yet, but I am intentionally closing those gaps now instead of working around them.

Where the project is now

I’ve opened up:

a clearer roadmap

scoped issues

and a more intentional path toward v1.0.0

If this kind of honest, slow-but-deliberate OSS development resonates, the project lives here: The project(VES)

Feedback, criticism, and contributions are all welcome ;)

Top comments (0)