Wednesday, August 20, 2008

Rewrite

I was going to comment on this post from some other guy's blog but holy hell is it hard to read. Lemme see if I can rewrite.

Take 2:
Thanks for all the feedback that we have been getting.
That much of it is positive is certainly appreciated. Reading through a bunch of M$FT SUCKS! comments gets old really fast.

Everyone has done a great job sharing their views on specifics, wishes, and requests. (Short aside: A Senior VP is reading your blog comments - that is awesome.)

I love getting these mails and reading the comments. It is fantastic. I just want to make sure folks know I can’t answer each one! I have a day job, and heck, it is wearing me down.

What we are going to do is look to the emails and comments as a way of suggesting posts we should write.

Lemme tell you what the Win7 team thinks about when planning a release. (Leave some comments to let us know what you think.)

Sometimes we do big releases, sometime we do smaller ones.

When we plan Win7, we argue a lot and then decide how many people will work on it, and for how long — and then, pretty much, you (as an end user, developer, or partner) decide if the release is major or minor.

End-users are generally the most straight-forward when deciding if a release is major or minor.
For an end-user a release is a big deal if they want to go out and buy an upgrade or buy a new PC. Well...actually, it has been years since anybody bought an OS for a feature. DOS 6.22 was the last one I bought for feature. DriveSpace was the feature, I think. Well, actually, Windows 95 looked like it had a bunch of cool new things too. And it could connect to the internet (better than Windows 3.1 could). That was a feature I spent money on. And every Windows since then has been able to connect to the internet. So that's not really a feature we can sell again. Dangit.

We keep trying to figure out reasons for people to upgrade to a new OS, but really, an OS these days is pretty much just something that you get with a computer.
Don't get me wrong, though - there are a bunch of things in Windows Vista that are cool that makes me 100% unlikely to every go back to XP - like the start menu search thing. It is the shiznit.

A tiny percentage (of our overall user base) wants to install our new OS on their existing PC - this is a fustercluck, as the new OS requires more memory, updated drivers for crappy old hardware that our crappy partners won't ever release, as they've already made their $10, and why should they hire a programmer to update a driver for a piece of hardware they sold years ago?

Developers look at a release through a different lens. Obviously for developers a release is a major one if there are new APIs and capabilities to take advantage of in their software—again straight-forward enough.
Actually, developers haven't cared about the APIs in new releases of Windows in ages - pretty much no software is 'Windows Vista or better' - no new API is so wonderous that you are going to limit the market for your application to 'just Vista users'. Seriously.

Pretty much all software today requires XP SP2...yeaaaars from now the minimum requirement will be Vista. Kind of like how developers are not getting comfortable with the idea of dropping Windows 2000 as a minimum requirement, which means that can start relying on the new APIs ....in Windows XP.

Partners are the cheap bastards who create PCs and other hardware, and are a major part of the make-it-as-cheaply-as-possible ecosystem that Windows is part of.

Partners like to think that we can put some nifty feaure in Windows that will make everybody run out and buy a new computer. Like Sideshow (that didn't work out too well - does anybody have one of those?). Or tablets (that worked out a little bit better. Browsing the web on the couch with a tablet is the shiznit. Again. But sadly the sales numbers don't reflect that.)

Partners hate having to update their drivers - they don't want to spend the money. That is why they love 'class drivers' - generic drivers for bits of hardware that are actually just commodity things at this point. Like cheap sound cards (Ever since AC97 came along). But generic hardware doesn't make much money.

Occasionally, partners want to 'differentiate' (make more money on a bit of hardware by trying to convince you that it is somehow better and thus worth more money) - so they create a piece of hardware (usually called SuperVoodoo Extreme BlingBling XXXPress) that you have to have, and to really differentiate it, they add shitloads of SuperVoodoo Extreme BlingBling XXXPress control panels and startup applications and system tray applications to your system. Because fuckit, you spent $299 and need the software equivalent of racing stripes and massive rear spoiler on your Acura.

IT professionals are overworked and underpaid - so conservative by nature and thus take a conservative view of change. Hate it, in fact.

Because the beancounters in this shit economy make them, they carefully evaluate if any new piece of software is going to be a good return on investment.

So for an IT professional a major release would be one that delivers significant business value.

