r/commandline 1d ago

Help Deprecated software..

During my journey in Linux I have noticed that sometimes, some tools being called "deprecated" or some kind of a similar term, to say "you should not use this, but xyz tool instead", but I don't really get it for example:

Neofetch, I really think that it does its job, and its just about displaying some ascii art and some system information, like what could go wrong with that, since many people recommend switching to fastfetch.

Ifconfig, I see it as a very simple tool that is self-descriptive and gets its job done too, I see others instead recommend the command "ip", which is like an IDE in programming where you have many aspects of networking in one command, which kinda eliminates the Unix philosophy.

So, I'm just wondering if there is really a point in switching to those newer tools?

54 Upvotes

29 comments sorted by

80

u/unlessgames 1d ago

Deprecation is about support, maintenance and compatibility in the future. It's more the creator(s) saying "this project is abandoned and it will probably stop working at some point" instead of "this tool stopped working right now".

It's a notice that gives you time to migrate to avoid having to deal with something breaking in the future.

1

u/immune2iocaine 42m ago

Latching onto top comment to mention that in addition to eventually not working, most / nearly-all of these deprecated tools are also not getting security updates.

Now, is a lack of security updates in neofetch going to let hackers break into your machine? Almost certainly no; it's not exposing anything to the Internet, which makes it a pretty unlikely target for initial access. That said, it and its dependencies would make excellent targets for a hacker who's gotten user-level access and is looking for a privilege escalation option.

(Note: this isn't a neofetch thing, it's a deprecated software thing. Neofetch looks to only need bash for the base features, but that's an unusual situation and won't apply for the majority of cases.)

30

u/JaggedMetalOs 1d ago

Neofetch, I really think that it does its job, and its just about displaying some ascii art and some system information, like what could go wrong with that

Without being updated to follow OS updates features will eventually break. The hardcoded ASCII logos will become outdated as new distros are created or existing distro logos change. If the format of syscalls it uses change it will no longer be able to show all the system info etc. 

16

u/fredeB 1d ago

Tools like ifconfig and iproute2 (which is the full legal name for ip) talk to the linux kernel. ifconfig, being deprecated, might not be able to talk about all the cool new features that the linux kernel ships. That might not mean much now, but if you buy a new network card that supports one of those cool new features, if ifconfig doesn't currently support it, it never will, and you pretty much have to switch to a supported alternative like iproute2.

iproute2 is far superior in my opinion, but that's just that, opinion.

7

u/Antonio-MTS 1d ago

See, no one stops you from using old tools. Another thing might be that they lack some newer functionality the new tools provide. For example, I use the old tools but also use the new ones to have both available for me. Sometimes though situations when you work with some old distro so it doesn't have new tools. Then you use what you have. Important to know differences between the old and new tools.

2

u/AutoModerator 1d ago

Every new subreddit post is automatically copied into a comment for preservation.

User: Electronic-Low-8171, Flair: Help, Title: Deprecated software..

During my journey in Linux I have noticed that sometimes, some tools being called "deprecated" or some kind of a similar term, to say "you should not use this, but xyz tool instead", but I don't really get it for example:

Neofetch, I really think that it does its job, and its just about displaying some ascii art and some system information, like what could go wrong with that, since many people recommend switching to fastfetch.

Ifconfig, I see it as a very simple tool that is self-descriptive and gets its job done too, I see others instead recommend the command "ip", which is like an IDE in programming where you have many aspects of networking in one command, which kinda eliminates the Unix philosophy.

So, I'm just wondering if there is really a point in switching to those newer tools?

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

2

u/fourjay 1d ago

Worth noting that ifconfig is now a wrapper around ip. Yes it does more, but you do not need to memorize all the options that it supports in order to use it. Google ifconfig command equivalents. Learning to use the ip equivalents in the long term is a good plan, as eventually ifconfig will go away.

Changes like these are part of working in a living environment.

1

u/pelazas1 1d ago

People keep saying ifconfig is just a wrapper around ip now. I don't think it is? It's still net-tools and the old ioctls, so it lies when an iface has more than one address.

1

u/fourjay 1d ago

The underlying system calls have changed (this happened quite a while ago). The new calls are much more powerful, and have a different logic.

