Hacker News new | ask | show | jobs
by eternityforest 1545 days ago
UNIX is fine. UNIX philosophy is an issue, along with C, and the fact that everything now is mobile and web based and the tools aren't well suited to offline/nonSaaS stuff yet.

Linux is slowly becoming a standardized, integrated platform. I don't see why it can't be evolved to have all the main advantages of a LISP machine.

I also don't see how that solves dependency management. No matter what, if you build against something and it changes, stuff breaks. That's the main issue with Linux.

It also doesn't solve microservices being kinda hard and needing manual configuration specifically for the setup, rather than the one size fits all style of monolithic desktop software. That's an application architecture challenge.

Nor does it solve cross-platform.

Linux does have problems and could learn from LISP machines(Although I'd rather we have TypeScript machines or Python or something, LISP is pretty far from what I want a language to be, and is meant for creativity and expressiveness rather than Ada-like safety and boring hacker-repelling Java-like standardization).

But a lot of issues go away if you pretend everything other than Debian and Red Hat don't exist.

2 comments

UNIX and UNIX philosophy are one and the same, there is no way around it with some kind of word games.

C was created to make UNIX, originally written in straight Assembly, portable. A process finalized by UNIX V6 release.

UNIX philosophy grew out of Bell Labs into all universities and business that took those source tapes, and took it from there.

Hardly possible to be selective of what UNIX is all about.

Modern Linux is so far from old school UNIX though. They are even talking about using Rust!

It's evolved so much, and the remaining unixy bits get more and more supressed and hidden.

BSD still has more of it, but Linux seems to be moving on and is very far from the days of everyone piecing together software from small parts.

Linux became a kernel for the GNU project, whose founders were raised in ITS and MIT AI Laboratory, and the original planned kernel for the project doesn't have anything related to UNIX.

Most projects using the Linux kernel nowadays care more about having a free beer kernel than anything UNIX related.

BSD has always been a proper UNIX, hence AT&T lawsuit when they were finally allowed to monetize on UNIX.

From a semi shallow position, what annoys me with linux is the lack of genericity above the "file" abstraction (which is not even real enough).

I remember seeing GNU ls code, 30% argparse, 30% formatting.., all of this seems brittle and redundant.

Bazaar is fine to allow freeform innovative evolution but it's also too messy.

Linux has a lot going on above the file level, it's just not in the kernel.

Most people using Linux also have DBus and Pulse/Pipewire going, and a ton of other stuff.

Network devices are technically files, but in practice they are names. I have no idea what them being a file even means at the byte level. They're just names that you deal with through NetworkManager's DBus API, if you're not targeting any of the minimal or embedded distros.

This feels like an odd critique. I would expect that more programs should devote more code to the parts that interact with a user. That is, the size alone isn't much of a signal. Is it?
In the sense of the PowerShell engine doing the argument parsing and display formatting for all cmdlets, which is something I think the designers took from VMS shell. That makes for "Don't Repeat Yourself" (one place for all the argument parsing code) and from the user experience side all commands which subscribe to this take parameters in the same way, arguments handled in the same way, with the same common parameters, and support parameter introspection and tab completion, etc. so it can be a more uniform experience.

(Not always great though; I don't know VMS shell but PowerShell cmdlets can still have similar tools taking different parameter names for the same concept, or not working implementing what to do with common parameters, or taking DSLs in strings like WMI Query Language, or taking rather opaque and unique hashtable blobs).

I didn't mention it but powershell was in my mind. powershell format-table in particular. Also there's some guys who are patching linux user space to embed json as output (and the jc wrapper to be able to leverage jq later down the pipe)
The formatting is redundant and should be able externalized. The argparse also deals with the output formatting, hence redundant. Only file spec selection is core to LS.
Redundancy isn't, by itself, a problem. In the case of core utilities, it affords them a level of stability that is just not even attempted in many areas.