This business value could be defined as a major investment in deployment and management of the software for example. So the fact that Windows Vista has 6000 group policy settings where Windows XP has only 1000 - well, that makes them pretty happy - They can configure the twelve thousand Vista computers in their company exactly the way they want them, from one place.
(I totally made up those numbers, by the way - I can't be bothered to look them up. But I think they are close to the real ones. Probably.)

Journalists and techies think that a “re-architecture” means "major release" - because there is lots of new stuff in there now, and all the old cruft has been flushed. (But “re-architecture” sucks for partners and IT pros.)

Folks usually think that re-architecting leads to better performance, breaking with the past leads to using less memory, etc - I like to call it 'The Cargo Cult of Clean Slate'

The grass is always greener on the other side - we have long term plans for Windows, and harsh, radical changes can sink you. (and nobody really does it...Ask Adobe what they think about Apple's harsh changes.)

It is always tricky to debate those points because we are comparing a known state to a state where we fix all the things we know to fix, but we don’t yet know what we might introduce, break, or otherwise not fix. As Dick Cheney (or was it Rumsfeld once said): ...Something about known unknowns. We have known unknowns now, and we prefer them to unknown unknowns. Or something.

But we still do a lot of spring cleaning in Windows. Spend a lot of time on it.

Anyway...
The key is always a balance. We can have big changes for all customers if we prepare all the necessary folks (partners and application developers) to work through the change.
We can have small changes have a big impact if they are the right changes at the right time, and those will get recorded over time as a major release.

We dedicated our full engineering team and a significant schedule to building the Windows 7 Client OS. That makes it a major undertaking by any definition. We intend for Windows 7 to be an awesome release. No, seriously, we think it will be pretty cool. Things are going much much better than they were at this point of Windows Vista.

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.
Sigh.

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 comment...so, 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...

Sunday, June 29, 2008

New York Times gets it wrong

Windows could use rush of fresh air

Beginning as a thin veneer for older software code, it has become an obese monolith built on an ancient frame. Adding features, plugging security holes, fixing bugs, fixing the fixes that never worked properly, all while maintaining compatibility with older software and hardware — is there anything Windows doesn’t try to do?
Disaster! Run for the hills! Microsoft is trying to do the bare minimum you have to do with a commercial operating system!

Painfully visible are the inherent design deficiencies of a foundation that was never intended to support such weight. Windows seems to move an inch for every time that Mac OS X or Linux laps it.
The oldest 'base' for Windows (if you could distill it down that way) is the NT source code. That was designed from day one to be as future proof as you can make an OS. (Trying to future proof software over more than a decade is like trying to predict the weather at 2pm, on the 4th of July 2045. Windows is pretty modern, just like everything else out there. I can't really think of any ancient technology in Windows that is beyond salvage; everything important that needs to be overhauled can be overhauled, and has been. (Hit that Comment button if you disagree. I'm not saying everything in Windows is perfect. It isn't. I just don't think we've painted ourselves into a corner anywhere with the OS design.)

The best solution to the multiple woes of Windows is starting over. Completely. Now.
Ah yes - the wonderful lets-start-over argument. Every developer gets to this idea at some point. Good developers think of ways that they can take what they have, and radically improve it.

Vista is the equivalent, at a minimum, of Windows version 12 — preceded by 1.0, 2.0, 3.0, 3.1, NT, 95, NT 4.0, 98, 2000, ME, XP. After six years of development, the longest interval between versions in the previous 22-year history of Windows, and long enough to permit Apple to bring out three new versions of Mac OS X, Vista was introduced to consumers in January 2007.

That's correct, I guess.
Although XPSP2 was, as a project, the size of a new OS.
And we shipped Windows Server 2003 in that gap. And a lot of 64 bit versions of Windows.

When I.T. professionals and consumers got a look at Vista, they all had this same question for Microsoft: That’s it?
I know what they were trying to say. They're trying to say: Awww yeah, that's it.

The internal code name for the next version is “Windows 7.” The “7” refers to nothing in particular, a company spokeswoman says.
She doesn't use winver. Just like most consumers.

But sticking with that same core architecture is the problem, not the solution. In April, Michael A. Silver and Neil MacDonald, analysts at Gartner, the research firm, presented a talk titled “Windows Is Collapsing.” Their argument isn’t that Windows will cease to function but that the accumulated complexity, as Microsoft tries to support 20 years of legacies, prevents timely delivery of advances. “The situation is untenable,” their joint presentation says. “Windows must change radically.”
Eh, OK. I think I blogged on that before.

Some software engineers within Microsoft seem to be in full agreement, talking in public of work that began in 2003 to design a new operating system from scratch. They believe that problems like security vulnerabilities and system crashes can be fixed only by abandoning system design orthodoxy, formed in the 1960s and ’70s, that was built into Windows.
Unfortunately, this willingness to begin with an entirely new foundation is not located within the Windows group but in Microsoft’s research arm, where scientists and their heretical thoughts are safely isolated. Last April, Microsoft publicly unveiled the five-year-old research project, called “Singularity.” It is nothing more than a neat academic exercise, not a glimpse of Windows 7.

So...Microsoft Research is looking into brand new unproven ways to build operating systems. And we're not using those unproven methods and technologies *today* when we sell operating systems to millions of paying customers? Yes, we suck indeed.

[Mac OS X is] based on a modern microkernel design, which runs a very small set of essential services that make the system less vulnerable to crashes.
Yes, that is a somewhat true point, but distilled down to nothingness by the NY Times editor. (Are microkernel-based designs more robust? The answer is ...er, kind of, based on your definition of modern, microkernel, essential, services, system, vulnerable and crashes. And is.)

In some crucial ways, however, Microsoft would enjoy advantages in developing its own “Windows OS X,” as we might call it, that Apple did not: the power of today’s quad-core machines and sophisticated virtualization software would allow older software applications and hardware peripherals to be used indefinitely with little or no performance penalty, making a clean start far easier for customers to accept.

Sigh. No. Memory is the big problem here - virtualizing Windows Vista in a little virtual box inside of Windows 7 (or 8 or 9 or 10 or whatever) is going to take too much memory.

Quad-core is not going to help you; the bottleneck here is not the CPU; fitting two operating systems into memory is. A simple point like this should be easy enough to explain in the NY Times.

A MONOLITHIC operating system like Windows perpetuates an obsolete design. We don’t need to load up our machines with bloated layers we won’t use. We need what Mr. Silver and Mr. MacDonald speak of as a “just enough” operating system. Additional functionality, appropriate to a given task, can be loaded as needed.

If only there was a way for a bit of software to load bits and pieces of the operating system, as needed...Some API to load a dynamic link library from the disk, into memory, and then call a well-defined API in said DLL. Maybe we can call it...LoadLibrary()?

Wednesday, June 4, 2008

Download this, install it

Windows Search 4.0

The search engine in Windows Vista is not as good as it could be. This one is much better. Download it, install it. You will not be sorry.

Sunday, June 1, 2008

Here's an idea...

A friend of mine, yesterday:

"If software crashes and loses my data more than 10 times, I should get the next version for free."

Thursday, May 29, 2008

Windows 7 Won't Have Compact "MinWin" Kernel

From Slashdot

Calm down.

MinWin is not some magical new kernel. It is Windows with every single feature stripped out - It is the base ingredient of any version of Windows. (I forget the exact size. But it is pretty tiny - small enough for embedded stuff.)

We spent a boatload of time during Windows Vista making everything 'componentizable' - So that we could (by creating some xml files that our build process uses) create a boatload of different versions of Vista (and Server 2008). (So, all those blog posts out there with titles like 'How Microsoft can fix Windows 7: Make it modular!'...Uh, yeah. Welcome to three (four? five?) years ago.)

Why is this a good idea?
With not much more than some XML tweaking, we could create Windows Server 2008 Server Core: A version of Windows Server that is nothing more than just a web server. Or a file server (or whatever you choose to configure it as) - This means you can get a version of Windows Server with fewer things loaded in memory, fewer things running that can get hacked, fewer things that need to be updated. Pretty cool.

About the kernel:
The 2000/XP/Vista/Windows 7 kernel has evolved quite nicely over the years, and (in my opinion) is one of the best bits of code we have. You do not, and should not, do a total rewrite of a kernel in a widely-used OS between releases. Writing a piece of code is a tiny fraction of the work required to ship a bit of software - you have to test every single line of it, find the security bugs, make sure it works for every customer on every bit of hardware, etc etc.

How many times has the Ubuntu or Mac OS X kernel been rewritten?

So anyway:
You already have MinWin - It is the core system components that Windows Vista needs to function; everything else on the system depends directly or indirectly on it. It is the last thing you could (theoretically) uninstall.

So, if you really really want it, you can get it, I suppose - you probably could (using the command line) uninstall almost every single Windows Vista system component, including the user interface. I don't know what the hell you'd do with just a kernel and a kernel loader on your machine, though.

Thursday, April 17, 2008

It is a spoof...

...of our crappy internal 'team event' videos - the cheese factor in these videos have been increasing over the past couple of years (we lost major acting talent when Brian Valentine left), and (from what I've heard) there is an all-out arms race to produce the worst video possible. Yes. Strange.

Like idiots, though, they forgot that this kind of thing leaks, and that people outside the company don't have the context that comes with the joke.

So Bruce ServicePack will win 'worst team event video of all time' - it probably killed off the goofy team event video.

Saturday, April 12, 2008

Collapsing?

This just in from Computerworld:


April 10, 2008 (Computerworld) Calling the situation "untenable" and describing Windows as "collapsing," a pair of Gartner analysts yesterday said Microsoft Corp. must make radical changes to its operating system or risk becoming a has-been.

OK, that sounds bad. You have my attention...


Among Microsoft's problems, the pair said, is Windows' rapidly-expanding code base, which makes it virtually impossible to quickly craft a new version with meaningful changes. That was proved by Vista, they said, when Microsoft -- frustrated by lack of progress during the five-year development effort on the new operating -- hit the "reset" button and dropped back to the more stable code of Windows Server 2003 as the foundation of Vista.

Nope, the problem with 'Alpha Longhorn' (the version of Longhorn we were working on before the reset back to the Windows Server codebase) was that we were piling everybody's science project (Avalon, WinFS, etc, etc) into Windows with some sloppy project management.

If anything, the fact that we could reset back to a good code base and port over our good Alpha Longhorn features indicates that it actually is doable to 'quickly craft a new version [of Windows] with meaningful changes'.

"This is a large part of the reason [why] Windows Vista delivered primarily incremental improvements," they said. In turn, that became one of the reasons why businesses pushed back Vista deployment plans. "Most users do not understand the benefits of Windows Vista or do not see Vista as being better enough than Windows XP to make incurring the cost and pain of migration worthwhile."

We have a very good feedback loop with corporate customers; Vista contains a lot of features they asked for. (For example, Vista contains thousands of new Group Policy settings)
Big corporations, in my experience, want a new version of Windows with 'incremental improvements' - they do not want to retrain thousands of workers every couple of years. There are a lot of companies out there that use Group Policy to make XP (or Vista) look like Windows 2000 (Classic mode, classic start menu, etc) - They want the newer OS, for better perf, hardware support and security, but they don't want their users to notice the change.

It takes too long for Microsoft to build the next version, the company is being beaten by others in the innovation arena, and in the future -- perhaps as soon as the next three years -- it's going to have trouble competing with Web applications and small, specialized devices.

Don't think so. Your computer will be your primary residence for your data for the foreseeable future.

Every user has a primary computer where all their data is stored - and your iPhone/smartphone still has to be tethered that computer to get your contacts/music/photos/email accounts. That is not going to change anytime soon.

It will (someday your data will primarily live in the 'cloud', not on a fragile laptop), but not that soon - not for the average American.

"Apple introduced its iPhone running OS X, but Microsoft requires a different product on handhelds because Windows Vista is too large, which makes application development, support and the user experience all more difficult," according to Silver and MacDonald.

????
iPhone and your Mac laptop do not run the same OS.
Your Windows Mobile phone and your Windows laptop do not run the same OS.

In both cases, a lot of the APIs and libraries look the same. And there is a bunch of code reuse.

It has been this way ever since Longhorn was nothing more than a codename.

This is like saying a company failed because their truck engine could not be scaled down for use in their motorcycles. No duh.

Their advice to Microsoft took several forms, but one road they urged the software giant to take was virtualization. "We envision a very modular and virtualized world," said the researchers, who spelled out a future where virtualization -- specifically a hypervisor -- is standard on client as well as server versions of Windows.

"An OS, in this case Windows, will ride atop the hypervisor, but it will be much thinner, smaller and modular than it is today. Even the Win32 API set should be a module that can be deployed to maintain support for traditional Windows applications on some devices, but other[s] may not have that module installed."

The devil is in the details, isn't it? What makes you think this approach is going the be 'thinner, smaller and [more] modular'?


Backward compatibility with older applications should also be supported via virtualization. "Backward compatibility is a losing proposition for Microsoft; while it keeps people locked into Windows, it also often keeps them from upgrading," said the analysts. "[But] using built-in virtualization, compatibility modules could be layered atop Win32, or not, as needed."

Honestly - appcompat takes up a small amount of my time. It isn't very hard to support older APIs/applications. In the spots in Vista where we significantly broke appcompat we could see the problems coming a mile away (The Session 0 security fix, for example.)

Silver and MacDonald also called on Microsoft to make it easier to move to newer versions of Windows, re-think how it licenses Windows and come up with a truly modular operating system that can grow or shrink as needed.

?
The SKU story in Windows, in my opinion, is stupid - all you need is a Home SKU, a Business SKU. Done - end of story. (Marketing, are you reading this?)

Wrt grow or shrink: Huh? You can already install/uninstall just about ever usermode part of Windows Vista.
Take Windows Movie Maker: If you don't use it, it doesn't run. Doesn't slow down Vista startup. Doesn't chew up memory when it is not running. If you don't like fact that is taking up (i dunno) 10mb of disk space on your 100GB disk, you can uninstall it. What is the problem here?

Thursday, April 3, 2008

OK...so...

aka "How to never by annoyed by UAC again"
My last post was a lame April Fool's joke. I wasn't seriously proposing that we replace the UAC prompt with a Captcha. It would kinda sorta make sense in some scenarios, but we've already solved the problem* differently. And captchas are annoying. Necessary evil, but annoying. (Isn't it truly weird that Captchas are the first step to Bladerunner-esque interrogations?)

*What problem? One of the things AUC addresses: If you are an admin user on Vista, your applications (mostly) run in normal user context - that is the core feature of UAC on Vista. If any (potentially) malicious software is running on your computer (in user context), you don't want it to be able to silently elevate to system context and open up firewall ports/reconfigure your system/etc.

(Yes, malware, even in user context, can probably send your credit card details to the other side other planet...malware running in system context is worse though, as it can reconfigure anything on the system to turn your computer into a spam zombie or botnet node/spy on other users/etc.)
If we didn't prompt the user before launching code in system context (from user context), malware could do literally anything to your machine (without you knowing) as soon as you doubleclicked on SeeParisHiltonNaked.exe. (Replace Paris Hilton with whoever you really really want to see in the nude.)

The AUC prompt is displayed on a dark background because it is running in a different screen session - the malware (back in user context) can't see the prompt/automatically click on it/etc. (If we displayed a captcha at this point (instead of an Allow/Cancel prompt) the malware back in user context won't be able to see it, or perform any action on it. The black frame means that only you, the user, and the Windows OS, can see (or interact with) any content on the screen.)

So - UAC prompts: Neccesary evil. Well...Neccesary evil to protect you from true evil.

Unless...
Unless, of course, you generally know what you are doing.

You can easily configure UAC to never prompt you. You do, of course, need to be careful when downloading and running any software downloaded from the internet - you don't want random code from the internet to be able to get into system context on your machine.

But, if you always go "Hmm, is this a good idea to do this?" when you see the UAC shield on a button/menu...you don't need to see a UAC prompt, do you?

If you are a user with administrator priviledges:

To remove the prompt - run gpedit.msc, go to Local Computer Policy - Computer Configuration - Windows Settings - Security Settings - Local Policies - Security Options.
Look for 'User Account Control: Behavior of the elevation prompt for administrators in Admin Approval Mode' in the list on the right, and set it to 'Elevate without prompting'
Then, run 'gpupdate' from an elevated command prompt.

And you'll never see any UAC prompts, ever again.

But you have to promise to never run random executables off of the internet - stick to adobe.com or Paint.Net - stuff people trust. Stay away from SeeHarrisonFordNaked.exe.

Tuesday, April 1, 2008

SecCanWest

I haven't been able to get complete details from the whole SecCanWest thing; so Windows Vista wasn't compromised, but Adobe Flash was? *Sigh*

Security is very very hard.

(Don't worry, Adobe: There is an easy heuristic for determining the number of security issues remaining in a codebase: For every security issue you find, another security issue is bound to exist. You can use that to determine the actual number of security bugs in your code. This heuristic applies to any codebase on any OS.)

It sounds like UAC worked, though.

One of the areas of most active user feedback in Vista is UAC - people hate typing in their password to (for example) install random software.
Users already have far too many passwords (I've seen some studies that say that the average (average!) Information Worker has to remember 14 password already. Ridiculous.
In my personal experience, it seems that most users have no idea what their Windows user account password it - it just isn't something they use *that* often. Compared to, say, their Hotmail password. Or their Windows Live Hotmail password. Or their Windows Live Hotmail with Passport password.

Also, it is a pretty well-established fact that as soon as somebody has physical access to your machine, it is game-over from a security standpoint. (Heck, they could look at the disk sectors with a microscope, and read your documents. Probably. That's how microscopes work, right?)

When the user is attempting to install software we need to verify that that *the actual user* is the one granting admin access to the software installer; not a bit of user-context malware.

This is why the UAC prompt appears in the blacked-out special session (to stop UI automation from any bit of malware that might be running in your user context already from keylogging your password and doing a runas with admin creds later.)

So, we need to verify and prove that a human is granting permission for the software install. Any human close to the keyboard will do, as physical access to the machine == you can administer the machine. So really, you don't need a human with an admin user account; you just need a human. Or rather: you just need to prove that you have a human at the keyboard.

What kinds of proofs are used today to prove to software that a human is at the keyboard, instead of a robot? I, for one, can think of a solution that is pretty popular already - you might too, if you take a look around the web.

Monday, January 21, 2008

Try this instead..

Two timesavers when Windows misbehaves:


(This is obviously just some random person's opinion, and not advice from any major software company.)


Logoff/Logon, instead of rebooting

Windows occasionally gets into a weird state where, well, things just stop working - the start menu doesn't launch some apps anymore, clicking links in Internet Explorer doesn't work, context menus stop working, etc.*


Instead of rebooting Windows to get things working again, try logging out and logging back in. When Windows (and the apps that plug into the Windows shell) get into some weird state, you don't need to reboot; a logoff shuts down the Windows Explorer, and a logon loads it again.

The system services in Windows generally don't get into too weird a state. So they can just keep on running during your logoff/logon.

Recreate your profile instead of reinstalling Windows
On your home machine (not a domain-joined machine):
If your Windows installation is in a terrible state (too many application installs and uninstalls, weird application crashes at weird times, file associations that don't work anymore, etc):

Instead of wiping and re-installing Windows**:
Back up all your files
Log on as a different user on the machine
Delete the user profile of your user (in Computer Properties, Advanced Settings)
Log on as your old user account
All your files will be gone (you did back them up, didn't you?) but you will have a clean registry, and as far as all applications are concerned, you are a new user.
Restore your files

The Windows registry consists (simplifying here) of two parts: HKLM (machine settings) and HKCU (your user settings)
When Windows gets into a weird state, you can mostly fix all the issues by deleting HKCU (by deleting the user profile), instead of reformatting the disk (which, obviously, gets rid of HKLM and HKCU)
You lose some settings in some apps (because you start off with a fresh HKCU) but you were going to reformat and reinstall anyway. And you don't need to reinstall all your drivers. Again.

(Translation for Unix types: This method is about the same as deleting all the .* files in ~, I guess.)
*My Macbook gets into the same state sometimes (I get unejectable CDs, for some reason). The same logoff-logon approach works there too.
**Don't do this if you rely on certificates in your user cert store, for things like EFS. This method makes bad things happen in that scenario, I think.
And some applications (some games) don't like this method. But things like Office just keep on working.

Thursday, January 17, 2008

Who copied who?

(Or is it Who copied whom? I never can tell.)

I always found the sheer amount of human effort in the Microsoft-copied-Apple interweb flamewars really funny.
First, the accusations: Microsoft stole X. And then Apple-copied-Microsoft responses. And the PARC history lessons. (Somebody should come up with the equivalent Godwin's Law for PARC and Windows/Mac OS flame wars.)

The OS-engineering world is pretty small. A surprising number of Windows employees have worked at Apple in the past. And vice versa. Are these guys stealing?

(The same happens at Boeing, apparently: A large number of Boeing engineers have also worked at Airbus. And the other way round.)

Another interesting note: Apparently, we hire an external company to do some of the Windows icons. A lot of those designers use Macs. (The Vista icons were a bit too Maccish for my tastes, which is why I asked around.)

Anyway: You-won't-believe-me time:
One of the Windows 7 features I came up with is also in Leopard. It is in this list.

(No, for obvious reasons I'm not going to say what the actual feature is. I like my job.)

I came up with the feature idea, designed it, prototyped it. My devs coded it (against the rules, very early in the first Win7 milestone, when we were supposed to do code cleanup and maintenance) and checked it into a side feature branch. A month later, the Leopard feature list is announced.

I swear I had no idea that Apple was working on the same thing in Leopard. How could I? Apple runs a pretty tight ship.

I'm pretty sure Apple had no idea about my feature. (Seriously, it is not the most headline-grabbing thing in that 300 list. It is a pretty handy feature, though.)

So, who copied who?

Tuesday, January 15, 2008

Mehworld

Due to a freak snowstorm (in Seattle!) I spent most of the day on the couch - no commute to work for me today.

Which means I spent most of the day looking at the Macworld announcements (A Tablet PC is a great device for web-surfing on the couch. Highly recommended.)

My opinions:

Time Machine: Meh.
For $300/$500, I fully expect somebody to come over to my house every day, to backup all my computers. After giving me a foot rub. I wasn't expecting a boring-as-a-box-of-bandages Airport Extreme box with a hard disk in it.

Seriously, with a name like Time Capsule, I was expecting the device to look like this:
That's the robotic turret from Portal, in case you didn't play the best game of 2007. And 2008, probably.

Is it just for backup, or can I use it as a regular hard disk? (I'm guessing yes, as that's how Time Machine disks work today.)
Can I backup/access files across the internet? Doesn't look like it.
Windows Home Server does allow you to do that, but it also suffers from overpricedness.
Oh, and "server-grade" hard drive? That's a pretty woolly statement.

I'd still like one, though. But I wouldn't go to much effort. I'd pick it up if you dropped one off at my doorstep.

$20 Touch Upgrade: WTF?
There has to be some legal reason for the upgrade fee. Maybe some technology in the bundle has a licensing fee. Can't think of what it could be, though.

Macbook Air: Hmmmm
This is either the new Cube, or sheer genius.

Crunchgear hits the nail on the proverbial.

Dumping the DVD drive is a risky move. Yes, they are bulky, and are not used very much. But walk around any airplane/train, and you'll see a huge number of people with laptops watching movies. (The general public seems to have horrific taste in entertainment. Seriously, why is CSI: Miami popular?)

Here's a hint, Apple: Not all those people are going to rent a movie off iTunes for a four-hour flight, like you cheerfully propose (See "Ahead of the Curve"). I can borrow a movie from my roommate's DVD collection. For free. For more than 24 hours. People generally pick the easiest and cheapest solution available to them.

Like ripping your CD collection? Not on your Air, you don't.

So, this is not for the general public. Probably. But the Air will be the new status symbol. Unlike the Cube, you can cart it around with you, to show everybody your newly purchased Good Taste in Technology.

The Remote Disk feature is typical Apple: A innovative idea in theory, woolly in practice:
Can I rip CDs? (Probably not)
Watch DVDS? (No?)
How fast would a software install be, via Remote Disc/wireless network? (Slowish, I would guess.)

I expect CEOs to love the Air. And support techs to hate Remote Disc.
They should really include the USB DVD drive as a standard item.

AppleTV: Must buy
I'm buying one of these. Although; The Xbox 360 has had the same thing already. Kinda. But I trust Apple to (a) get content from every studio, and (b) do a better UI.

Though, the watch-a-movie-within-a-minute statement by Jobs is pure bullshit. We have a lot of people who crunch numbers like that, and the average consumer is not going to get that.

The fact that the average (er...rich) consumer can now easily get HD content via their Internet connection (via Apple, or Microsoft) means that HD-DVD is dead. As is Blu-ray.
Check Craiglist Seattle for a cheap HD-DVD player tonight.

The registry

Just finished reading the comments in my 'Big changes' post; there are some interesting comments about the registry in there.

Could the registry be replaced? Sure, in software, pretty much any change is possible.
In practice though...If you were to replace the registry, you would end up with something that pretty much looks exactly like the registry.

Go take a look at all the programs on your hard disk that use the registry APIs in [consults wikipedia] in advapi32.dll. (There is a way to dump the APIs that a binary uses with link.exe; wish I could remember the command right now.)

Pretty much every executable file uses the registry, and expects keys to be in certain places in the registry. The APIs for getting/setting stuff in the registry are not going to go away for the next 10 years.

What about making a brand new son-of-registry, with new APIs, that new apps will use?
This will fix a bunch of problems (because you would be able to sidestep the mistakes you made while designing the current registry; add more metadata to keys to not roam, etc)

...but it would be decades before application developers will use it. (Because nobody is going to target their apps to Windows 7 only; they would wait before Windows 7 was the oldest OS out there before relying on that API. A lot of our external application developers only use APIs that have been in since Windows 2000. Sigh.)

I don't think...

...I've ever been this insulted.

Take a look at the 'marketing' coming out of the Microsoft marketing guys in the past couple of years. Not the brightest bulbs in the box.

Saturday, January 12, 2008

Big changes

In almost every Windows OS release so far, we've changed something major in the OS subsystems, to improve the Windows infrastructure. And that generally screws up application or driver compatibility:

Windows 95
Long file names - Application developers had to fix their applications to support long file names. (A good thing, though: What is in 1NTINPRS.AVI?)

Windows NT
Driver developers had to write drivers for a new driver framework because of the hardware abstraction layer. Actually, most of them just stayed away, and supported Win9x only.

Windows 2000
A major annoyance for driver developers, who could ignore the NT driver models up to this point. Win2k ran on NTFS, and had locked-down permissions - developers couldn't install their application's files in \windows\system anymore.

We were telling corporations to set up their users as non-admins on their machines, and for the first time, corporate users in were logging in without admin rights, breaking all sorts of enterprise apps.

Consumers just sailed past, on to:

Windows XP
Installed on NTFS on default - breaking lots of applications that were used to the wide-open, unsecured world of FAT32.
We were telling the dads (or moms) of the world to run as administrator, and set up non-administrator accounts for everybody else in the household. Pretty much nobody did that - they all just logged on as Administrator. A situation that almost every bit of spyware exploited.

Which brings us to the OS everybody loves to hate (that isn't actually that bad) - the fustercluck known as:

Windows Vista
This time round, punch-drunk from all our security issues, the Windows team said: Fuck it, let's just lock it all down:

AUC: All your applications will run as non-administrator, even if you have an administrator account. No excuses. We've been telling you that you should do this since 1999.

A new graphics driver infrastructure: We had to protect the system from video driver crashes, as graphics card companies care only about performance, not stability.

Session 0 Isolation: No system service can directly create a UI. Lots of drivers and antivirus apps broke, but we fixed up a major security design flaw in Windows.

At this point, I can't think of any subsystem in Windows that needs a major change. *

Of course, with every new Windows release, subsystems are tuned up and cleaned up, but as far as I can see, it does not seem like there is a major bit of architecture that we need to change radically (as far as you application and driver developers are concerned). 

And that would be a good thing - your applications and drivers should then hopefully just keep on working in Windows 7. (And it does seem that we got bit in the ass a bit too hard with all the Vista appcompat issues.)

*as far as I can see. Who knows, a SuperUAC might be in the works. They might remove all security feature from the OS. They might make the UAC prompt pop up every five minutes. They might require driver writers to rewrite their drivers in Cobol.

In this Slashdot post...

...about Firefox in large corporations:

Only this comment is worth reading.

I used to read Slashdot every day. Now it is more like once a year.

iPhone and Exchange and Microsoft

This is interesting - Apple is hiring people to work on Exchange support in iPhone...

This will, obviously, make the iPhone much more palatable to your corporate IT department...

(This is interesting, because it probably means that Apple has been listening to their corporate customers, for once. It this keeps up, Windows is screwed.)

...but keep in mind that your IT department now has their grubby fingers on your iPhone. From what I've heard, most corporations won't allow employees to sync their phones with Exchange servers unless they support the Exchange 'remote wipe' protocol - If your phone gets stolen (or you left it in a cab after an evening of deal-making and sake) your IT department can wipe it remotely. Yikes!

I don't trust my IT department with that kind of power. But I can understand the corporate security dilemma.

The other interesting thing about Exchange on iPhone is that is validates my opinion that Microsoft employees have been living in a fog for a while:

Every Windows Smartphone owner I know, outside the company, hates their phone - they got lured into buying one on the appealing prospect of having their phone be their digital butler - It sounds great to have a device that wakes you up in the morning, reminds you of meetings, gets your email from anywhere, and allows you to browse the web from the back of the cab (Googling Sake+Strippers+Manhatten)

Instead, what they got it a phone from a shitty also-ran cellphone manufacturer, with a generic Windows OS, tied to a cell company that nickel and dimes them to death. With a alarm clock that works half the time. With an email setup process that is horrendously difficult. With a web browser that is close to useless.

Every Windows Smartphone owner I know, inside the company, loves their phone - because the average Microsoft employee loves to dink around with something until it mostly works.

The alarm clock problem? Jonny Q. MSEmployee researches the problem, downloads the new firmware or Beta Windows Mobile OS off company servers, and great! the problem is fixed.

The email setup problem? Jonny Q. MSEmployee loves tinkering and investigating until he figures out how to get it to work.

The crappy web browser problem? Jonny Q. MSEmployee updates the OS, gets a new browser off the internet, etc, etc.

Jonny doesn't mind all this effort (it's fun! look how much better my Windows Smartphone is now!) but the average consumer? Not so much.

This disconnect has a lot of Microsoft employees thinking that their Smartphones are actually good, and a viable competitor to the iPhone. They are not.

Friday, January 11, 2008

Another one?

We're building yet another UI platform?

According to istartedsomething.com, we have:

  • Windows Presentation Foundation (WPF) - A managed UI platform. Bloated, slow. We spent a bunch of time in 2006 trying to reduce the working set and startup time.
  • Silverlight - A rewrite of WPF in unmanaged code; small, fast, excellently written. But probably too little, too late to make WPF and XAML relevant to the internet.
  • Windows Forms - A workhorse: a bunch of enterprise apps run on this .Net 1.0 and 2.0 technology.
  • Win32 - The oldest one. Ancient technology. And no developer wants to work with this.
  • Media Center Markup Language - Written by the MC team; flashy. But it doesn't do a lot - just enough to draw the MC UI. You can't use it as a UI platform for all of Windows.
We actually have another one - DirectUI - an internal-only UI platform that is used in XP and Vista to draw control panels, and bits and pieces of the Windows Shell. It was a pre-XAML version of XAML. As far as I know Windows 7 will still have it.

This means that we have 6 teams that work on the same thing - a bit of code that draws the user interface for applications on the screen.

If we were a sane company, we would have the following (from oldest to newest):

Win32 (the oldest one)
Windows Forms (the replacement, to make programming UI better)
(A flashy and fast) unmanaged WPF for Silverlight and Media Center

Wednesday, January 9, 2008

Want your Windows Vista bug fixed?



Do you hit the same annoying Windows Vista crashing bug day after day?

Please, please, please click the 'Send information' button when you see this crash dialog.

Why?

If in the very unlikely event that you are the first person to encounter and report this bug, a new entry in our bug database is entered automatically.

If anybody else encounters the same bug, and reports it, our automated crash reporting system finds the correct bug in our database, and then updates a counter. (Basically, there is a field in the bug that indicates that X people on the internet have encountered this bug.)

If you don't report the crash, that counter is not updated.

Why is that important?

Our ship room (a bunch of guys who decide which bugs should get fixed and added to SP1, and which bugs are too minor to be fixed) rely a lot on this counter. If the counter reaches more than [redacted], we fix it.

So, every time you encounter any crash - hit that 'Send information' button. Please.