Monday, July 14, 2008

20 Features Windows 7 Should Include

(Turns out I forgot to publish this last week...)

According to Australian computer expert Vito Cassisi

My opinion:

20. Modularised OS The great thing about being modular is that the OS can be modified easily. Think Linux here - in Linux everything is modular and replaceable. For example, you can replace the whole GUI component without affecting anything else. Windows Vista is modular and (theoretically) any part is replaceable.

With the abundance of third party applications written for Windows, this would spur a whole new variety of customisation and open-source implementation.
...and Microsoft could spend an enormous amount of development time to make a feature for people who (for some unexplained reason) want to replace their ...what? explorer.exe? I don't think this is what the average customer wants us to be working on.
(Back in the day, you could make Windows load something other than explorer.exe as the shell by modifying win.ini (Shell=explorer.exe, I think...) I don't know if that still works.)

19. XP Virtual Machine It seems that the biggest issue with Vista was compatibility with older software/drivers. A solution may be to include an XP virtual machine which ensures compatibility with said software. Apple did a similar thing when they re-wrote their OS a few years back.

API behavior between XP and Vista is not that much different; a virtual machine is overkill.

I don't quite get the ' / drivers' part of that, you want to put a scanner driver in a separate VM...away from all your new applications? (not a good idea)
OK, so should we write some kind of cross-VM communicator thingy? That's a lot of work, and a lot of project risk.

Wrt 'but Mac OS X did this years ago' - Go reread the reviews for 10.0. It is not a good idea.

Windows Vista does a good job of 'shimming' old apps to work with Vista. That's the best approach.

18. New UAC In theory UAC was a great idea. It protected people from themselves, but it was too intrusive. An alternate idea is to teach the user the importance of limited accounts and how they prevent the accessibility of nasties such as viruses. UAC should be a single dialogue with ‘Continue’ and ‘Cancel’ and an explanation of why the user was interrupted.

And that is what it is*. AUC is getting better, as more apps are written with AUC in mind.

*We could have done much much better on explaining it, though.

17. Gaming Mode Most Windows users like to dabble in a bit of gaming when on their PC. But the constant demand for computing power by the latest titles (read: Crysis) can leave the majority in the dark. Perhaps Microsoft can offer a mode similar to that of the current ‘Safe Mode’ which only initiates the required services for gaming. This would minimise overhead and increase performance.
WTF? What would you turn off in this 'gaming mode'? The average user does not want to deal with 'mode switches'; Windows is supposed to be lean-and-mean enough to get out of the way when the user plays a game. (It is not like some frivolous service in Windows is sucking up 30% of your CPU at all times...Before you start: Windows Search is supposed to back off when you are using your computer.)

16. Customised Install The avid performance tweakers out there may have heard of the likes of NLite and VLite for XP and Vista respectively. These pieces of software allow you to remove unwanted components from the OS before you install it. This increases available HDD space, and also improves performance depending on the services cut out. Offering the same amount of control when installing Windows 7 would settle the ‘Windows is bloatware’ activists out there.
The vast majority of users get their copy of Windows pre-installed with their computer. They don't install it themselves.

How much does the disk space cost that Vista takes up?
Somebody did a back-of-a-cocktail napkin calculation; Vista takes up less than $2s worth of hard disk space. It is literally not worth your time to go delete chunks of it. (That $2 is for spinny magnetic disks; SSDs are obviously different.)

I find it funny that there are so many tweaking utilities for slimming down a Vista install - they are using the componentization system we built; as far as I can tell, it is not like they are inventing anything new. (Well...they put a good UI on our componentization story.)

15. Productive GUI Microsoft bit the bullet with Vista and changed the GUI to be attractive. This is fine by all means, but the productivity of this new GUI wasn’t exactly enhanced all that much. Small things such as multiple desktops and simpler open/save dialogues can make all the difference. Perhaps even let the user modify the GUI to their liking, i.e. toolbar sizes etc.

We do this already - we do a lot of usability studies, to see what we should change. But yes, we should make system dialogs (like file open, etc) easy and fast. I agree 100%.

14. All for One and One for All Vista came out in so many versions that even Chuck Norris was bewildered. There should only be three, Home, Business/Pro, and Server. This would lessen the current Windows ambiguity.
I can't not disagree more.

13. WinFS Whatever happened to the infamous NTFS replacement? Windows 7 would really benefit from an improved file system, and such an improvement is bound to attract businesses that shunned Vista for its lack of innovation and improvement.
Businesses want a version of Windows that never crashes, never needs updating, and that they can manage from the other side of the world. 'lack of innovation' is not something I've heard before. And we talk to businesses a lot.

What do you think businesses want from 'an improved file system'?

The relational database structure should enhance overall system performance.
This statement is somewhat similar to: Taking a shower will make me more attractive to Angelina Jolie. The more immediately pressing concern is that she doesn't know that I fucking exist.

In my opinion, Windows Desktop Search gets you most of what WinFS would have gotten you - the average home user doesn't want to run SQL queries against their filesystem; WDS allows you to do text and/or metadata search pretty quickly.

12. Home User Licensing Let’s say you have 3 PCs in your house, two desktops and a laptop. You want to upgrade to Windows 7, but have to pay three times for three separate licences. In a world where P2P and torrents are commonly used, how many users would slip into the world of cracks and keygens? The solution (to an extent) would be to offer a home licence. A small fee to be able to use the OS up to, for example, five times in the one household would surely benefit both Microsoft and the average home user.
I can't not disagree more.

11. Driver Availability Arguably the Achilles heel of Vista was the slow uptake of drivers by device manufacturers. Although this is hard for Microsoft to dictate, it would be in their best interest to promote driver production during the OS development stage. Even if the drivers are beta, it sure beats being left with no hardware functionality.
We're working on this. We're not changing a huge number of driver subsystems ever again; Vista taught us that lesson.

10. Standards Compliant Browser This isn’t much of an OS thing, but it is bundled so we have included it. Internet Explorer 8 would win the hearts of many web developers if it was created to web standards. There’s nothing more frustrating than coding a website which works fine in Firefox and Opera only to have IE spit the dummy.

Er...IE8. Acid2. Look it up.
(Yes, it isn't perfect, but it is 10000x better.)

9. Program Caching Currently, Vista caches commonly used software into RAM so that it launches faster. The main problem with this approach is that it confuses users into thinking Vista is using several hundred MB of RAM just for itself. A simple toolbar notification stating ‘Vista is caching your programs to improve speed. Click here for more information’, would end all the confusion.
This is solving a problem in exactly the wrong way. The average user doesn't care. This would be similar to a message popping up on your car dashboard saying: Your fuel management computer has determined that it needs to adjust the fuel to air ratio that is being fed into your engine.

When the average user would say 'why the fuck should I care? isn't that what you are supposed to do anyway?' - that's a hint that they don't care.

One of the UX guidelines that we have is to never use balloon messages for obvious messages (don't tell me about things that are just supposed to happen anyway) - Are there any spots in Windows where we annoy the user with obvious messages?

8. Microsoft Toolbox This is an idea we came up with which we believe would benefit many users with compatibility issues. The feature would list current drivers and patches for all installed hardware, games, and software. By having this all in the one place (possibly within Windows Update) users can keep their system up-to-date without seeking drivers and patches manually.
Search for 'Solution' in the Vista start menu; the Problems and Solutions thingy will look at the applications that have crashed on your computer, and any devices that don't have drivers, and show links to manufactures websites, where you can download updates.

Ideally, this should all just happen via Windows Update, but other software and hardware companies don't trust Microsoft (or any other software company) that much.

7. OS Restoration via imaging System restore is a great companion when things go wrong. But sometimes the damage is too severe. By integrating a user friendly imaging solution, the user would be able to install everything they want, and then simply create an image of the setup. This image would be saved on another HDD or partition ready to restore in the case of a system failure.
Interesting idea. 'On another HDD' is a bit silly; backing up to something that'll burn down along with the rest of your house...well, that's isn't backup, in my opinion. (Time Machine, I'm looking at you.)

6. Barebones Kernel This idea has been thrown around by Microsoft, specifically ‘MinWin’. Allowing the user to choose between this and the default kernel could potentially allow older systems (i.e. XP based) to run the new OS with decent performance levels.
Not even Linux does this anymore. Any reasonable modern kernel can run any any reasonablely modern bit of hardware. (And kernels adjust to machines with low ram/low power CPUs/etc)
Also, this is like asking the user to pick a brand of spark plug when buying a car. They don't fucking care.

5. 64bit only The main difference between 32bit and 64bit is the amount of accessible memory or RAM. Plans to create a 32bit Windows 7 would be counterproductive, by then GPUs would use at least 1GB of VRAM, and the average system will most likely have upwards of 4GB of RAM. Considering the 4GB memory addressing limit of 32bit, you can see that confused customers won’t be happy.
We're trying as hard as we can to get to a 64-bit only world. The rest of the software industry needs to catch up. (Where's my 64-bit version of Flash? Acrobat? Etc.)

4. Better out-of-box burning capabilities CD/DVD burning is a simple everyday task. Unfortunately, Vista cannot burn discs very well, and there is a severe lack of options. A decent burning service wouldn’t go astray in Windows 7.
Yeah, this would be good to have.

3. Diagnostic Tools It happens all the time, you build your own PC and the OS install constantly crashes. You blame the OS, but really, something else is at fault (such as the RAM). If diagnostic tools similar to Memtest were included, issues like this could be detected without the need to find third party software.
Good idea.

2. Faster Boot and Shutdown This seems to be something that constantly plagues Windows. A faster boot time would be a great first impression to many critics, and it’ll save valuable time, especially when restarting for updates.
We did a boatload of work to make Vista boot fast. Sadly, computer companies add a bunch of crapware that slows down bootup.

1. Simplify and manage startup items Many users install software which starts up with Windows. All of this software opening at once causes lag and lack of usability for a considerable amount of time. A simple startup interface (not as daunting as the current MS Configuration Utility) would help users disable what they don’t need running. Another feature would be to schedule programs to start after a certain amount of time. This would prevent the computer struggling to open several programs in one hit.
A lot of services and big chunks of Windows Shell already do a delayed load. As far as I could determine (back in the Windows XP days), there is actually no way to determine when all the relevant bits of Windows have finished loading. As I recall, after 10 minutes, everything is guaranteed to be up and running. (So, the point is that (if you have something that is in the startup path) you should check, and not assume, that a part of the OS that you need is loaded.)

As always, I'd love to get your feedback; comment away.

Wednesday, July 9, 2008

Now *that's* debugging

Occasionally, you only fix one bug a day. But, you have a good story to tell.

Several notes:
"One of the goals of the operating system's designers is to not allow programs running in user space to ever crash the entire machine."
Yep, yep.

Any misbehaving application can turn into the equivalent of a Fork bomb, exhausting some OS resource. (Fork bombs gobble up the number of processes that are available on a machine, but a bad application can gobble up pretty much anything - CPU time, memory, overload the disk with seek requests, etc.)

The more blocks and checks they put between us and the hardware, the slower our programs are going to run.
Yes, in theory. In practice, you are not going to notice if the OS takes a couple of clock cycles to check that your application is not doing something crazy. That's kinda the point of an OS - to abstract you away from the hardware, and to make your application play well with others.

This is like complaining that the side mirrors on your car are impacting the top speed. (True, if you are trying to set a land speed record. Not true if you are commuting.)

Imagine if the Apple said to programmers: "Ok, in order to not let you dominate the hardware, we will only let you use 50% of the CPU at any one time." Now imagine you're a user, running World of Warcraft on your brand-new $4,000 ultra-lux machine, and you're only getting half the framerate you
should be, and would be under, say, Windows.
The 50% figure is a bit silly. But yes, making a 'bulletproof' OS for consumers with a lot of protections against resource exhaustion is, in my opinion, generally not worth the effort - your average user does not run into this fork bomb issue all that much, and it is generally recoverable.

Avie Tevanian had been working on Mach as a PhD student at Carnegie Mellon, and Steve Jobs recognized he was a star and hired him straight away. (Microsoft countered by hiring Avie's old advisor to work on NT, which is kind of like Microsoft hiring my mom because I'm a good programmer.)
Ad hominem, for no good reason.

Knowing it was an immutable data, the CoreData object didn't make a copy of my data, it just retained the exact same NSData object. The one that had an open memory-map of the image file!
Excuse me for smirking, but this occasional does-the-OS-have-a-pointer-to-that-bit-of-memory head scratching is something you have to do in the Win32 world as well. The horrible, much maligned Win32 world. The more things change...