On Fri, Dec 31, 2021 at 01:17:18PM -0500, Dan Cross wrote:
On Fri, Dec 31, 2021, 10:54 AM Adam Thornton
<athornton(a)gmail.com> wrote:
Slightly older, but also slightly more
fundamental to the system, you need
look no farther than Solaris's `/bin/sh` for an illustrated example of the
pros and cons of maintaining backwards compatibility. [snip]
Sun is not the exemplar here: the move from SunOS 4's BSD userland to
Solaris 2's SVR4 broke tons of things. They didn't seem to mind that their
customers had to pay the cost of adaptation.
I'm sure that there were people at Sun who *did* care. The story I
had heard was that it was a decision made at the C-suite level, and
was a quid-pro-quo where to get that sweet, sweet, cash from AT&T so
Sun could stay afloat, they had to switch over to System V. (No
matter that Solaris 2 was a major step *backwards* in terms of
performance and stability compared to Sun OS....)
The Linux example is also a bit strange. The move from
e.g. `ifconfig` and
`netstat to `ip` and `ss` required lots of local retooling (I suppose some
distros retain the older tools or let you install them as an option. I
suppose one could always install `bash` on Solaris as a shell lingua
franca, as well). Not to mention systemd. The point is, breaking changes
are introduced all the time.
Are there distros who are no longer supplying ifconfig/netstat/route,
at least as an optional package? That's surprising if so.
All of the kernel interfaces to allow the old-style net-tools packages
to work, as well as the BSD-style ioctls/setsockopt, etc., are still
around, and fully supported. At least on my systems, I still install
net-tools because my finger macros are still used to using ifconfig,
netstat, and friends.
The reason why ip and ss were added was because there was a
significant amount of new functionality that was added to the Linux
networking stack (especially relating to routing and address aliasing)
that couldn't be expressed using the older C programming interfaces as
well as the ifconfig/route shell commands. There were two north star
principles about the new networking interfaces:
1) The old interfaces were always supposed to continue to work, and if
you didn't need the new functionality, there was no reason to use the
newer interfaces.
2) The new interfaces were *supposed* to be a strict superset of the
old interfaces.
If in fact ip and ss don't support AX.25, or other "exotic address
families" --- that's a bug, and should be reported as such. That
being said, if you don't need the fancy new features, there's no
reason to switch away from ifconfig. The whole *point* of the first
principle was that we didn't want to force users to do a forced Python
2.7 -> Python 3 style "long march" migration.
- Ted