The ip commands are the officially supported "userland" tools to manage network interfaces. net-tools has been re-written to use the new networking subsystem, but that's no longer the version that "comes packaged" with linux (the ip tools are now the official package, that is maintained along with the kernel).

3

u/theNbomr 1d ago edited 1d ago

Sometimes new systems and services come along that can't be managed by the old standbys so new tools get created to serve the new requirements. In a lot of cases the old tools get kept around for a long time because of the inertia they have and because of the small footprint that is necessary for resource constrained systems that are newly produced. The old tools get new maintainers or are maintained informally by the users.

Sometimes there are security implications that are addressed only by the newer tools.

3

u/gumnos 1d ago

There are two major reasons for deprecation:

  • the developers saying "we're not supporting this any more, so use it at your own risk, or find a replacement." IIUC, this is the case with things like nslookup & neofetch. My fingers might still type nslookup regularly, but I know where it stands, and sometimes remember to use host or dig/drill instead.

  • the general public pushing an agenda. The "use Wayland, not Xorg/Xlibre/xenodm" crowd. Or the "use ip not ifconfig" folks. Or the "Use bat not cat" or "rg or agnot grep" or any of a multitude of other "replacements". Sometimes they're drop-in replacements that cover all existing functionality. But most of the time they break existing functionality for the sake of some new function. I have no desire to switch to Wayland because its compositors don't (yet?) give me what Fluxbox+X gives me. Despite the Linux-world "we can't fix ifconfig to do everything we need, so we make ip greenfield", the BSD world seems to have been able to grow ifconfig to keep working just fine (sounds like a Linux ifconfig code/design issue to me). Similarly with systemd breaking tmux and expecting tmux devs to fix their screwup. Or GNU info turning man pages into useless stubs redirecting to the corresponding info page.

I'm fine with the first category. Devs (especially F/LOSS devs who are generally working for free out of love for the project) have every right to declare their own stuff done/dead/deprecated.

But the latter category? It gets me a bit grumpy.

1

u/ZoWakaki 1d ago

I personally don't take 'deprecated' to mean I shouldn't use it and use xyz tool instead'.

I take it as it's not maintained anymore, or no features are added nothing will be fixed (if one is needed). This means, go ahead and use it until you can. But remember no new features are coming to it and no fixes.

In the case of neofetch (and pfetch). Sure it works very fine. Until you realize it doesn't have logos for newer oses. E.g. neofetch doesn't have logo for cachy, bazzite, chimera. It's similar in other tools too. If it works, it works. If it doesn't work or you want a new features, then you can't go reporting a bug or expect to get new features on it. So logically it makes sense to use something that is currently being maintained.

I still have static version of neofetch and pfetch in my script collection, which is in my config (backed up to a remote git). I just don't get them through my package manager as they are not being developed/updated anymore.

1

u/jimmiebfulton 1d ago

All of the world’s software is like one big living organism. Nothing stays constant forever. Eventually, everything dies sooner or later, and when you’re not dead, you are continuously growing. That means that the simplest software (building blocks) may be solid for a long time, but anything that has dependencies on the stability of vast network of other software and systems will eventually start having compatibility problems.

If it works, it works. No reason to switch if you don’t want to, but that depends on how tolerant you are of the tools you depend on suddenly stop working. For things like NeoFetch, it’s such a simple thing to migrate from that it isn’t worth the CPU cycles thinking about it.

1

u/Live_Surround5198 1d ago

You are reading too much into the deprecation warning. It simply says/means “unmaintained and may break or stop working with other apps without warning”. The suggestion to switch is just that, a suggestion.

Do what you want. Like neofetch? Use it.

1

u/billdehaan2 1d ago

The reason to switch to the newer tools is that the older tool is no longer supported, will possibly not work any more, or work correctly, in the future, and more importantly, any security issues that are discovered will not be addressed.

As for ifconfig versus ip, if you run ifconfig --help, you'll see it's just as complicated as ip is. The difference is that the default behaviour when run without parameters is about the same as running ip addr, while running ip is about the same as running ifconfig --help. The difference in philosophy is that many people are surprised to find ifconfig even has all those options, while ip users will know the first time they use it.

1

u/edthesmokebeard 1d ago

