I remember BIOS flashers that found files on a FAT floppy, and I remember being desperate enough to actually hook up a floppy drive just for that. I remember burning custom boot CDs, or using a DOS boot CD and a temporary FAT partition. I can never remember it being particularly convenient, and yours sounds very nice.
But how can Apple beat that? Can you actually flash from inside the OS?
Better, maybe, but not more efficient. I use a Linux boot CD to test hardware, backup files from Windows, then I wipe and reinstall. I figure if I'm going to have a custom rescue CD, it may as well be an nLite automated Windows install CD, with my RAID drivers slipstreamed in.
A favorite in high school. Teacher would give us a computer lab for Senior Thesis, then leave to go about other business, and we'd all pull out thumbdrives and play networked Doom.
"Just download the JVM, install it with admin rights, and then download and run my app," is easy enough for you to say, but not so easy for my wife to actually do.
More and more, this is becoming acceptible, especially if you include it on an install disk. I haven't bought a game in ages that didn't include DirectX, and insist on a recent version to use it. Especially in the case of.NET, this will become a non-issue -- if it's OK to make your game depend on DirectX 10, you should note that Vista will include.NET.
Whether or not you think this would be stoopid, this is the way the market's been going for the last couple of years, so you might as well try to think ahead.
I am, but I'm hoping that my way is where the market is going, ultimately, because my way makes a lot more sense.
We're talking fantasy anyway, so why not use it to consider what might be possible with an OS designed around VT (which might as well include emu)?
I suppose, I just prefer bytecode. Either way is going to make you rethink your app, but bytecode is more efficient and much more sensible with respect to today's world. The future doesn't exist in a vacuum; it builds on what we have today.
Yeah, if your erection lasts four hours, call a doctor. That means 3 hours, break, 3 hours, break... And even the first 3 hours is still cutting pretty late into the night.
Note: I'm 19, so I'm young enough for this to be a legitimate concern.
watching TV, eating
Or reading, say. Those three do have definite beginnings/endings, if you want them to. Read exactly one chapter of a book. Watch your one bedtime show. Eat your one bedtime snack, then go to sleep.
One possibility is that many people fall asleep after an orgasm, but there are other activities that can make you sleepy, also. Certainly, if you eat a huge turkey dinner, you're going to nap for a bit anyway.
But I think this one is closer to the truth:
being considered socially as an appropriate bedroom behavior (at least in most cultures)
We have plenty of customs that are potentially dangerous to our health. I haven't checked lately, but around 2004, you were safer in Iraq than you were here -- a higher percentage of people were dying in highway accidents. I guess tanks are just safer...
NAME
foobar -- the third example variable... ^C $ woman foobar I already told you what foobar is a million times! I swear, if you would just listen to me for once in your life...^C HEY! Don't interrupt me when I'm talking to you! If you ^C just ONE MORE TIME...
Oh, please. Delete Safari. Install FireFox. Run FireFox. See dialog: "Firefox is not set as your default browser. Would you like Firefox to be your default browser?" Click "Okay".
I consider it a flaw that the only place to set a browser as default is inside the browser. It makes about as much sense to me as having your TCP/IP settings inside Firefox.
If you're going to criticize something it helps to have some idea as to what you're talking about... or at least have the guts to say, "I like Linux, and don't need no stinkin' rationalizations!"
I don't feel like digging up rationalizations right now, you're right. But I have plenty. Big one now is a package manager.
What areas is Linux playing catch-up? I know about XGL, and I know about drivers -- which is not Linux's fault, by the way -- but what is there that they could be doing better if they were as "innovative" as Apple or Microsoft?
Yeah, right... Except that they invented OSes for a reason...
"Graphical interfaces for applications?
I believe the original reason was multitasking. But that doesn't explain OSes like DOS -- DOS was invented to help prevent reinventing the wheel. So, for instance, you could write an app that used a hard disk without having to understand hard disks or the FAT filesystem, because you had DOS to do it for you.
Which is why Blackberries don't virtualize. Modern PCs with tons of RAM and virtualizing chipsets can handle it.
It's not always about RAM. Wasting RAM, especially in code, means more cache thrashing. Cache thrashing makes everything slower. This makes multitasking much, much less efficient.
Because of the nature of virtualization, you're not going to be able to share things efficiently. Sharing a disk still means the two apps (in two different VMs) will have two different copies of the "shared" library, which will both be fighting for cache.
The second and more intriguing idea is that you might even be able to virtualize bytecode for which no hardware actually exists, hence why I mentioned.NET and Java. Rather than sticking to runtime hosts, pop them into a VM that virtualizes their run-time environment and you're set. Instead of x86, you're running, say, j86 (that's a dumb pun). Your machine code no longer has to be a Windows or Linux executable, it can be Java bytecode (no need for J2RE) or MSIL (no need for an RTH or JIT-compiler*). That would be pretty damn slick, AFAIC.
First, the word you're looking for here is "emulation", not "virtualization", since you're now talking about running code for a different arch. It's important that you understand the difference, because emulation slows things down a ton.
Second, what's your point here? Why is an emulator that runs Java bytecode as if a Java machine really existed better than just shipping the JVM? Go look it up -- JVM stands for Java Virtual Machine. You already can distribute your Java bytecode as if it were an executable, and tell people to run it on the JVM..NET takes this a step further -- you can distribute a.NET assembly (equivalent of Java bytecode) as a.exe file, and if.NET is installed, Windows will recognize your.exe file as a.NET program, and run it in the.NET VM. Thus, you can double-click on the.exe as if it were a Windows executable -- no need for Joe User to realize I can do the same thing on Linux as if it were a Linux executable (assuming I set it up that way first). What's more, Linux has been doing this with scripts for ages -- download a.pl file, and the OS (or your shell, not sure which) will see it as a Perl script, and run it through Perl.
What's more, the JVM is superior to your approach in that Java bytecode, running under the JVM, can be compiled JIT (just-in-time) to the host hardware, at which point it's no longer emulation. Java apps can be just as fast as apps compiled for the host OS and arch. Your approach, if I understand it right, kicks Java back into the days before the JIT was invented, where Java was at least 2-3x slower, if not 10x, than a native app.
You are correct. If all your apps link to the same security hole, you're boned. Of course, if they're statically linked, only the applications are exposed to exploits, not the system
This has absolutely nothing to do with them being statically linked.
If you use shared libraries, then every application that shares that library has a hole until it's patched, and it's not the application that's compromised, it's the OS.
Ok, how does a hole in GTK compromise the entire OS? It only compromises GTK apps.
Holes in more fundamental things, like glibc or the kernel, are going to affect the entire OS whether they're shared or not.
And if you use reasonably up-to-date static libraries, it's exactly the same as using shared libraries, except that when there's an exploit and the library gets updated, you now have to wait for every single app that uses that library to be recompiled by their respective vendors. If it's shared, the user is actually able to update the shared library and fix the whole system.
but when you patch it, do you know which apps will make the transition gracefully and which will crash and burn?
The ones that will crash and burn are likely poorly designed anyway, or they should've been using versioning controls, if the shared library interface doesn't change. If the interface does change, you're no worse off with a shared library -- it just means you now know which apps need to be upgraded. I don't know about Windows, but Linux allows many versions of a shared library to stick around -- you could try removing the old one, then email the developers for each app that fails (and avoid using it; it's insecure), then add the old one back in if there's a critical app using it.
Don't get me wrong, I prefer shared libraries, as long as strict versioning is enforced. It's just that some apps (notably, games) make use of shared libraries and are very sensitive to changes in those libraries,
Then those apps should use the versioning, when warranted.
Statical linked libraries aren't nice if you don't have much RAM.
We've gone from 128 KiB in the original Macintosh computer to 1,048,576 KiB in current models. How is that "not much RAM"?
It's never much RAM if you waste it in stupid ways like compiling everything statically.
But it's not "done already" for those publishers for which a rewrite of the flagship C++ application in a "managed" environment wouldn't generate enough additional revenue. Would you want to rewrite, say, the Firefox browser in the Java language with the Swing or SWT toolkit or in the C# language with the Windows.Forms or Gtk# toolkit?
I would much rather do that than rewrite Firefox as a bootable app, and link in all the Linux drivers, the X Window System, the network stack, and everything. Firefox wastes enough RAM as it is, and is hard enough to debug as it is. Besides, how would this make it at all cross-platform? Unless you're talking about a 200% performance hit (or more) when running Firefox on a processor other than x86?
Besides, you picked a horrible example with Firefox -- it's already a cross-platform platform. Not just for AJAX -- the entire UI is written in XUL, which is their XML+JavaScript application development language.
Just like inbred populations, this PC pool is unhealthy: it can't adapt and infections run rampant because all specimens are susceptible to the same illnesses.
I disagree. Look at our real ecology -- increasingly, intelligence and collaboration are trumping natural selection. Humans dominate the planet because we have technology. Our technology is good because we cooperate and share ideas. Good ideas go into the common tech pool, bad ideas get rejected.
All specimens of Linux, say, are susceptible to the same illnesses, but as soon as we see one of them, we adapt. Good ideas go into the common source code, bad ideas are thrown away.
It's a different kind of natural selection.
Let me put it this way -- I would much rather have one dominant, secure OS than many insecure ones. This is true for the same reason most games are linear -- it's better to have one good story than an infinite number of bad ones.
Virtualization, I think, is a good answer to this.
No, virtualization is only an answer to running an uncooperative OS running uncooperative software that you need, on the system you'd rather be running, or for running untrusted drivers. For everything else I've seen it used for, it's really a kludge and a lazy solution. Roll back a disk image? You should be able to roll back the FS itself. Send images over a network? You should be able to send sessions over the network. Don't trust this software? Run it as a limited user, in a chroot jail if it needs root.
I like the idea of "booting" to an application like in the pre-DOS days, and if your games run no x86/x64 architecture, you could bypass the OS altogether to get the most out of games by just booting straight into Halo 4 or HalfLife 3.
Even in the DOS days, we had a problem that OSes currently solve -- those old DOS games all had to have drivers for all your hardware that DOS didn't support by itself. So, for instance, you had to support every sound card out there in every single game. Before DOS, you have even more problems, supporting the disk format.
And now you want us to run 3D games? OpenGL was invented for a reason, you know. Since there will never be one standard 3D card, you'll never be able to do this.
This ignores the security implications, too -- booting to an app means the app has full control of the machine, even moreso than a root user on a Unix.
I also like the end of the API: we can go back to the days of static linked libraries (no version conflicts, ever!) and headers and just build our own OSes from scratch to run in a VM.
Those were the bad old days. Find a bug in glibc? Great, you now have to go recompile every single C program on your system. Granted, sometimes you have to do that anyway (version conflicts), but shared libraries are almost always better than static ones. Most of the time, when people use static libraries, it's because they don't have a decent package manager.
Since you can virtualize anything, even VMs, you can get cross-platform apps and cross-platform platforms (Java,.NET, etc.) and consumers don't have to worry about physical hardware or their underlying OS components, apart from cost and performance considerations.
Sorry, but this doesn't work. You're no longer talking about virtualization, you're now talking about emulation, which is almost always orders of magnitude slower. Notice how people are now porting their Mac apps from PowerPC to Universal Binaries? That's because with one recompile, you get about a 2x speed improvement on an Intel Mac.
Java and.NET already do what you're suggesting -- no one has to care about the underlying hardware or OS, except for cost and performance considerations, as long as you have a working JVM or.NET on that platform, and as long as apps are written to be
And because of the lack of a finely grained security model, all Mac (and Linux) apps run under the same user have all the access that user does. A Mac app is perfectly capable of wiping out every single document I own. I'm sure it's also perfectly capable of grabbing my password and obtaining root -- hell, many installer apps require that anyway -- and thus wiping out my whole disk. But really, why is it so much better to have every single file you created just gone, but every single bit of the Mac OS still intact?
You can create separate accounts, as you say, and I used to do this, but it's difficult for normal desktop apps. For instance: Firefox should not have access to anything but its own cache and config files. It should be allowed to create files in the download folder, but once a file is started downloading, no part of Firefox except the download process should have access to it. When it's done downloading, absolutely no part of Firefox should have access to it. Only exception is read-only access when opening a downloaded extension (XPI)...
It's currently very, very difficult to do this with Unix permissions. I don't know of any system which can do this level of fine-grained security. Vista may be getting closer, Java may have done it and we never noticed, but it's just never done on the desktop.
I've only really been able to isolate apps that are by their nature very isolated. For instance, when I shared a box with my brother, we each had our own account, but we also had a ut2004 account and a steam account. ut2004 was the account which had write access to install mods, and a couple of scripts to help move a downloaded mod from our normal accounts to the ut account -- difficult to do, and I'm sure it wasn't done securely. Steam was the account which ran Steam under Wine, so that we could both have access to the game, without having to have separate installs of it. Using sudo, I made the whole thing work without passwords -- run my "steam" script in a terminal, and it would (using sudo) become the steam user and run Steam using Wine, copying X credentials over so that Steam had access to the X server.
And this, too, has security implications. Steam got full access to my X server. I could have made it launch its own X server, but that's less convenient -- it can't share a workspace with other apps (when not running a game). But if it does share such a workspace, it can grab my keyboard/mouse and become a keylogger. It only has to catch my root password once to break out of its UID jail and into the system at large.
I agree, virtualization is just a retarded way of doing this. Most uses of virtualization are retardedly wasteful. But Unix has never really been sufficient to prevent an app I run from taking control of my account.
And this is what we're complaining about. 2k was the very last major change in Windows -- supporting all of the games and other consumer-related stuff of the 9x line, on a solid platfrom (NT) which they designed to compete with Unix. XP is 2k plus eye candy and subtle improvements. Compare that to OS X, which has big, blatant improvements -- Tiger has Spotlight -- as well as subtler ones, like making Bash the default shell, and including a decent version of Perl.
Apparently, they got it -- XP went this long with a couple of major Service Packs, but that's it. Gone are the days of selling a "second edition" -- the 98 to 98se transition was much, much smaller than XP to SP1 or from SP1 to SP2. But the fact is, many of us still see XP as a service pack to 2K, with a bit of eye candy.
But that means they now have to scramble to find things that will really make people accept Vista as more than a patch to XP, and they've ended up ripping off a lot of OS X features in the process. They're basically avoiding fixing anything in XP so that they can roll everything new into Vista, to make it a meaningful upgrade, when most of it makes more sense as incremental upgrades to XP.
All of the things you mention would be cause for delaying Vista. Also, of those things, only.NET can be easily removed from the system. IE, Windows Media, DirectX, Messenger, and Outlook Express are all included in Windows, and MS provides no way to remove them. I would appreciate being able to buy a Windows without these things -- Firefox instead of IE -- but that's currently not practical. For some inexplicable reason, Windows Update requires IE for anything other than automatic updates to "critical" stuff.
Apple is just as guilty. It just seems like a very, very odd oversight to have no one place to set the default browser, except inside the Safari preferences. This means you cannot uninstall Safari if you want to be able to choose a default browser.
Linux is more flexible, and not just because of source code.
Linux has no concept of drivers or kernel modules.
...WHA? Yes, there is a concept of a kernel module.
It's all slapped inside one monolithin kernel, so if you need it to support something else you need to put it in the kernel and recompile it.
I guess that's why I have to download source code to the nVidia driver, patch my kernel, and recompile to make my video card work. Oh wait -- I don't. The nVidia driver gets compiled separately, and produces a module that is loaded on demand. If I don't want to start a GUI, I don't have to load the nVidia module.
And that's only because I compile my own kernel. On binary distros, like Ubuntu, most drivers are included in the core distro, but there are still plenty of add-on drivers you can install as kernel modules in completely separate packages. If nVidia licensing would allow it, Ubuntu could ship a package with the nVidia module, without forcing users to compile it for themselves.
On Windows, if I don't want to start a GUI, I'm SOL. Hell, if I don't want IE, I'm SOL.
As a difference Windows is more of a microkernel architecture (it's in fact a hybrid), where you have many standalone, manageable kernel pieces that communicate in a well defined interface.
No. OS X is a hybrid, at least until they decide to nuke the microkernel parts to get a performance gain. Windows is just a monolithic kernel with enough well-defined interfaces that you can easily ship binary drivers that don't screw up the system. Want to prove it's monolithic? Any kind of driver, if it's poorly written, can crash your whole system -- just like on Linux.
And a kernel no longer defines the OS. Windows is screwed up because Microsoft integrates tons of stuff in userland that have no business being integrated. This is not the only reason Windows is screwed up, but it is a legitimate one.
I did, but his argument is stupid. It essentially boils down to "if Microsoft only included the things *I* think are necessary in Windows, it wouldn't be bloated. But since they include functionality X, Y and Z that I don't have any personal interest in, it's bloated".
Yes, his argument was stupid because he picked an X, Y, and Z that it just makes sense to include. Anyone shipping a consumer OS today pretty much has to include web and a firewall of some sort. The point he didn't make: Since most computers are connected to the Internet today, you really only have to include the bare minimum amount of software to get the user online. After that, they can install the features they want.
Package managers even make this easy.
So is everyone else selling to the same market Windows is. Why ? Because that's what the customers in that market want
Same distro != same process. I think the point here is that MS really does "integrate" far too much, increasing the fragility of the system.
Hell, Microsoft got in trouble (with IE) precisely because the went down the path of componentising Windows.
No, they got in trouble because they started to componentise Windows (a good software practice) while still trying to sell it as a monolithic blob (an evil business practice). They could have easily componentised Windows and made it possible to uninstall Internet Explorer, and no one would care.
Likewise, just because distro maintainers and OSS developers put mountains of effort into reducing the impact of dependency hell, doesn't mean you can just add and remove arbitrary parts of a Linux system without breaking things.
You pretty much can arbitrarily remove packages that you installed, and reverse dependencies will clear the rest of it out. On Windows, I cannot uninstall Internet Explorer without help, and if I do, things break. I can easily have a working Linux desktop without a web browser, or with an arbitrary web browser, instead of Ubuntu's default Firefox.
It's not done as well as it could be, but it's better than Windows by quite a lot.
I know of no good quality video that does not use compression, for that reason. DVD uses lossy compression. Blu-Ray uses lossy compression. Certainly anything you download from the Internet uses lossy compression. The idea is that if most people won't notice the drop in quality, and it buys you a factor of 10 at least, it's a practical necessity.
Scary, but could happen. I have IMed people from across a room before -- or a house.
Mom: Call your brother for dinner: Me(IM): Dinnertime Bro(IM): OK Mom: Were you going to get your brother? Me: Already did. *bro walks in*
Another story, I don't know if it was real -- guy chatting hot and heavy with someone, they phone each other, then she says "Look outside..." His wife, sitting in the car with her laptop and her cell phone.
Other frightening possibilities -- I'm used to working with a manpage ready. So, Laptop+Manual...
Ok, enough. Let's apply our creativity to things that won't remove us from the gene pool.
But this is the opposite of the Underpants Gnomes. In the UG organization, nobody knows what step 2 is. On Slashdot, everyone knows what your Step 2 is.
How did the Apple one work?
I remember BIOS flashers that found files on a FAT floppy, and I remember being desperate enough to actually hook up a floppy drive just for that. I remember burning custom boot CDs, or using a DOS boot CD and a temporary FAT partition. I can never remember it being particularly convenient, and yours sounds very nice.
But how can Apple beat that? Can you actually flash from inside the OS?
Better, maybe, but not more efficient. I use a Linux boot CD to test hardware, backup files from Windows, then I wipe and reinstall. I figure if I'm going to have a custom rescue CD, it may as well be an nLite automated Windows install CD, with my RAID drivers slipstreamed in.
A favorite in high school. Teacher would give us a computer lab for Senior Thesis, then leave to go about other business, and we'd all pull out thumbdrives and play networked Doom.
More and more, this is becoming acceptible, especially if you include it on an install disk. I haven't bought a game in ages that didn't include DirectX, and insist on a recent version to use it. Especially in the case of .NET, this will become a non-issue -- if it's OK to make your game depend on DirectX 10, you should note that Vista will include .NET.
I am, but I'm hoping that my way is where the market is going, ultimately, because my way makes a lot more sense.
I suppose, I just prefer bytecode. Either way is going to make you rethink your app, but bytecode is more efficient and much more sensible with respect to today's world. The future doesn't exist in a vacuum; it builds on what we have today.
4. Have your neighbors pulling out their binoculars and aiming for your bedroom window, since they picked up your MSN over the wireless.
That's it, your gene pool summer pass is hereby revoked.
Yeah, if your erection lasts four hours, call a doctor. That means 3 hours, break, 3 hours, break... And even the first 3 hours is still cutting pretty late into the night.
Note: I'm 19, so I'm young enough for this to be a legitimate concern.
Or reading, say. Those three do have definite beginnings/endings, if you want them to. Read exactly one chapter of a book. Watch your one bedtime show. Eat your one bedtime snack, then go to sleep.
One possibility is that many people fall asleep after an orgasm, but there are other activities that can make you sleepy, also. Certainly, if you eat a huge turkey dinner, you're going to nap for a bit anyway.
But I think this one is closer to the truth:
We have plenty of customs that are potentially dangerous to our health. I haven't checked lately, but around 2004, you were safer in Iraq than you were here -- a higher percentage of people were dying in highway accidents. I guess tanks are just safer...
(Note to mods: This was supposed to be funny.)
I consider it a flaw that the only place to set a browser as default is inside the browser. It makes about as much sense to me as having your TCP/IP settings inside Firefox.
I don't feel like digging up rationalizations right now, you're right. But I have plenty. Big one now is a package manager.
What areas is Linux playing catch-up? I know about XGL, and I know about drivers -- which is not Linux's fault, by the way -- but what is there that they could be doing better if they were as "innovative" as Apple or Microsoft?
I believe the original reason was multitasking. But that doesn't explain OSes like DOS -- DOS was invented to help prevent reinventing the wheel. So, for instance, you could write an app that used a hard disk without having to understand hard disks or the FAT filesystem, because you had DOS to do it for you.
It's not always about RAM. Wasting RAM, especially in code, means more cache thrashing. Cache thrashing makes everything slower. This makes multitasking much, much less efficient.
Because of the nature of virtualization, you're not going to be able to share things efficiently. Sharing a disk still means the two apps (in two different VMs) will have two different copies of the "shared" library, which will both be fighting for cache.
First, the word you're looking for here is "emulation", not "virtualization", since you're now talking about running code for a different arch. It's important that you understand the difference, because emulation slows things down a ton.
Second, what's your point here? Why is an emulator that runs Java bytecode as if a Java machine really existed better than just shipping the JVM? Go look it up -- JVM stands for Java Virtual Machine. You already can distribute your Java bytecode as if it were an executable, and tell people to run it on the JVM. .NET takes this a step further -- you can distribute a .NET assembly (equivalent of Java bytecode) as a .exe file, and if .NET is installed, Windows will recognize your .exe file as a .NET program, and run it in the .NET VM. Thus, you can double-click on the .exe as if it were a Windows executable -- no need for Joe User to realize I can do the same thing on Linux as if it were a Linux executable (assuming I set it up that way first). What's more, Linux has been doing this with scripts for ages -- download a .pl file, and the OS (or your shell, not sure which) will see it as a Perl script, and run it through Perl.
What's more, the JVM is superior to your approach in that Java bytecode, running under the JVM, can be compiled JIT (just-in-time) to the host hardware, at which point it's no longer emulation. Java apps can be just as fast as apps compiled for the host OS and arch. Your approach, if I understand it right, kicks Java back into the days before the JIT was invented, where Java was at least 2-3x slower, if not 10x, than a native app.
This has absolutely nothing to do with them being statically linked.
Ok, how does a hole in GTK compromise the entire OS? It only compromises GTK apps.
Holes in more fundamental things, like glibc or the kernel, are going to affect the entire OS whether they're shared or not.
And if you use reasonably up-to-date static libraries, it's exactly the same as using shared libraries, except that when there's an exploit and the library gets updated, you now have to wait for every single app that uses that library to be recompiled by their respective vendors. If it's shared, the user is actually able to update the shared library and fix the whole system.
The ones that will crash and burn are likely poorly designed anyway, or they should've been using versioning controls, if the shared library interface doesn't change. If the interface does change, you're no worse off with a shared library -- it just means you now know which apps need to be upgraded. I don't know about Windows, but Linux allows many versions of a shared library to stick around -- you could try removing the old one, then email the developers for each app that fails (and avoid using it; it's insecure), then add the old one back in if there's a critical app using it.
Then those apps should use the versioning, when warranted.
It's never much RAM if you waste it in stupid ways like compiling everything statically.
I would much rather do that than rewrite Firefox as a bootable app, and link in all the Linux drivers, the X Window System, the network stack, and everything. Firefox wastes enough RAM as it is, and is hard enough to debug as it is. Besides, how would this make it at all cross-platform? Unless you're talking about a 200% performance hit (or more) when running Firefox on a processor other than x86?
Besides, you picked a horrible example with Firefox -- it's already a cross-platform platform. Not just for AJAX -- the entire UI is written in XUL, which is their XML+JavaScript application development language.
I disagree. Look at our real ecology -- increasingly, intelligence and collaboration are trumping natural selection. Humans dominate the planet because we have technology. Our technology is good because we cooperate and share ideas. Good ideas go into the common tech pool, bad ideas get rejected.
All specimens of Linux, say, are susceptible to the same illnesses, but as soon as we see one of them, we adapt. Good ideas go into the common source code, bad ideas are thrown away.
It's a different kind of natural selection.
Let me put it this way -- I would much rather have one dominant, secure OS than many insecure ones. This is true for the same reason most games are linear -- it's better to have one good story than an infinite number of bad ones.
No, virtualization is only an answer to running an uncooperative OS running uncooperative software that you need, on the system you'd rather be running, or for running untrusted drivers. For everything else I've seen it used for, it's really a kludge and a lazy solution. Roll back a disk image? You should be able to roll back the FS itself. Send images over a network? You should be able to send sessions over the network. Don't trust this software? Run it as a limited user, in a chroot jail if it needs root.
Even in the DOS days, we had a problem that OSes currently solve -- those old DOS games all had to have drivers for all your hardware that DOS didn't support by itself. So, for instance, you had to support every sound card out there in every single game. Before DOS, you have even more problems, supporting the disk format.
And now you want us to run 3D games? OpenGL was invented for a reason, you know. Since there will never be one standard 3D card, you'll never be able to do this.
This ignores the security implications, too -- booting to an app means the app has full control of the machine, even moreso than a root user on a Unix.
Those were the bad old days. Find a bug in glibc? Great, you now have to go recompile every single C program on your system. Granted, sometimes you have to do that anyway (version conflicts), but shared libraries are almost always better than static ones. Most of the time, when people use static libraries, it's because they don't have a decent package manager.
Sorry, but this doesn't work. You're no longer talking about virtualization, you're now talking about emulation, which is almost always orders of magnitude slower. Notice how people are now porting their Mac apps from PowerPC to Universal Binaries? That's because with one recompile, you get about a 2x speed improvement on an Intel Mac.
Java and .NET already do what you're suggesting -- no one has to care about the underlying hardware or OS, except for cost and performance considerations, as long as you have a working JVM or .NET on that platform, and as long as apps are written to be
And because of the lack of a finely grained security model, all Mac (and Linux) apps run under the same user have all the access that user does. A Mac app is perfectly capable of wiping out every single document I own. I'm sure it's also perfectly capable of grabbing my password and obtaining root -- hell, many installer apps require that anyway -- and thus wiping out my whole disk. But really, why is it so much better to have every single file you created just gone, but every single bit of the Mac OS still intact?
You can create separate accounts, as you say, and I used to do this, but it's difficult for normal desktop apps. For instance: Firefox should not have access to anything but its own cache and config files. It should be allowed to create files in the download folder, but once a file is started downloading, no part of Firefox except the download process should have access to it. When it's done downloading, absolutely no part of Firefox should have access to it. Only exception is read-only access when opening a downloaded extension (XPI)...
It's currently very, very difficult to do this with Unix permissions. I don't know of any system which can do this level of fine-grained security. Vista may be getting closer, Java may have done it and we never noticed, but it's just never done on the desktop.
I've only really been able to isolate apps that are by their nature very isolated. For instance, when I shared a box with my brother, we each had our own account, but we also had a ut2004 account and a steam account. ut2004 was the account which had write access to install mods, and a couple of scripts to help move a downloaded mod from our normal accounts to the ut account -- difficult to do, and I'm sure it wasn't done securely. Steam was the account which ran Steam under Wine, so that we could both have access to the game, without having to have separate installs of it. Using sudo, I made the whole thing work without passwords -- run my "steam" script in a terminal, and it would (using sudo) become the steam user and run Steam using Wine, copying X credentials over so that Steam had access to the X server.
And this, too, has security implications. Steam got full access to my X server. I could have made it launch its own X server, but that's less convenient -- it can't share a workspace with other apps (when not running a game). But if it does share such a workspace, it can grab my keyboard/mouse and become a keylogger. It only has to catch my root password once to break out of its UID jail and into the system at large.
I agree, virtualization is just a retarded way of doing this. Most uses of virtualization are retardedly wasteful. But Unix has never really been sufficient to prevent an app I run from taking control of my account.
And this is what we're complaining about. 2k was the very last major change in Windows -- supporting all of the games and other consumer-related stuff of the 9x line, on a solid platfrom (NT) which they designed to compete with Unix. XP is 2k plus eye candy and subtle improvements. Compare that to OS X, which has big, blatant improvements -- Tiger has Spotlight -- as well as subtler ones, like making Bash the default shell, and including a decent version of Perl.
Apparently, they got it -- XP went this long with a couple of major Service Packs, but that's it. Gone are the days of selling a "second edition" -- the 98 to 98se transition was much, much smaller than XP to SP1 or from SP1 to SP2. But the fact is, many of us still see XP as a service pack to 2K, with a bit of eye candy.
But that means they now have to scramble to find things that will really make people accept Vista as more than a patch to XP, and they've ended up ripping off a lot of OS X features in the process. They're basically avoiding fixing anything in XP so that they can roll everything new into Vista, to make it a meaningful upgrade, when most of it makes more sense as incremental upgrades to XP.
All of the things you mention would be cause for delaying Vista. Also, of those things, only .NET can be easily removed from the system. IE, Windows Media, DirectX, Messenger, and Outlook Express are all included in Windows, and MS provides no way to remove them. I would appreciate being able to buy a Windows without these things -- Firefox instead of IE -- but that's currently not practical. For some inexplicable reason, Windows Update requires IE for anything other than automatic updates to "critical" stuff.
Apple is just as guilty. It just seems like a very, very odd oversight to have no one place to set the default browser, except inside the Safari preferences. This means you cannot uninstall Safari if you want to be able to choose a default browser.
Linux is more flexible, and not just because of source code.
...WHA? Yes, there is a concept of a kernel module.
I guess that's why I have to download source code to the nVidia driver, patch my kernel, and recompile to make my video card work. Oh wait -- I don't. The nVidia driver gets compiled separately, and produces a module that is loaded on demand. If I don't want to start a GUI, I don't have to load the nVidia module.
And that's only because I compile my own kernel. On binary distros, like Ubuntu, most drivers are included in the core distro, but there are still plenty of add-on drivers you can install as kernel modules in completely separate packages. If nVidia licensing would allow it, Ubuntu could ship a package with the nVidia module, without forcing users to compile it for themselves.
On Windows, if I don't want to start a GUI, I'm SOL. Hell, if I don't want IE, I'm SOL.
No. OS X is a hybrid, at least until they decide to nuke the microkernel parts to get a performance gain. Windows is just a monolithic kernel with enough well-defined interfaces that you can easily ship binary drivers that don't screw up the system. Want to prove it's monolithic? Any kind of driver, if it's poorly written, can crash your whole system -- just like on Linux.
And a kernel no longer defines the OS. Windows is screwed up because Microsoft integrates tons of stuff in userland that have no business being integrated. This is not the only reason Windows is screwed up, but it is a legitimate one.
Yes, his argument was stupid because he picked an X, Y, and Z that it just makes sense to include. Anyone shipping a consumer OS today pretty much has to include web and a firewall of some sort. The point he didn't make: Since most computers are connected to the Internet today, you really only have to include the bare minimum amount of software to get the user online. After that, they can install the features they want.
Package managers even make this easy.
Same distro != same process. I think the point here is that MS really does "integrate" far too much, increasing the fragility of the system.
No, they got in trouble because they started to componentise Windows (a good software practice) while still trying to sell it as a monolithic blob (an evil business practice). They could have easily componentised Windows and made it possible to uninstall Internet Explorer, and no one would care.
You pretty much can arbitrarily remove packages that you installed, and reverse dependencies will clear the rest of it out. On Windows, I cannot uninstall Internet Explorer without help, and if I do, things break. I can easily have a working Linux desktop without a web browser, or with an arbitrary web browser, instead of Ubuntu's default Firefox.
It's not done as well as it could be, but it's better than Windows by quite a lot.
Wait -- are you telling me they are recompressing it? For shame!
I know of no good quality video that does not use compression, for that reason. DVD uses lossy compression. Blu-Ray uses lossy compression. Certainly anything you download from the Internet uses lossy compression. The idea is that if most people won't notice the drop in quality, and it buys you a factor of 10 at least, it's a practical necessity.
Scary, but could happen. I have IMed people from across a room before -- or a house.
Mom: Call your brother for dinner:
Me(IM): Dinnertime
Bro(IM): OK
Mom: Were you going to get your brother?
Me: Already did.
*bro walks in*
Another story, I don't know if it was real -- guy chatting hot and heavy with someone, they phone each other, then she says "Look outside..." His wife, sitting in the car with her laptop and her cell phone.
Other frightening possibilities -- I'm used to working with a manpage ready. So, Laptop+Manual...
Ok, enough. Let's apply our creativity to things that won't remove us from the gene pool.
So why does sex get a free pass? Wouldn't that train you the same way?
I think she'll care when you're looking at pr0n instead of her.
But this is the opposite of the Underpants Gnomes. In the UG organization, nobody knows what step 2 is. On Slashdot, everyone knows what your Step 2 is.