Are 'good' designs really worthwhile?
Are 'good' designs really worthwhile?
Hey.
I've been wondering lately, how long has it been since operating systems were designed to be operated? The biggest focus I've seen on this forum (aside from "how do i computer the boot" type questions) seems to be on security. Security in the sense of things like paging and memory protection (and maybe on a more advanced level, file permissions and other Unix things). But with all this development on how to put applications in white padded rooms when they execute, I've yet to see any developments on how to make the operating system more usable. Now by usable, I don't mean things like whiz-bang graphics or point-n-click menus (which are arguably more confusing than a text console); I mean general usability. I mean usability in the sense that when I install a program, change a configuration setting, or run a package manager, I don't have to enter my root password at every step; in the sense that I don't have to reboot my computer for every driver (and in some cases, software) installation. I mean usability for programmers as well; usable in the sense that to make a little box on the screen I don't have to write a 200-line base of code (win32, I'm looking at you) before I actually start my own program; usable in the sense that if I want to make a game, I shouldn't have to use someone else's API to make it. If I, as a programmer, want to use the screen as an array of pixels, I should damn well be able to.
Now, DOS did this. A VGA screen mode was one "int 10h" away, the hardware was left open to be accessed by user programs, and (gasp) when programs screwed up, they could screw up a lot of things; now, people generally think it had a horrible design that should have died earlier than when it did. But those people are missing something. A lot of users loved DOS. Sure, there were some gripes, but the volume of those compared to those regarding windows 3.1, 95, 98, and onwards is tiny at best. Overall, the end-users loved their C:\>. Isn't that what's important? I guess not.
Memory protection was developed to save users from badly written programs. How about we, as operating system and software developers, save them from awful programs by not writing them?
I've been wondering lately, how long has it been since operating systems were designed to be operated? The biggest focus I've seen on this forum (aside from "how do i computer the boot" type questions) seems to be on security. Security in the sense of things like paging and memory protection (and maybe on a more advanced level, file permissions and other Unix things). But with all this development on how to put applications in white padded rooms when they execute, I've yet to see any developments on how to make the operating system more usable. Now by usable, I don't mean things like whiz-bang graphics or point-n-click menus (which are arguably more confusing than a text console); I mean general usability. I mean usability in the sense that when I install a program, change a configuration setting, or run a package manager, I don't have to enter my root password at every step; in the sense that I don't have to reboot my computer for every driver (and in some cases, software) installation. I mean usability for programmers as well; usable in the sense that to make a little box on the screen I don't have to write a 200-line base of code (win32, I'm looking at you) before I actually start my own program; usable in the sense that if I want to make a game, I shouldn't have to use someone else's API to make it. If I, as a programmer, want to use the screen as an array of pixels, I should damn well be able to.
Now, DOS did this. A VGA screen mode was one "int 10h" away, the hardware was left open to be accessed by user programs, and (gasp) when programs screwed up, they could screw up a lot of things; now, people generally think it had a horrible design that should have died earlier than when it did. But those people are missing something. A lot of users loved DOS. Sure, there were some gripes, but the volume of those compared to those regarding windows 3.1, 95, 98, and onwards is tiny at best. Overall, the end-users loved their C:\>. Isn't that what's important? I guess not.
Memory protection was developed to save users from badly written programs. How about we, as operating system and software developers, save them from awful programs by not writing them?
every hear of malware? A malicious program on an OS that has no memory protection could access and corrupt the kernel's memory or that of another program.Memory protection was developed to save users from badly written programs. How about we, as operating system and software developers, save them from awful programs by not writing them?
Since when is it the operating system's job to make sure its users don't run britny_spers_naked.jpg.exe? I don't feel the need help stupid users; if anything, malware will weed them out. To that same effect, guns should have muzzle protection so you can't shoot yourself in the mouth.every hear of malware? A malicious program on an OS that has no memory protection could access and corrupt the kernel's memory or that of another program.
If you're not going to provide malware protection in your OS, your OS will not be considered 'usable' by any means.lollynoob wrote:Since when is it the operating system's job to make sure its users don't run britny_spers_naked.jpg.exe? I don't feel the need help stupid users; if anything, malware will weed them out. To that same effect, guns should have muzzle protection so you can't shoot yourself in the mouth.every hear of malware? A malicious program on an OS that has no memory protection could access and corrupt the kernel's memory or that of another program.
[edit] oops, JamesM got there before me lol [/edit]
The end.
if you provide no protection, why will someone want to use an OS that is just asking to be infected by every little script on the net. Also, what happens when a bug occurs? you can't possibly weed out EVERY bug from the start, and if a bug (eg: buffer overflow) occurs, you have no memory protection to stop it from doing exactly that; overflowing into other process space or overwriting crucial execution code.
then you will never create a successful mainstream OS.Since when is it the operating system's job to make sure its users don't run britny_spers_naked.jpg.exe? I don't feel the need help stupid users; if anything, malware will weed them out. To that same effect, guns should have muzzle protection so you can't shoot yourself in the mouth.
The end.
if you provide no protection, why will someone want to use an OS that is just asking to be infected by every little script on the net. Also, what happens when a bug occurs? you can't possibly weed out EVERY bug from the start, and if a bug (eg: buffer overflow) occurs, you have no memory protection to stop it from doing exactly that; overflowing into other process space or overwriting crucial execution code.
Website: https://joscor.com
Sounds a bit like windows to me. There will always be ways to exploit operating systems; I've just decided to not spend my time writing "gotcha, lol!"s for malicious software.why will someone want to use an OS that is just asking to be infected by every little script on the net.
Hopefully, programmers will check for things like buffer overflows before they release their software. It's not my job, as the kernel developer, to account for the mistakes of other people.Also, what happens when a bug occurs? you can't possibly weed out EVERY bug from the start, and if a bug (eg: buffer overflow) occurs, you have no memory protection to stop it from doing exactly that; overflowing into other process space or overwriting crucial execution code.
Granted, all of this has no way of being successful in the "real world," but I just figure it's the way things should be.
To some extent I agree with you, lollynoob.
I program win32, and I hate exactly the same thing you hate. Accessing the wrong pixel on the screen is not nearly as destructive as accessing another program's code or data areas, or an unprotected disk sector. It is not the OS'es job (or WINGDI's job -- or even my C/C++ <i>compiler's</i> job!) to protect me (as a programmer) from *myself*.
On the other hand, an OS that crashes is, by definition, unreliable. And worthless. The point of protecting apps from each other is to stop OS crashes. This *is* important. Virii are also an increasing irritation on the 'Net. An OS that can ignore them would make its users happy.
I completely disagree that a secure OS is impossible. It is rather easy in fact. It is just very had to make it secure *and* efficient enough to be usable.
The people who liked the DOS c:\> prompt were technophiles. They were not 85% of the population. It takes a gui to make a computer usable for a technophobe. Everyone here is very happy typing in a grep command into a cygwin "DOS" window, as one of 15 windows, on a WinXP Pro machine. You are preaching to the choir on that one.
But there are two major points:
1) Each of us does have their own ideas about how to make their OS more usable -- for users and programmers. But those ideas are not the ones we discuss. Because we aren't sure if they will work or not; and because that is something you can only decide after you've been actually using the finalized OS for a few years (shall we say, that stage is a ways away for most of us).
2) Major new innovations in usability are the "killer apps" of OS design. They only happen once every few decades. For you to expect to see several such ideas floating around a forum like this is unreasonable.
I program win32, and I hate exactly the same thing you hate. Accessing the wrong pixel on the screen is not nearly as destructive as accessing another program's code or data areas, or an unprotected disk sector. It is not the OS'es job (or WINGDI's job -- or even my C/C++ <i>compiler's</i> job!) to protect me (as a programmer) from *myself*.
On the other hand, an OS that crashes is, by definition, unreliable. And worthless. The point of protecting apps from each other is to stop OS crashes. This *is* important. Virii are also an increasing irritation on the 'Net. An OS that can ignore them would make its users happy.
I completely disagree that a secure OS is impossible. It is rather easy in fact. It is just very had to make it secure *and* efficient enough to be usable.
The people who liked the DOS c:\> prompt were technophiles. They were not 85% of the population. It takes a gui to make a computer usable for a technophobe. Everyone here is very happy typing in a grep command into a cygwin "DOS" window, as one of 15 windows, on a WinXP Pro machine. You are preaching to the choir on that one.
But there are two major points:
1) Each of us does have their own ideas about how to make their OS more usable -- for users and programmers. But those ideas are not the ones we discuss. Because we aren't sure if they will work or not; and because that is something you can only decide after you've been actually using the finalized OS for a few years (shall we say, that stage is a ways away for most of us).
2) Major new innovations in usability are the "killer apps" of OS design. They only happen once every few decades. For you to expect to see several such ideas floating around a forum like this is unreasonable.
@lollynoob, I agree with you, its like putting bar's on your house windows so burglars do not rob you, but i like my house windows without bar's, yes its not as safe as bar's, but i do not want to live in a prison.
That why my OS does not have any protection, just like the XBOX
http://www.extremetech.com/article2/0,1 ... 116,00.asp
And i would say the xbox was successful and from all the homebrew thats been made, i do not see many virus.
The number of virus for the OS, are proportioned to the number of user's.
That meens hobby OS's should be the safest OS's out there.
That why my OS does not have any protection, just like the XBOX
http://www.extremetech.com/article2/0,1 ... 116,00.asp
And i would say the xbox was successful and from all the homebrew thats been made, i do not see many virus.
The number of virus for the OS, are proportioned to the number of user's.
That meens hobby OS's should be the safest OS's out there.
Operating System design is all about tradeoffs.
For example, UNIX makes everything into a file. It's really simple. If you learn computers by rote, however, it makes it harder because configuring UNIX files is almost impossible. Making it easier for one person makes it harder for another.
On a broader scale, it's efficiency vs. security, etc. One can't argue that one is more important, they are all equally important (and equally difficult to perfect). So one HAS to make a choice. Dex chose to sacrifice security to make his OS simpler and faster.
For example, UNIX makes everything into a file. It's really simple. If you learn computers by rote, however, it makes it harder because configuring UNIX files is almost impossible. Making it easier for one person makes it harder for another.
On a broader scale, it's efficiency vs. security, etc. One can't argue that one is more important, they are all equally important (and equally difficult to perfect). So one HAS to make a choice. Dex chose to sacrifice security to make his OS simpler and faster.
i was actually complimenting him in disguise, by saying his OS has one of the most amount of users.lollynoob wrote:It all depends on if you think security is important. Folks who like to turn their computer into some sort of fortress obviously aren't his target audience...and by that standard, your os Dex is one of the insecurest on this forum
I care about security in my os, but not to the extent that some people will. The way i see it, i want to eliminate as many BoF's and other bugs as possible, and have memory/process protection. I will run my apps in ring 0 for now, but if (big if) i ever get enough users to warrant further protection, ring 3 wont be a hard transition.
Re: Are 'good' designs really worthwhile?
Hi,
1) An OS that lets you know that you've got some sort of bug so you can find and fix it fast
2) An OS that silently lets you trash everything without letting you know you've got some sort of bug, so you can't find and fix the bug until several end-users have reported mysterious problems and you've spend several months trying to find it
People aren't machines - they make mistakes. If you want to save people from awful programs then you need something to catch these mistakes. The more mistakes you catch the better software will be.
Cheers,
Brendan
As a programmer, would you prefer:lollynoob wrote:Memory protection was developed to save users from badly written programs. How about we, as operating system and software developers, save them from awful programs by not writing them?
1) An OS that lets you know that you've got some sort of bug so you can find and fix it fast
2) An OS that silently lets you trash everything without letting you know you've got some sort of bug, so you can't find and fix the bug until several end-users have reported mysterious problems and you've spend several months trying to find it
People aren't machines - they make mistakes. If you want to save people from awful programs then you need something to catch these mistakes. The more mistakes you catch the better software will be.
Cheers,
Brendan
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
- piranha
- Member
- Posts: 1391
- Joined: Thu Dec 21, 2006 7:42 pm
- Location: Unknown. Momentum is pretty certain, however.
- Contact:
Well, what if I am just making this kernel for me really, and only I intend to use it? I doubt that there will be a malware program for just my OS.every hear of malware? A malicious program on an OS that has no memory protection could access and corrupt the kernel's memory or that of another program.
My kernel has some protection, and some security (permissions, memory protection and ring3) and thats it.
-JL
SeaOS: Adding VT-x, networking, and ARM support
dbittman on IRC, @danielbittman on twitter
https://dbittman.github.io
dbittman on IRC, @danielbittman on twitter
https://dbittman.github.io