Unix is both a technology and an idea
Android is a great NEGATIVE example of the Unix philosophy!  The code is based on the Linux kernel, which might make you think it&#x27;s Unix, but isn&#x27;t Unix [1]<p>An OS is where 3 things meet: code, data, and people.<p>AKA apps, files, and users.<p>AKA CPU, storage, and networking when viewed from hardware (in the old days, you&#x27;d have terminals and serial ports, not Internet)<p>I&#x27;d argue that (if you take away the historical &quot;hairs&quot;), Unix is a minimal and efficient implementation of those ideas.<p>It&#x27;s efficient enough to build heterogeneous &quot;platforms&quot; on top -- Lisp, JVM, JavaScript, Python, etc.  Databases, hardware virtual machines, the entire modern cloud<p>The shebang line is basically &quot;polymorphism&quot; for those runtimes -- everything looks like .&#x2F;foo arg1 arg2<p>The args are often unstructured files that you share between different programs<p>--<p>Android breaks from that design in many, many ways<p>- Applications are written to the Java runtime, not to the OS<p>- They written in Java or Kotlin.  Escaping to C++ is a &quot;special&quot; thing, you use the &quot;NDK&quot; for that<p>- It doesn&#x27;t expose raw files to applications, or at least it seems apps can&#x27;t really share files.  It uses its own security model, not Unix security (which was almost certainly necessary!)<p>Hm I clicked on the original link, and Rob Pike said it better: <i>The very idea of a &quot;Files app&quot; is high on my list of world-defeating idiocies perpetrated by technology.</i><p>- It doesn&#x27;t use Unix IPC, it has its own &quot;binder&quot; mechanism between apps.  Although most modern Unixes don&#x27;t find it enough either - <a href="https:&#x2F;&#x2F;roxanageambasu.github.io&#x2F;publications&#x2F;eurosys2016posix.pdf" rel="nofollow noreferrer">https:&#x2F;&#x2F;roxanageambasu.github.io&#x2F;publications&#x2F;eurosys2016pos...</a><p>So Android is more like a &quot;monoglot&quot; operating system on top of Unix.  It&#x27;s just using Linux as a bunch of device drivers basically<p>(Makes me think of the quote from the 90&#x27;s regarding browser&#x2F;JVM: &quot;Windows should just be a bunch of poorly debugged device drivers&quot;, and that rhymes a bit with how Android turned out.)<p>---<p>I think the cloud is missing the &quot;Unix&quot; layer, i.e. a good factoring of mechanism and policy, C and shell, which you can build other platforms on top of.<p>I&#x27;ll refer to my own post: <i>Kubernetes is our generation&#x27;s Multics</i><p><a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=27903720">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=27903720</a><p>The cloud is kind of an incoherent architectural mess -- it doesn&#x27;t really have the code &#x2F; data &#x2F; users model.<p>It basically has the incoherent &quot;Files app&quot; architecture, as Pike says<p>What&#x27;s code in the cloud?  How do I invoke it?  What are files?  What are users?  There&#x27;s a million answers, and it causes a lot of work for us programmers.<p>Most app code seems to be papering over the differences between different representations of these fundamental things, which ultimately makes them slow and unreliable<p>[1] Incidentally, Android is also not GNU&#x2F;Linux -- it&#x27;s the Linux kernel, without GNU at the platform layer