← Back to context

Comment by jes5199

9 hours ago

I’m not sure it still makes sense to do OS research so close to the metal. Most computing is done up on the application level, and our abstractions there suck, and I haven’t seen any evidence that “everything is a file” helps much in a world of web APIs and SQL databases

Some of us are still interested in the world underneath all that web stuff!

Multiple experimental operating systems at multiple abstraction levels sounds like a good idea, though. What sort of system software would you like to build?

  • Operating systems are where device drivers live. It sounds awfully impractical to develop alternatives at this stage. I think OP is right.

    I think OSes should just freeze all their features right now. Does anyone remember all the weird churn in the world of Linux, where (i) KDE changed from version 3 to 4, which broke everyone's KDE completely unnecessarily (ii) GNOME changed from version 2 to 3, which did the same (iii) Ubuntu Linux decided to change their desktop environment away from GNOME for no reason - but then unchanged it a few years later? When all was said and done, nothing substantive really got done.

    So stop changing things at the OS level. Only make conservative changes which don't break the APIs and UIs. Time to feature-freeze, and work on the layers above. If the upper layers take over the work of the lower layers, then over time the lower layers can get silently replaced.

I didn’t really see the appeal until I learned how to use FUSE.

There’s something elegant about filesystems. Even more than pipes, filesystems can be used to glue programs together. Want to control your webcam with Vim? Expose a writable file. Want to share a device across the network? Expose it as a file system, mount that filesystem on your computer.

Idk I still find low level OS stuff super interesting because it hasn't had a rework in so long. With everything we've learnt since the age of modern computing, drives larger than a few MBs, super fast memory and fast cryptography to name a few.

It's interesting to imagine a new OS that incorporates these changes from it's infancy.

I appreciate all of the effort put in by Linux, BSD, Android, QNX and closed source OSs' have put in to building upon existing ideas and innovating gradually on them. But man I really want to see something better than everything is a file. I really enjoyed the stuff BeOS was pitching.

  • Well, on the file system side BeOS was pitching "virtual folders" that are really no different than what plan9 provides.

The "everything is a file" approach is nice in many cases, I'm worried though if it works everywhere. Maybe if done right. Subversion (SVN) shows branches as separate file trees.. and ClearCase too (though I'm on thin ice with ClearCase, having used it very little). And I just can't stand the file-oriented way SVN works, I could never get used to it. But there are a lot of other cases where "it's a file" does work, I've experimented with creating Fuse filesystem interfaces to some stuff now and then.

> I haven’t seen any evidence that “everything is a file” helps much in a world of web APIs and SQL databases

Well for one thing, such an abstraction enables you to avoid web apis and sql databases!

  • You're going to have to explain to me how a parametrized request/response system like calling a Web API or making a SQL query can be mapped to reading files. I've seen some stuff that people do with FUSE and it looks like ridiculous circus hoop jumping to making the Brainfuck-is-Turing-complete version of a query system. We have syntax for a reason.

    • Plan9 allows for implementing file servers in user space and exporting a whole file tree as a virtual "folder", so it's really more of "everything as a file server". No different than FUSE, really.

      5 replies →

    • Typically, if you were writing your hypothetical sql client in rc shell, you'd implement an interface that looks something like:

          <>/mnt/sql/clone{
              echo 'SELECT * from ...' >[1=0]
              cat /mnt/sql/^`{read}^/data # or awk, or whatever
          }
      

      This is also roughly how webfs works. Making network connections from the shell follows the same pattern. So, for that matter, does making network connections from C, just the file descriptor management is in C.

      4 replies →

    • In addition to the sibling comment, you might also consider simply not using the APIs or SQL queries to begin with. Many people have entire careers without touching either.

      6 replies →