Ask HN: What finished/done/complete software do you use?
What software do you personally use that is finished and no longer being developed or updated?
Note that I'm asking about the status of the software, not about your personal use – for example, vim is still under active development and thus does not count as "finished" software, even if you continue to use version 7.
78 comments
[ 6.3 ms ] story [ 85.2 ms ] threadHope this counts, this is the end of life for the desktop product but they rewrote it as a web app but that is substantially different.
> A work is never completed, but merely abandoned.
[0]: https://www.howtogeek.com/359042/everything-new-in-notepad-i...
[1] https://en.wikipedia.org/wiki/Microsoft_Notepad
That's not really how I read the linked Wikipedia article. It says:
> Notepad was added to the Microsoft Store in August 2019… [and will be] receiving updates through the Microsoft Store. This will allow updates to the app to be delivered more frequently.
I read that as indicating that development is ongoing.
Shame. I hope they don't ruin it...
uTorrent 2.2.1
These should've been the final versions of either software, because despite their age - 20 and 10 years old respectively - the functionality and the UX are still nearly perfect and none of later versions carried any meaningful improvements.
qBittorrent may be a decent software, but the older uTorrent is a true masterpiece of engineering and design. Incredible fit and finish with zero operational problems. So why would I want to throw away a Porsche and switch to some Civic?
Once BTv2 arrives and gets more or less decent adoption, then, yeah, we may need to find a replacement. Until then switching will not solve any problems... because there aren't any.
[0] https://jrnl.sh/
[0] https://jujusoft.com/jujuedit/
I also think programmers should try to finish the software they write. https://gavinhoward.com/2019/11/finishing-software/
> Runtime warning (func=(main), adr=9): non-zero scale in exponent
$ man bc
bc - An arbitrary precision calculator language
I've used it to estimate the limit of the following sequence of functions, because I wasn't sure there was enough precision in machine floating point to do it properly:
I use bc as my desktop calculator instead of a graphical calculator. I use one with more extensions than GNU bc, so it is useful for me when programming.
a simple tiling Window Manager modelled after GNU Screen. It hasn't seen any updates in 3 years but still works very well for me.
Although to be fair, I also use LuaTeX quite a lot now...
[0] http://www.texfaq.org/FAQ-TeXfuture
Works perfectly and has not changed for a while.
It seems to be superseeded by https://rectangleapp.com/
Hasn't been updated since 2012, but I use it everyday. http://www.roland-riegel.de/nload/changelog
i3wm is really damn stable.
i haven’t updated emacs in 3 years but i hear 27’s cool.
i also haven’t updated irssi in forever.
There's a lot of software that I wouldn't want to use, if it doesn't at least still receive regular security updates.
I'll dare to go out on a leg here, and claim that a software that has a complete and stable set of core features probably can be considered "finished" - even if it still is under active development and receiving new features.
That said, I am not sure it's possible for a library to ever be "finished" in that sense; maybe only programs can be.
A.) having a complete and stable set of core features
B.) no more new features being added
To me personally, A.) is way more important and way more indicative of "finishedness" than B.) is. Surely both criteria do play into this - but imho there's more weight on A.) than there is on B.).
Let's look at your example: VIM. According to criterion A.) it is finished - because it has a complete and stable set of core features, which haven't changed much in many versions (and many years).
According to criterion B) VIM is absolutely not finished, because it still is under active development and new features are still being added.
Let's look a different example - I suggest looking at a piece of imaginary vaporware. Maybe a few design documents exist - but not a single line of code has ever been written. The project has been canned before it even started. No new feature is going to get added to this software ever.
According to criterion B) this software does count as finished - because no new features are being added.
According to criterion A) this software is not finished at all, because it doesn't have a single core feature, let alone a complete set of core features.
Now those two examples are sitting at the very extremes... things do get more interesting if we compare two examples that are a bit closer to the middle:
Which one is more finished?
1.) A piece of software that just hit version 1.0 - it has all it's core features completed, is fully usable, but is still under very heavy development, and might release 2.0 sooner rather than later.
2.) A piece of software sits at version 0.8 and all development has ceased. It's mostly complete, but still missing a few core features - but it's no longer getting any updates at all.
I personally tend to see 1.) as the more finished piece of software of those two. And that means that to me, having a complete set of core features is more important than no longer having new features added. I simply can't see 2.) as finished, since it's incomplete even at it's core.
I believe the Vaporware example shows, that you totally have to weigh in "complete set of core features" as well. Imho at more weight than "no new features" has.
And when weighing things that way, a piece of software with a stable set of core features can be pretty finished, even if new features are still being added. Simply because that complete-set-of-core-features part is so much more important than the no-new-features part.
> Let's look at your example: VIM. According to criterion A.) it is finished - because it has a complete and stable set of core features, which haven't changed much in many versions (and many years).
From my point of view, that's not an accurate description of Vim. Vim 8 (released in late 2016) added several new features. Most notably:
> Vim can now exchange messages with other processes in the background. This makes it possible to have servers do work and send back the results to Vim. See |channel-demo| for an example, this shows communicating with a Python server.
(Source: https://raw.githubusercontent.com/vim/vim/master/runtime/doc... )
I personally view this as a major new core feature – one that enabled a whole new class of plugins, including many Language Server Protocol plugins. For the ways I use Vim, that's a core feature. Maybe it's not a core feature for you, but that's exactly my point: what is and isn't a core feature depends entirely on an individual's usecase.
> Let's look a different example - I suggest looking at a piece of imaginary vaporware. Maybe a few design documents exist - but not a single line of code has ever been written.… According to criterion B) this software does count as finished - because no new features are being added.
I agree that criterion B) would characterize this as "finished", but I disagree that it would count as "finished _software_". Maybe it's a finished design document, but if no software was produced, then it's not finished software.
Incidentally, it's obviously possible for software to be both 100% finished and not very useful. For example, the K&R C "Hello, world" program is finished – it doesn't need any updates and perfectly fulfills its specification. But that doesn't mean I'm planning to use it daily!
But I think your response on VIM does add another great point to this discussion: nobody would have considered VIM incomplete for not having JSON support, before JSON even existed. In theory, VIM could have been complete AND finished earlier without JSON-support, back in the day before JSON.
But then JSON happened - and suddenly VIM suddenly no longer had a complete set of core features. And not being complete means not being finished - since being complete is pre-requisite for being finished. And doesn't that mean, that a piece of software which does NOT get new features, can't stay "finished" when things change and new requirements emerge? Doesn't a piece of software have to get new features so it can stay (close to) finished - and doesn't revert back to being incomplete?
The only way a piece of software could ever stay "finished" without getting new features is, if it was used for something that no longer sees any change happen or any new requirements emerge - it basically has to be a completely non-evolving field of work with static, unchanging requirements. But any active, evolving field of work will always see changes and new stuff and subsequently new requirements will emerge. Software has to react to those changes in requirements.
That's a really interesting question. I guess some of it comes down to whose perspective we're looking at the software from. I'd tend to look at it from the author/mountaineer's point of view: If Bram Moolenaar had declared that Vim was complete with version 7 and would never add major features like async/JSON support, I'd probably say that the program was "finished", even if it lacked certain features that I'd like it to have. (Those missing features might cause me to use a different piece of software, but I don't think they'd give me cause to complain that the hypothetical Vim was "incomplete")
(And, indeed, there was a period ~5 years ago where it looked like Moolenaar might go that route, especially with respect to async support. My understanding is that his initial unwillingness to add async support/other new features was a big part of the impetus for Neovim.)
> The only way a piece of software could ever stay "finished" without getting new features is, if it was used for something that no longer sees any change happen or any new requirements emerge - it basically has to be a completely non-evolving field of work with static, unchanging requirements.
I'm not sure that the entire _field_ needs to be static. For example, Quake strikes me as a finished piece of software – that doesn't mean that video games (or even first person shooters) aren't evolving. It just means that Quake carved out a narrow section of that field and finished delivering on its design goals within that narrow slice.
All of the busybox alises, actually.
It hasn’t received updates in years and doesn’t work on the latest versions of MacOS, but I still haven’t found anything else to replace it. While there are other photo organizers and other photo editors, this hit the sweet spot for me in addition to being fast.
I am in the process of testing out Movavi Photo Manager which seems to check a lot of the boxes I'm looking for: https://www.movavi.com/photo-organizer-mac/
https://github.com/jung-kurt/gofpdf