reversed(top()) code tags rss about

Why do new software tools look shiny?

August 31, 2019
[tools] [rant]

It puzzles me when people get excited about some new tool which is just a rewrite of an old one. Usually it is written in a different language by its proponents and is more a testament to lack of fantasy rather than an indication of a need for one more copy of an old program. What’s more interesting though is an appeal these new implementations have for users which—I claim—are mostly superficial. Below is my take on some pros and cons.

“New tools are faster”

Something new is quite likely to be faster simply because it has only basic functionality. Putting it forth as a feature is quite deceptive as the tool will become slower over time as it grows in size and set of abilities, possibly up to a point when it becomes slower than the original.

Comparing performance of an old tool with a large lifetime and wide support of architectures/formats/options/etc. to a new one that can only do some subset is not much different to comparing oranges and apples.

“New tools look better”

They might. In fact, this might sometimes be both the motivation for creating them as well as the motivation for people to try them out. However, switching something robust and tested to something new but nice looking seems like a questionable decision at best. Why the hell would you need to reimplement something from scratch to make it look better?

“But it’s new!”

So what? If you don’t like old things, quit using wheels, they are old. Neophilia is not an argument, it’s a weird disposition towards new things for no good reason (expectation that it might turn out better is not a reason, but merely an unfounded speculation).

Also it’s not even new, it’s just a more recent implementation of an older idea.

“But it’s in my favourite language!”

Being written in some language is generally not a feature. It can be helpful to reduce amount of toolchains on the system, but to do that new tools need to be written in commonly available languages and situation is usually completely the opposite of that.

And if implementation language is something unpopular, than reimplementation of well-known tools is the last thing it needs. Developing something original is what such languages could use.

Also, what does it say about a piece of software if the first thing that comes to your mind when you think about it is the language it’s written in? To me it suggest that there is probably no good reason for its existence. Switching a language can bring benefits, but just rewriting something is unlikely to make it better (or not for long). It’s like translating a novel from one language to another and expecting it to magically improve as a result. It can be easier for the developer to use some language, but in this case it shouldn’t be portrayed as a feature for end-users.

New tools have a cost

They usually have “modern” quirks which make them display behaviour that isn’t compatible with usual workflows and might cause integration problems. For example, they might depend on some environmental variables provided on some systems, while traditional implementation rely on normal command-line options or vice versa.

They are short lived

Sad, but true. If something is created not out of practical need and is mostly a copy of something else, it tends to fade away quickly more often than not. To become comparable to original software it needs to incorporate new features and fix bugs, but the development might get stalled due to the lack of interest from its author (lack of time usually isn’t a problem, it’s a matter of prioritizing how to spend it and you won’t spend time on something you don’t have much interest in).

New tools are needed

The idea of the post (apart from relieving some frustration) is to point out that while choosing tools that suit your needs you should avoid confusing incidental features (speed with very few abilities, looks, novelty, (empty) promises of future developments) for real ones (actual functionality, untested, not tailored to many use cases) and understand associated costs.

It’s sad to see people (new language enthusiasts, students, etc.) wasting time on a copy which than gets thrown away. It would be better to extend existing tools (when changes aren’t disruptive) or build new ones that aren’t just clones. There could be a site with practically useful development ideas to help with this, but there doesn’t seem to be one like that (sites with bounties aren’t really that).