I'm sorry I haven't written anything in a while.

For those who don't know me, I have transitioned to work on NTFS proper.  It's fun, technical work, but it's also maintenance, something which just seems less exciting for a public audience.  As a result, I don't have quite so much to talk about.

However, I feel the need to write today.  I've just read an article on Linux-watch - available here - which, among other points, mentions "...Vista is based on a single user PC operating system."  To be fair, many people over the years have raised this argument, and I feel I should articulate a response.

Many of us will remember Windows 3.1 (and its predecessors) which were inherently single-user.  Many of us will remember Windows 95 and 98, which had some level of support for multiple users.  Some of us will also remember that "other" version of Windows, Windows NT.

Windows NT is multi-user, and always has been.  If a user attempts to open or create a file, NTFS is told as part of the same operation information about that user and what rights they have.  There's no concept of the "current user" or anything similar.  We can even process the open or create on a thread outside of the process that requested it - so the "user of the running process" is also somewhat meaningless at this level.

Historically, NT supported only a single user to be logged in interactively with the system.  Background processes could always run in other user contexts.  As of NT 4 Terminal Server Edition, this was replaced by multiple interactive users (on different sessions).  As of Windows 2000, the "runas" tool allowed the same desktop to host applications in different user contexts.  As of Vista, UAC allows the same desktop to host applications in the same user context with different rights.  However, NTFS always supported the idea that an operation could be requested by any user, and has not had to change to accommodate these developments.

While the "Windows" brand has referred to single-user operating systems, Vista is not derived from one; nor was XP.

Many of the more technical readers out there will point out specific technologies which were required to support Windows 3.1/95/98 compatibility, where multi-user support was added later.  A good example is DDE, where applications on the same session can communicate using broadcast window messages.  This facility was added in Windows 3.0, and did not have multi-user scenarios in mind.  However, even here, a Terminal Server machine can have multiple simultaneous sessions, with different user contexts, and still maintain compatibility with DDE.  While opinions may vary on the DDE design, the fact that this works is an achievement for compatibility; in itself, it does not reduce the multi-user capabilities of the underlying operating system.

Linux supports per-process user contexts.  So does NT.  Linux supports multiple concurrent X sessions.  NT supports multiple concurrent windows sessions.  Linux has support for permissions - and now Access Control Lists (ACLs) - in its filesystems.  NT has supported ACLs from 3.1.  Linux supports X applications on the same desktop running in different user contexts.  NT supports applications on the same desktop running in different user contexts.

The transition from Windows 98/ME to Windows 2000/XP was only a small jump for users, but it was a very large jump for technology.  If many users didn't realize that a simple upgrade moved them from a single-user to a multi-user operating system, that's an amazing accomplishment in terms of compatibility.  However, having made the switch, the "Windows" of today cannot really be claimed to be single-user.