| ▲ | BoppreH an hour ago | |
Another thing that has bothered me for a long time: we have far too many data isolation mechanisms, each with their own idiosyncrasies and trying to cover up for each other's gaps. Very very roughly, from source code up: - Variable naming conventions (_field in Python). - Lexical scopes. - Visibility annotations (public, private, protected). - Coroutines, threads. - Packages/modules. - Sandboxes. - Processes. - OS capabilities (pledge/unveil, SELinux, etc). - Local user accounts. - File permissions. - Containers/chroot. - User mode vs kernel (Ring 0 vs ring 3). - Virtual machines. - Cryptographic measures (secureboot, attestation, memory encryption, etc). On the other hand we have few mechanisms to share data: the filesystem, clipboard, sockets, maybe dbus. Shared memory if you're feeling brave. If a script wants to know what file is currently open on my editor or what email attachments I recently uploaded, the editor or email client has to explicitly implement this feature via one of those limited mechanisms. Almost nobody does this, so we're stuck with black box applications that are hostile to customization. | ||
| ▲ | cjfd 4 minutes ago | parent [-] | |
You have a point that there are a lot of separation mechanisms and that, if things were designed better, fewer would be needed but by the same argument it also seems unwise to increase the number of mechanisms to share data. Sockets by themselves are quite big enough on their own to quite literally drive the whole internet through. | ||