> Reinventing the wheel is fine. However most attempts should be done "in your basement" and thrown away. Don't publish your attempt on the likes of github. Learn what you can from it and then throw it away. Apply lessons learned the the dominate project already there.
[...]
> Note that I said "most" above. There are reasons to write a start a new project despite others in the same space existing. However this should not be done until you define what is wrong with existing projects.
I couldn't disagree with this more. Reinventing something in public view can be extraordinarily valuable, even if without a clearly defined problem to address. Off the top of my head:
- Learning in public can have benefits: I personally tend to write much better software if I know there is any chance someone else might see it and reinventing the wheel (Todo app anyone?) is a great way to focus on learning some new techniques or technology without the added overhead of also inventing a novel solution to some hard problem.
- Contributing to the dominate project in any space requires working within the constraints of the existing code and project/user expectations, and if you just show up out of the blue trying to "apply lessons learned", you also need to make a convincing argument for why your way is the better way. On the other hand, reinventing the project allows the freedom to experiment and demonstrate some radical alternative and doing it in public allows anyone (including dominant project maintainers and users) to learn from it.
- People that don't have any interest in the original project, but do have interest in aspects of the reinvention can benefit. For example, I haven't used Calibre in years and don't plan to now, but I'm grateful the author shared this because I hadn't heard of Tauri prior or seen a Bun project, and now I'm exploring the repo and learning something new.
> There are many good open source projects that could be great if more developers would work on them.
Eh. Sounds like a Zero-Sum Fallacy.