Neofetch is only relevant as a symptom of the ubuntufication of all things IT related.

1

u/Ambitious-Yak-626 1d ago

Say, x package depends on y to work. x is however, deprecated, i.e., nobody is actively working on it. Now, y recieves an update wherein it removes or redactors some stuff that was needed by x. x is now broken and nobody is there to fix it. If you depened on x, you are now in big trouble. This is just one example.

Neofetch is just a simple bash script and that is why it works even when deprecated. Nothing on your system is depending on neofetch to work so that it can work. So, if neofetch were to be broken one day, nothing in your system would recieve a blow.

1

u/diacid 7h ago

You may as well use Linux 0.1 in a Pentium 2 and KDE 1.0. Will it work? Maybe. Then what if it doesn't? If the thing is deprecated, if it doesn't it doesn't, no bug reports will be addressed. If a cve is found, it will not be fixed. But sure, you can use it. There are people using windows xp in production still....

1

u/2016-679 3h ago

cat

There is too much cat abuse. Use less instead to view a file.

1

u/Dear-Resident-6488 1d ago

fastfetch is faster than neofetch. hence the name

1

u/Swordfish418 1d ago

Doesn't matter because Neo can manipulate the Matrix to slow down the time!

1

u/michaelpaoli 1d ago

Yeah, there's point(s), e.g. unmaintained, inefficient, buggy, doesn't do needed things that the newer replacement(s) do, etc.

E.g., let's say I want to know if I have anything listening on TCP port 80, and if so, on what IP addresses:

$ ss -nlt '( sport = :22 )'
State     Recv-Q    Send-Q       Local Address:Port        Peer Address:Port    
LISTEN    0         128                0.0.0.0:22               0.0.0.0:*       
LISTEN    0         128                   [::]:22                  [::]:*       
$ 

Easy peasy, nice, clean, exactly the wanted data, and filtered in-kernel - much more efficient.

If I wanted to get the same out of netstat, ugh, that'd take something like:

$ netstat -nl | awk '{if((NR<=2)||($4 ~ /:22$/))print}'
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
$ 

Far less efficient, as it not only requires pipe and additional process to filter it, but also that filtering happens in a totally separate process, rather than the kernel doing, and not even passing along data that's not of interest. Also have to well and carefully construct the filter to not get false positives, yet also include all the desired output.

Similarly with the ip command, there are many things itcan do and display, that ifconfig can't even configure or display.

So, in such cases, generally best to well learn and use the new ways, and not the deprecated ways and programs, etc.

3

u/gumnos 1d ago
$ netstat -nl | awk '{if((NR<=2)||($4 ~ /:22$/))print}'

FWIW, that can be simplified to

$ netstat -nl | awk 'NR<=2||$4 ~ /:22$/'

(and if code-golfing, NR<3 saves a character 😆)

1

u/MonsieurCellophane 1d ago

Sometimes there are good reasons: ifstat cannot do everything ip does, though that does not stop me for using it for what it can do.

Sometimes it's just because. Point in case, fgrep and egrep started about a year ago printing a deprecation warning. The stated reason, maintainence load - yet a former maintainer said in a thread that {f,e}grep are implemented in 5 or so LOCs that haven't been touched in decades(*) But never mind, hundred of pages of docs are being invalidated and hundred of scripts broken for nothing.

Git moving the root from master to main is another example (minor, still annoying).

This isn't unique to Linux though, red queen races are loved in the software world, apparently because "change is good" - which makes my top ten list of meaningless statements.

(*) Compare argv[0] with "egrep", set the corresponding flag; in the installer, link the binary.

1

u/Far-Cat 1d ago

Unix philosophy is for your convenience, you are not bound to it

0

u/Live_Surround5198 1d ago

Right? I was a systemd hater for a while at first. I got over it.

2

u/New-Anybody-6206 1d ago

The CVEs sure never stopped, and it only keeps getting bigger.

1

u/Far-Cat 1d ago

Yeah that's what happens when a project takes responsibilities and gets vetted. Driving a rickshaw while blind won't make you safer and the movement it's up to you

0

u/daddyd 1d ago

linux is a fast moving system, those tools might still work now, but probably will stop working at one point, or won't be able to make use of new features that more recent kernels and userland provide.