Live data from Hacker News

Unix is both a technology and an idea

utcc.utoronto.ca

1–10 of 97 posts

Re: Unix is both a technology and an idea

#2
I would argue that while Unix the technology is helpful, Unix the idea is now actively harmful.

The Unix idea just doesn’t scale well or have the necessary security.

It seems we are more and more going to an idea that is even older than Unix - the mainframe.

From fault tolerance to distributed computing to security to memory channels our modern architectures are more resembling mainframes than Unix and that is good.

Everything is a file is a very, very leaky abstraction. There are all sorts of issues with latency, cost, atomicity, security, persistence.

I feel at this point, that this constant looking back to Unix “purity” is holding us back and closing our mind to new solutions.

Re: Unix is both a technology and an idea

#3
Android is a great NEGATIVE example of the Unix philosophy! The code is based on the Linux kernel, which might make you think it's Unix, but isn't Unix [1]

An OS is where 3 things meet: code, data, and people.

AKA apps, files, and users.

AKA CPU, storage, and networking when viewed from hardware (in the old days, you'd have terminals and serial ports, not Internet)

I'd argue that (if you take away the historical "hairs"), Unix is a minimal and efficient implementation of those ideas.

It's efficient enough to build heterogeneous "platforms" on top -- Lisp, JVM, JavaScript, Python, etc. Databases, hardware virtual machines, the entire modern cloud

The shebang line is basically "polymorphism" for those runtimes -- everything looks like ./foo arg1 arg2

The args are often unstructured files that you share between different programs

--

Android breaks from that design in many, many ways

- Applications are written to the Java runtime, not to the OS

- They written in Java or Kotlin. Escaping to C++ is a "special" thing, you use the "NDK" for that

- It doesn't expose raw files to applications, or at least it seems apps can't really share files. It uses its own security model, not Unix security (which was almost certainly necessary!)

Hm I clicked on the original link, and Rob Pike said it better: The very idea of a "Files app" is high on my list of world-defeating idiocies perpetrated by technology.

- It doesn't use Unix IPC, it has its own "binder" mechanism between apps. Although most modern Unixes don't find it enough either - https://roxanageambasu.github.io/publications/eurosys2016pos...

So Android is more like a "monoglot" operating system on top of Unix. It's just using Linux as a bunch of device drivers basically

(Makes me think of the quote from the 90's regarding browser/JVM: "Windows should just be a bunch of poorly debugged device drivers", and that rhymes a bit with how Android turned out.)

---

I think the cloud is missing the "Unix" layer, i.e. a good factoring of mechanism and policy, C and shell, which you can build other platforms on top of.

I'll refer to my own post: Kubernetes is our generation's Multics

https://news.ycombinator.com/item?id=27903720

The cloud is kind of an incoherent architectural mess -- it doesn't really have the code / data / users model.

It basically has the incoherent "Files app" architecture, as Pike says

What's code in the cloud? How do I invoke it? What are files? What are users? There's a million answers, and it causes a lot of work for us programmers.

Most app code seems to be papering over the differences between different representations of these fundamental things, which ultimately makes them slow and unreliable

[1] Incidentally, Android is also not GNU/Linux -- it's the Linux kernel, without GNU at the platform layer

Re: Unix is both a technology and an idea

#5

I would argue that while Unix the technology is helpful, Unix the idea is now actively harmful. The Unix idea just doesn’t scale well or have the necessary security. It seems we are more and more going to an idea that is even older than Unix - the mainframe. From fault tolerance to distributed computing to security to memory channels our modern architectures are more resembling mainframes than Unix and that is good.…

There's a book I like called "Design Rules: The Power of Modularity"; it was written by some business professors in 2000 and is loosely about the industrial organization and the history of IBM's System/360 (the first "modular computer family") and more generally about how modularity enables innovation and growth.

They enumerate what they call "modular operators" which are basic ways a system can be changed:

* "splitting" a design into modules

* "substituting" one module design for another

* "augmenting" adding a new module to the system

* "excluding" a module from the system

* "inverting" to create new design rules

* "porting" a module to another system

It doesn't matter here whether the modules are functions, computer programs, hardware components, business units, 2 pizza teams, or companies in an industry (Intel, AMD, RAM manufacturers...).

Modularity is a core part of the Unix philosophy. Unix itself is an operating system and involves some particular concepts (pipes, files, processes).

It seems obvious that the concepts for an operating system (pipes, files) will be less relevant in a different domain (say, web programming).

While I agree that maybe the Unix abstractions aren't appropriate for new problems in different domains, I think some parts of the Unix philosophy (i.e. modularity, minimalism, and compositionality) still deserve consideration.

Re: Unix is both a technology and an idea

#6
post #4

If we analyze the computational complexity of software architectures the way we do regular algorithms, we see that UNIX was much more efficient than previous OSes/approaches. It's demonstrated in this short video: https://www.youtube.com/watch?v=3Ea3pkTCYx4

Yup, I cited that Unix vs Google video in my post The Internet Was Designed With a Narrow Waist

https://www.oilshell.org/blog/2022/02/diagrams.html

A narrow waist is an idea or interface that gives you O(M x N) functionality for O(M + N) code. It's a way to reuse code and data by interoperating.

If you can't interoperate, you end up writing bad versions of the same application code, over and over again.

More concretely, I remember there was this whole "re-architect google3" idea >10 years ago, which seemed to get brushed aside for the cloud. I think they were trying to have more of a narrow waist, not 10 different distributed databases made by 10 competing teams, 10 different auth libraries, etc.

The management's perception then was that product dev was extremely slow, and had poor quality results

That video is about the application side of Google (e.g. docs and maps), but the internal side had similar architectural problems.

---

As another example, it seems like the dev tools group at Google wanted this article to be published, and I have no idea why:

Google Is 2 Billion Lines of Code—And It's All in One Place

https://www.wired.com/2015/09/google-2-billion-lines-codeand...

It's saying Microsoft Windows has 50 M lines of code, while Google has 2 B lines of code.

There are all sorts of problems with those numbers, but in any case, it's not a flattering comparison -- not something you want to brag about

I think they wanted to emphasize the scalability of the source control system, and ended up saying that Google has a lot of bad code that doesn't work well

Re: Unix is both a technology and an idea

#7

I would argue that while Unix the technology is helpful, Unix the idea is now actively harmful. The Unix idea just doesn’t scale well or have the necessary security. It seems we are more and more going to an idea that is even older than Unix - the mainframe. From fault tolerance to distributed computing to security to memory channels our modern architectures are more resembling mainframes than Unix and that is good.…

Have you ever used a mainframe OS like MVS, or the z/OS or earlier versions of it?

Re: Unix is both a technology and an idea

#8
post #6
post #4

If we analyze the computational complexity of software architectures the way we do regular algorithms, we see that UNIX was much more efficient than previous OSes/approaches. It's demonstrated in this short video: https://www.youtube.com/watch?v=3Ea3pkTCYx4

Yup, I cited that Unix vs Google video in my post The Internet Was Designed With a Narrow Waist https://www.oilshell.org/blog/2022/02/diagrams.html A narrow waist is an idea or interface that gives you O(M x N) functionality for O(M + N) code. It's a way to reuse code and data by interoperating. If you can't interoperate, you end up writing bad versions of the same application code, over and over again. More concrete…

Is there a linux OS (or two?) in google3?

google3 vs windows might not be a reasonable comparison, than say google3 vs windows + office + azure + dozens of other Microsoft products.

Re: Unix is both a technology and an idea

#9

I would argue that while Unix the technology is helpful, Unix the idea is now actively harmful. The Unix idea just doesn’t scale well or have the necessary security. It seems we are more and more going to an idea that is even older than Unix - the mainframe. From fault tolerance to distributed computing to security to memory channels our modern architectures are more resembling mainframes than Unix and that is good.…

> “purity” is holding us back and closing our mind to new solutions.

Maybe. But consider shebang. It means that any program (/script) written in any language known by the system can call any other program written in any other language. That keeps open the option of which laguage should we use for our next module. Right?

Post reply on HN