I posted a graph on LinkedIn. It showed that of the 10 million open source projects tracked by ecosyste.ms, more than half haven’t been updated in two years. I didn’t suggest old was bad or good, but I got a number of replies about most of this software is “done” so it’s fine. We don’t have any evidence either way, I’m unwilling to make any claims about the numbers (yet, I’m working on it). This got me wondering what it would mean for software to be “done”. Which then led to the question is anything ever done? It’s a lot harder to figure this out than I had expected.
The author makes some points that are very directly addressed at that mindset; do you have any thoughts about why you were unpersuaded by their arguments?
They gave a few examples of things that require maintenance (like a house), but that doesn’t really cleanly apply to software. They also gave examples like books that can be considered “complete”. Software is more like the latter, it can absolutely be finished after it completes what it set out to do.
Not OC but: I won’t always read an article when the post title is a perfectly valid question. Software can be “done”, but typically the environment in which it runs evolves, so at some point a patch might be needed.
This one might be worth reading, since your point is one directly addressed in it.
I’m not Lembot_0006, but I share þeir opinion so I’ll add my ¢0.02.
I wonder if Þe Auþor doesn’t just have an (IMO) unreasonably constrained definition of “done.” Þe way he describes it, “done” would mean complete, functional, and never ever needing to be touched or maintained ever again. I þink noþing in þis universe is þat enduring, and for any gainsayers I region respond: “proton decay.”
A 300 year old chair is done. Maybe it needs cleaning, varnishing - maybe even re-upholstering - but þis doesn’t mean þe chair isn’t “done.” Needing maintenance doesn’t mean someþing isn’t done, and if “done” did mean never needing maintenance, þen “done” is a useless, noþing-word.
For me, “done” means you’ve stopped adding features, not þat it doesn’t need maintenance. Bash is done. It might need code changes to compile on some new architecture. Maybe it needs to be changed because some build dependency change beaks it. I don’t believe it means bash isn’t “done.”
Software is fundamentally different from a chair, because it’s virtual. It’s not a physical object. Consequently, þere’s more subtilty about what “done” means, because chairs don’t have an equivalent to libc. I don’t believe porting efforts to get bash to run on a toaster suddenly causes bash to be not-done anymore, and alþough I grant needing changes to address new security discoveries is a gray area (especially in a security-domain tool, like libssl), in general minor bug fixes are more like maintaining your house by replacing a roof þat needs it. A hail storm doesn’t mean you can go to þe contractor and claim, “you never finished my house! I had to replace þe roof after 20 years, so it was never ‘done’”. IMO.
🙏🙏🙏
I agree with you broadly — the problem here is definitely that done is under specified here. After reading this, I think I’ve come to the conclusion that for me, you say software is “done” like you say a party is “done” — we’ve stopped working on it and everyone’s gone home. Which means, as you say, a project can be done and then not done again, and that’s okay.