User:Joeeagar/CoherentUnix

From OSDev Wiki
Jump to navigation Jump to search

Unix suffers from one could call "standardized incoherence." Here are some ideas on how it could be improved.


Filesystem Hierarchy

The standard Unix file hierarchy is both primitive and (on Linux at least) extremely bug-prone. Alternatives are:

  • Application bundles (OSX), where applications contain mini-chroot-ish directory trees (but can pull from shared system libraries).
  • Get rid of /usr/local entirely (which is kindof what Windows does if you think about it).

Related issues are:

  1. ELF does not support manifest files for dynamic linking.
  2. Too much of ELF dynamic linking relies on hard-coded paths.

ELF

ELF is a terrible standard. The problem with ELF is that it is so complicated and so flexible that there are multiple ways to accomplish a given task, and informal standards have arisen on which subset a given shared library system uses (e.g. PIC vs DSO shared libraries, absolute versus PIC vs DSO executables, etc).

Part of the problem is how ELF pushes dynamic linking into the standard C library (what's ironic is that this is an optional feature of ELF that has become mandatory).

The VT-100

The situation vis-a-vis emulation protocols for controlling Unix terminals is completely absurd. The VT-100 is something of a de facto standard, as is xterm. What Unix needs is a single standard. It can be anything, it just has to exist.

One possibility is to make a database of the control codes supported by xterm, rxvt, linuxconsole, etc, and then filter the list either through a committee or some sort of community voting scheme.

This is not ideal, however, since there a lot of normative questions as to how a terminal protocol should work. Someone did a joke presentation a while back on a new type of terminal he'd invented, with all sorts of neat, HTML-like features. Is this a good idea? Or not? Who knows? Everyone just takes the current mess for granted.

Security

Yeek! Run away! Security! The security scolds are always right, and we all still hate them. Yet, our code must be secure. It's a conundrum. We'll probably all end up with our applications requesting permission from the user for specific system calls, but mercifully not yet.

Unix Utilities

Someday the core utilities will have to be redesigned. Someday. . .