embryo wrote:Your most important problem is your desire. System without idiot users will straggle to get any attention and most probably die. You have mentioned improper marketing and other Apple's mistakes - it is the consequence of ignoring idiots. Another ignorant systems are unixes - they keep idiots far from understanding themselves. But idiots use Linux distributions - is it a joke? One noticeable distribution is named Android and very soon will reach 2 billion users.
I don't understand what you're trying to say here...?
Also, you seem to be under the impression that I think of "ordinary users" and "idiots" as being one and the same. That's not the case at all. Ordinary users should be given some consideration (which Unix/Linux basically doesn't do at all, because its developers commonly
do think that ordinary users are idiots, so when they're not ignoring ordinary users entirely, they're attempting to coddle them with a dozen variants of Baby's First Desktop UI.) Things like emphasizing intuitive, consistent user-interface design and failing in a recoverable fashion when possible would fall into that category. But there's nothing a computer can do to make someone stop behaving in a reckless or ignorant fashion other than to let them fail and learn from their failure; trying to prevent them from failing is less likely to educate them and more likely to hamper sensible users. (See, for example, Windows Vista/7/8's UAC.)
But here is another problem - how to implement such an ideal? And the answer can be found within another range - from Linux's way on the one extreme and up to Windows/Android way on the other. First extreme is a very long lived community process on the basis of a bazaar approach, which obviously leads to the number one philosophy point to be compromised. Second extreme is based on a cathedral approach with tightly controlled development process. But as time goes the cathedral should be reconstructed a lot of times to suite new needs of a cathedral owner and it obviously leads to the number one philosophy point to be compromised, because the system should serve idiot's needs (i.e. main customers, ordinary users) and the service should be delivered as quickly as possible and to be as inexpensive as possible.
So very, very wrong. Cathedral/bazaar/whatever methodology has nothing to do with the ability to design an intuitive yet powerful operating system. It's entirely possible for a corporation to develop an accessible but flexible OS (Amiga! BeOS!) and it's equally possible for a community of independent developers to work on the "ordinary users are idiots" philosophy and create software suitable only for idiots (dear God, GNOME 3. Or that "Sugar" **** on the OLPC.) It has everything to do with the assumptions you start with - if you really think that ordinary users are rock-stupid, your attempt to create a system for ordinary users is going to result in commensurately rock-stupid software.
And after looking at the possible implementation approaches it seems that all your philosophy is useless and in any way you should first make something "not so good" and try to increase it's quality in some iterative manner without deep thoughts about the philosophy. Because the philosophy like - the OS should be simple and good - is absolutely obvious and requires no thoughts. And the implementation details will always prevent you from building a real cathedral (an ideal).
Feh. Is perfection going to be achieved in one go? Of course not. But the way I see it, having some idea of where you want to go when you start is a good way to reduce your chances of getting aimlessly lost along the way, even if it still takes you many revisions to actually get there.
And are the things I said obvious? Darn right they are. Unfortunately, they seem to be the kind of obvious that people frequently miss or ignore despite their obviousness - so I think they bear repeating.
Rusky wrote:Another example is the OP's claim that any non-browser/network app should never be insecure or the developer is "doing it wrong." The fact is, your software will be insecure.
Will it? Seriously, I'm still trying to wrap my head around this viewpoint after years of hearing it treated as gospel. Please, explain to me how, say, a text editor can present a security flaw that doesn't spring from the developer doing something incredibly bone-headed like making it Internet-facing for no good reason.
(For that matter, could someone relate a
network security flaw that didn't spring from something incredibly, obviously stupid like using buffers without bounds-checking on an outward-facing connection? I'm really curious.)
It's much more important to figure out how to deal with vulnerabilities when they're discovered rather than sticking your head in the sand and singing "lalala I can't hear you."
Well I certainly never suggested doing
that.
Even in a memory-safe language with a sophisticated type system and lots of static analysis- no, even in a mathematically impossible language that catches all security holes at the language level, your design and users will still have problems- phishing, scammers calling on the phone pretending to be tech support, social engineering, side channel attacks, etc.
But at some point that stuff has to stop being the job of the OS and start being the job of the user - because, as you point out, it's
impossible for the OS to actually account for every possible eventuality, and it becomes
unusable well before that. We have mail providers that block whole regions of IPs and filter out messages based on complex heuristics, and people
still fall for incredibly obvious 419 scams. That ain't the computer's fault, and it's insane to act like it is.
Given that software must have dependencies, different software must use different dependencies, software must be updated both for changing requirements and for security, and both config and dependencies should be separable from their applications, it's not unreasonable to use a program to manage it all. It needs to make sure apps have the right dependencies installed, that you don't accidentally break your system trying to install conflicting dependencies (optimally by letting them coexist), that you don't get phished trying to install something by gallivanting around the Internet downloading unsigned packages from untrusted sources, and that your software is all up to date.
Dependencies, in my experience, only become incomprehensible and unmanageable when either
A. the dependencies themselves are poorly designed, or
B. the average program is made up of a tiny core dynamically linking to eleven billion libraries, sub-libraries, and sub-sub-libraries (so, any given GNOME application.) My answer to both of these problems would be more along the lines of "holy
geez stop
doing that already!" than "let's introduce a framework to formalize and manage these terrible practices!" It's like dealing with squatters by asking them to fill in an entry on the guest register.
As for that signing nonsense, it's an excellent way to sneak in some brand-new garden walls under the pretense that the computer should be subbing for the user's common sense and good judgement.
To clarify again, I'm not claiming any particular Linux distribution is perfect, or that we can't come up with a good zero-install system, or that unix is the pinnacle of good design. But throwing out all the wisdom and experience that's gone into those systems because you don't like some petty surface things is insane. There's even less of a chance that your magical recreate-everything design will be any good if you throw out the baby with the bathwater, let alone assert dominance without even attempting to provide solutions to these problems.
Who said anything about throwing out wisdom and experience? I'm perfectly willing to take
lessons from these into consideration. What I'm not interested in is trying to kludge a system that's already half made up of kludges into being something more elegant and modern when it would be simpler to just start from scratch.
onlyonemac wrote:Why don't you just use an old Mac? Also, I'm eagerly awaiting the day when someone ports or at least rewrites the Classic Macintosh operating system to run on PCs (or perhaps the day when I finally shelve my current operating system project and write a loose Mac OS clone)...
Heh, I toyed with that idea for a while...ultimately I think it's probably more trouble than it's worth, but if you ever do take a stab at it, you can count on me being a tester
(As for why I don't just use an old Mac? Really, pretty much it's just the lack of support for SSL and WPA/WPA2. If it weren't for that, OS9 on my TiBook would probably suit me just about perfectly.)
By the way, are you the same commodorejohn that was on the 68kMLA forums?
I am indeed!
iansjack wrote:The proof of the pudding is in the eating. How many people now use these wonderful OSs - Classic Mac OS, AmigaOS, Beos, Haiku, whatever? And yet the granddaddy of them all - Unix -, strangely, is still going strong, thanks to a well thought out, elegant design, powering the Internet, allowing amateurs like Sir Tim to invent the world-wide web. It's a funny old world.
Ah, there's that old Unix vainglory. Not only is it somehow "the granddaddy" of systems actually descended from SmallTalk or TRIPOS or designed from scratch as an object-oriented operating system with only POSIX compatibility as a link to the Unix legacy, it's also Deep Magic that is the only thing that could possibly have enabled someone to come up with the idea of network hypertext!
SpyderTL wrote:Getting anyone on this site to agree with you about anything would be a true miracle. The problem is that everyone here already has their "perfect" OS design in their head, and everything that doesn't happen to line up with it is immediately attacked with passion and fervor.
Oh, of course. But it's made for some lively conversation!
Anything is possible, and sometimes it just takes someone who believes in something so much that they simply ignore all of the nay-sayers and proceed to change the world. With that in mind, if there is anything I can do to help, just let me know.
Many thanks
Brendan wrote:Of course there's a massive difference between "advanced features" (that are useful/needed in certain situations) and "complications that benefit nobody that the designer failed to avoid" (that provide no benefits compared to superior/simpler alternatives). A lot of the complexities that end-users are expected to deal with for "desktop GNU/Linux distributions" are the latter.
Dead-on.