Less Is More: Archive Projects for a Better Open Source Ecosystem
Today I received a pull request in a project that I haven't touched in over five years. It was a simple change, but it made me think about the state of the project and ultimately led me to archive it.
This isn't the first time I've gotten rid of something I no longer need, and I've realized that cleaning up old stuff is a good practice—not just in general, but also for keeping the open source ecosystem healthy.
About the project
This story isn't about the project itself, but I think there are some valuable lessons to be learned from how it came to be and why I archived it, so let me give you a brief overview.
The project was a logging library (called logur) for Go that I started in 2019. I was working on a project that needed a logging solution, but I couldn't decide among the myriad of options available at the time. There were at least five or six popular libraries I could have used, and I actually tried a few of them. However, I wanted something simple, and given how fragmented the ecosystem was, I didn't want to rely on a library that might not be maintained a year or two down the line.
So I created an interface that I thought was simple enough and implemented a few adapters for it. That way, I didn't have to worry about the underlying implementation and could switch to a different one if needed. The beauty of my solution was that it didn't require any external dependencies in the code doing the logging, making it portable across projects.
It worked quite well for a while, and I even got a few stars on GitHub.
Then, in 2022, someone submitted a proposal for Go to implement a structured logging in interface in the standard library,
which eventually shipped in Go 1.21 as log/slog
.
I truly think that was great for the Go ecosystem, as it provided a standard way for everyone to do logging. It certainly did more to reduce fragmentation than my project ever could, and it effectively rendered my project obsolete.
After I started using log/slog
, I completely forgot about my project.
I had no reason to use it anymore, and I didn't have the time or motivation to maintain it.
Until today, when I decided to do one last thing with it: archive it.
Tip
If you want to learn more about log/slog
, check out this list of awesome resources.
Closing a door opens another
For a long time, I believed that archiving a project meant admitting defeat—that I had failed in some way. It took me a while to realize that letting go of something old, especially when there is a better alternative, is actually a good thing.
First of all, the fact that something becomes obsolete is a sign of progress—it doesn't mean the work put into it was wasted. I learned a lot from the project—about logging, about open source—and it helped me solve a problem at the time. It made sense to create it, and I benefited from working on it.
Secondly (and this is something I learned the hard way), maintaining a project is a responsibility and comes with a cost. Over the years, I’ve accumulated many projects, and I haven’t been able to keep up with all of them. I receive hundreds of notifications every day, which makes it impossible to stay on top of everything. It’s been a burden, and I’ve felt guilty about not responding to every issue or pull request.
So when I occasionally get the chance to cut the cord on a few projects, it’s a relief. It allows me to focus on the ones that matter most and where I can make the biggest impact—which benefits both me and the community.
Finally, archiving a project reduces the overall noise in the ecosystem. I remember searching for Go libraries a few years ago and feeling overwhelmed by the sheer number of options:
- Which one should I choose?
- Which one is the best?
- Which one is maintained?
Sorting through them all to find the right fit was a daunting task.
Logging libraries are just one example (though a particularly good one in the Go ecosystem),
but the same principle applies to many other domains.
Hopefully, the next person searching for a logging library who stumbles upon my project will notice it’s archived and look for a better alternative—or simply follow my advice and use log/slog
.
Final thoughts
Archiving a project isn’t a failure—it’s a sign of progress. It’s something we should do more often, not just for the benefit of the ecosystem, but for our own sanity as well.
If you’re looking for a New Year’s resolution, consider archiving a few projects that neither you nor the community need anymore.