Computing requires trust. Computers are too large and complex to understand, ultimately you have to have a source or trust somewhere that you rely on to make you not owned and spend your own attention on other attack surfaces.
Computing is inherently insecure and risky, you must have a risk model and implement appropriate mitigations such as offline backups, non email 2fa, sandboxing and so on as appropriate to your situation.
I wish it were not so but it’s not even a capitalism thing, people have been fucking people’s shit up out of curiosity, greed, anger, or accident since forever.
I agree but I think there are a lot of ways to make computers safers. Enabling sandboxing by default, coming up with a more robust permissions system allowing programs to only access specific parts of the hardware and of the file system (Android already has this). But most importantly - making software that is small, simple and understandable to humans
The linux security model is outdated yes, nothing to do with package managers. I recommend using SElinux for finer management.
Software is how it is because people don’t want software that follows the unix philosophy. They want bloated pieces of crap that do everything, they don’t want to compose multiple tools or not have stuff try to guess what you mean to do. They want autoconfiguration and highly customised PCs.
You can set up your own system to be a lovely island of sanity and never install a browser or officer suite (I have walked this path and it’s very relaxing) but 99.999999999% of people are vehmently against this and also completely disinterested in their system. So here we are.
That is not the unix philosophy lol that is a detail of the kernal
In 1978, Doug McIlroy documented a set of principles encapsulating the “characteristic style” that had emerged among Unix system users and developers
Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new “features”.
Expect the output of every program to become the input to another, as yet unknown, program. Don’t clutter output with extraneous information. Avoid stringently columnar or binary input formats. Don’t insist on interactive input.
Design and build software, even operating systems, to be tried early, ideally within weeks. Don’t hesitate to throw away the clumsy parts and rebuild them.
Use tools in preference to unskilled help to lighten a programming task, even if you have to detour to build the tools and expect to throw some of them out after you’ve finished using them.
Expect the output of every program to become the input to another, as yet unknown, program. Don’t clutter output with extraneous information. Avoid stringently columnar or binary input formats. Don’t insist on interactive input.
Not every file format has the complexity of JSON. And most of the files the kernel serves are either trivial enough to be parsed with a simple FSM or not meant to be parsed at all. No dev worth their weight in sawdust is gonna pull an external library just to help parse the space-separated numbers of /proc/uptime.
Computing requires trust. Computers are too large and complex to understand, ultimately you have to have a source or trust somewhere that you rely on to make you not owned and spend your own attention on other attack surfaces.
Computing is inherently insecure and risky, you must have a risk model and implement appropriate mitigations such as offline backups, non email 2fa, sandboxing and so on as appropriate to your situation.
I wish it were not so but it’s not even a capitalism thing, people have been fucking people’s shit up out of curiosity, greed, anger, or accident since forever.
I agree but I think there are a lot of ways to make computers safers. Enabling sandboxing by default, coming up with a more robust permissions system allowing programs to only access specific parts of the hardware and of the file system (Android already has this). But most importantly - making software that is small, simple and understandable to humans
The linux security model is outdated yes, nothing to do with package managers. I recommend using SElinux for finer management.
Software is how it is because people don’t want software that follows the unix philosophy. They want bloated pieces of crap that do everything, they don’t want to compose multiple tools or not have stuff try to guess what you mean to do. They want autoconfiguration and highly customised PCs.
You can set up your own system to be a lovely island of sanity and never install a browser or officer suite (I have walked this path and it’s very relaxing) but 99.999999999% of people are vehmently against this and also completely disinterested in their system. So here we are.
Everything is a file means that every program needs a parser. Means that every program will at least depend on some parsing library.
That is not the unix philosophy lol that is a detail of the kernal
In 1978, Doug McIlroy documented a set of principles encapsulating the “characteristic style” that had emerged among Unix system users and developers
Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new “features”.
Expect the output of every program to become the input to another, as yet unknown, program. Don’t clutter output with extraneous information. Avoid stringently columnar or binary input formats. Don’t insist on interactive input.
Design and build software, even operating systems, to be tried early, ideally within weeks. Don’t hesitate to throw away the clumsy parts and rebuild them.
Use tools in preference to unskilled help to lighten a programming task, even if you have to detour to build the tools and expect to throw some of them out after you’ve finished using them.
https://en.wikipedia.org/wiki/Unix_philosophy
Parsers
Okay? not at all relevant to anything I’ve said?
Not every file format has the complexity of JSON. And most of the files the kernel serves are either trivial enough to be parsed with a simple FSM or not meant to be parsed at all. No dev worth their weight in sawdust is gonna pull an external library just to help parse the space-separated numbers of /proc/uptime.