What if two programs did this?


The thought experiment "Imagine if this were possible" is helpful in thinking through whether Windows lets you do something or other. (A special case of this is "When people ask for security holes as features.") If the possibility leads to an obvious contradiction or the violation of generally-accepted rules of metaphysics, then you can be pretty sure that Windows doesn't support it. (Of course, the absence of such a contradiction doesn't prove that Windows does support it. But you can use it to rule out obvious bad ideas.)

The question "What if two programs did this?" is also helpful in evaluating a feature or a design request. Combining this with "Imagine if this were possible" leads to an impressive one-two punch. Here are a few examples:

"How do I create a window that is never covered by any other windows, not even other topmost windows?"
Imagine if this were possible and imagine if two programs did this. Program A creates a window that is "super-topmost" and so does Program B. Now the user drags the two windows so that they overlap. What happens? You've created yourself a logical impossibility. One of those two windows must be above the other, contradicting the imaginary "super-topmost" feature.

"How do I mark my process so that it always the first/last to receive the system shutdown notification? I want to do something before/after all other programs have shut down."

Imagine if this were possible and imagine if two programs did this. You now have two programs both of which want to be first/last. But you can't have two first or two last things. One of them must lose. (This of course generalizes to other things people might want to be first or last.)

"How do I make sure that my program is always the one that runs when the user double-clicks an .XYZ file?"

Imagine if this were possible and imagine if two programs did this. Now the user double-clicks an .XYZ file. Which program runs?

In this case, the solution is to leave the user in charge of their file associations; if they decide that they want your competitor's program to be used for .XYZ files, then that's their decision and you should respect it.

My colleague Zeke [link fixed 11am], who is responsible, among other things, for the way file associations work in Explorer, provides a few alternatives:

Here is the entry point in MSDN to the documentation on file associations in Explorer.

For many of these "I want to be the X-est"-type questions, you can often come up with some sort of hack, where you run a timer that periodically checks whether you are still X, and if not, pushes you back into the X-position. And then you stop and think, "What if two programs did this?" and realize that it's a bad idea. At least I hope you do.

Even with this explanation, some people still don't get it. I'll ask them to consider, "What if two programs did this? They'll be fighting back and forth," and the answer I get back is, "Then I can have the second program check if the first program is already running." They don't understand that they didn't write the second program.

When two programs "duke it out" like this, you can't predict which one will win, but you can predict with 100% certainty who will lose: The user.

I remember well when one of my colleagues called me into his office to show me two very popular commercial programs that both wanted to guarantee that they were the program that ran when the user double-clicked an .XYZ document. Since there is no such guarantee, they faked it with the timer hack.

You installed the first program, it set itself as the .XYZ file handler, and everything seemed normal. You then installed the second program, it set itself as the new .XYZ file handler, and the first program noticed and said, "Uh-uh, I'm the program that runs .XYZ files", and changed things back. Then the second program said, "No way, I'm the program that runs .XYZ files" and set itself back.

This childish game of "Nuh-uh/Yuh-huh!" went on while the user sat there dumbfounded and helpless, watching the icon for their .XYZ files flicker back and forth between the two programs, both of whom egotistically believed they were doing the user a "favor" by insisting on being the program that runs .XYZ files.

Comments (54)
  1. Matt Green says:

    I’d love to know which programs exhibited this behavior.

  2. Travis Owens says:

    In regards to the last part of your post, I think Real invented tho concept of file extension hijacking with their hideous memory resident tidbit back in the Win98 days (or was they Win95?).

    And about the original post, while I don’t have any insight about how explorer handles windows (I’m too lazy to road your links) here’s an imaginery scenario to think about.

    Let’s assume all windows float on a layer, windows change layers mostly from the user clicking on them. So let’s say 0 is the topmost layer and is reserved by MS Windows for various reasons, so the topmost setting any window can request is layer 1. When an application takes position 1, every other program gets incrimented by 1, so what had 1 now becomes 2, 2 becomes 3, etc. Well if a program did a realtime check and if it’s layer was not 1 then set to one, and another program does the same thing, you would have a convulsion cycle of these two apps fighting, just like your extension example.

    This is a good example of where a sanity check is needed and any app that requests X layer changes during Y secs get’s flagged abusive and all non user attempts to change the layer is ignored for Z secs. And since layer 0 is reserved for native Windows apps the OS could always launch a window above all others.

    Maybe I’m just a ranting amateur on the subject but I wanted to interject this concept.

  3. Peter Ibbotson says:

    Why is that anything that wants to manipulate a jpeg or an mpeg files seems to try to grab these extensions rather than leaving well alone.

    I get particularly annoyed by things like cameras and scanners which seem to insist that you install their crappy image editing stuff and then proceed to install themselves as the primary editor.

    Thankfully I’ve now gotten rid of most of these by the simple expedient of buying a memory card reader. Still doesn’t help with the HP all in one printer stuff though.

  4. Reuben Harris says:

    Re two "super-topmost" windows, you could have special code in the window server to XOR the intersection! :-)

    Re "Zeke", that link 404s and I can’t find any hits at all via the MSDN blogs search widget…

  5. Matt: I’ll give you a hint: I saw a demo of this behavior a couple of years ago.

    It’s not much of a hint but if you know where I work it should be enough.

  6. Maurits says:

    The solution is to do something a little radical for file extensions. The old Java recommendation was to name your package starting with the reverse of your domain name:

    so if your software company is ide-deluxe.example.com, your packages would look like

    com.example.ide-deluxe.SomePackage

    com.example.ide-deluxe.SomeOtherPackage

    etc.

    So it seems logical to extend this idea (mmm… puns) to file extensions. Underscores are valid in filenames but not host names.

    So your files would look like:

    user-prefs.com_example_ide-deluxe_database

    registration.com_example_ide-deluxe_key

    etc.

  7. This extension "fighting" sounds a lot like what happens between IE and other browsers. Yes Microsoft added the "Set Program Access and Defaults" item (after losing a court case), but I find this dialog just doesn’t work correctly. Yesterday I installed Win2K, I turned off IE and Outlook and installed Firefox. I applied a SP and some patches, both IE and Outlook were reenabled. In all I think I had to disable these 3 times before it took.

    It’s almost comical to watch Windows continously reenable these despite the user specifically disabling them.

  8. boxmonkey says:

    Sometimes a user wants a program to be top-top most, or does want to specify that a computer program should be the definite absolute last thing to run.

    If you give administrators the right to specify these things, rather than giving programs the right to specify these things, you eliminate the "what if 2…" problem.

  9. ferrier says:

    I can’t remove Internet Explorer (at least not easily). I can’t remove Media Player (well, not easily). They both regularly associate themselves (or pester users who won’t know better) until their file associations are restored, at every little update.

    You should really stop throwing stones from within your glass house you know.

  10. oldnewthing says:

    ferrier: Um, last I checked I don’t work in Internet Explorer’s house or Windows Media Player’s house.

    Does everything I write have to be construed as coming from a particular house? Can’t I write about programming in general?

  11. Peter Dimov says:

    The .XYZ problem has a trivial solution from the Windows side; don’t have a per-extension registry of applications, have a per-application registry of extensions.

  12. Maurits says:

    There are well-established file types listed in the IANA’s MIME-type registry. It is to the advantage of the user to have files of these types clearly marked as such (for example, .csv should mean text/csv)

    How to handle two different text editors that want .txt?

    In addition to the various domain-based extensions

    .com_example_vendor1_…

    .com_example_vendor2_…

    have MIME-based extensions:

    .mime_text_plain (short version: .txt)

    .mime_text_csv (.csv)

    .mime_video_mpeg

    .mime_audio_mp3

    Have some usability rules:

    Applications produced by a vendor can grab their own vendor extensions once every five minutes

    Applications produced by a vendor can grab MIME extensions when they are installed only

    Applications produced by a vendor can not grab extensions for another vendor except by explicit instructions by the user

    For example, when installing OpenOffice, the user should need to press a button to say "grab .com_microsoft_word_document"

  13. asdf says:

    Let me guess these programs added themselves to the list of things to do at login so their pretty little icon is in the notification area of the taskbar so they can file associations every X msecs?

  14. Matt says:

    All the bickering here is missing the point.

    The requests for "how do I do this" that Raymond alludes to happen ALL THE TIME on Microsoft email threads. Thankfully, on most of these threads there’s a raymondc to shoot down the idea.

    I’m afraid there aren’t enough raymondc’s in the software companies in the world, and as a result we get a lot of software that behaves really, really badly.

  15. TheMuuj says:

    I’m not a Unix/Linux user, but I do agree that MIME-types are better than extensions. I turn on the option to show all extensions, but only because it’s more of a pain to leave it off (try creating a new text file and renaming it to ".HTML"–its a hassle), and hard to tell what the exact filename is sometimes ("JPG" vs "JPEG"). An optional column in Explorer showing the actual extension and a "Change File Type" command (with appropriate warnings) would help.

    Actually, I think MIME-types are only a partial solution, since there’s a potential for overlap in vendor-specific file-types. Perhaps files should have URIs attached (it would have to be stored as filesystem metadata, I suppose). Text files would be "mime:text/plain", and Word documents could be "http://www.microsoft.com/filetypes/word/".

    Any good solution is going to be hard to make backwards compatable. I was kind of hoping that WinFS would provide a good solution, though.

  16. File association insanity with media files isn’t near as bad as it used to be. WinAmp, QuickTime, RealPlayer, and WMP all allow you to turn off whatever it is keeping them from re-associating themselves. The next dilemma is getting all super-duper programs out of the system tray.

  17. JM says:

    Usability rules:

    1. Applications produced by a vendor can grab their own vendor extensions once every five minutes

    2. Applications produced by a vendor can grab MIME extensions when they are installed only

    3. Applications produced by a vendor can not grab extensions for another vendor except by explicit instructions by the user

    Rules 1 and 3 don’t seem to help anything. Let’s say a vendor has an extension .foo (substitute appropriate vendor-specific extension). This vendor distributes a program that you use, and this program registers itself with its own extensions every 5 minutes. However, most of the time you use a 3rd party application, and you prefer to associate the .foo extension with that application.

    Every 5 minutes you’re going to lose the extension to the original vendor’s application. So while you’re in the middle of working, all the sudden when you double click a .foo file, the other program opens. Or every 5 minutes, the program you prefer to use prompts you whether to re-associate the file extension.

    You can, of course, substitute .DOC for .FOO and imagine MS Word re-associating .DOC from OpenOffice every 5 minutes if you want a practical example.

    Maybe I’m just not getting these proposed rules completely, however.

  18. mikey mikey mike-mike says:

    What if two programs were allowed to get exclusive locks on files? They could both lock the same file and the universe would surely cease to exist.

    Wait a moment, what are these flags I’m passing to _open()…oh sweet lord, RUN FOR YOUR LIVES!

  19. Edward says:

    John Siracusa covered Apples new UTI file association system in his review of Tiger.

    http://arstechnica.com/reviews/os/macosx-10.4.ars/11

    It uses a combination of the Java classpath scheme and an adapted MIME typing scheme to solve both the file type classification, extension duplication and third party extensibility problems in one go.

    Microsoft could do well to adopt a similar system. Its probably too late for Longhorn, but it would be a big step forward if it could be incorporated into WinFS and used by the shell in later releases.

  20. Anon says:

    <quote>

    "How do I mark my process so that it always the first/last to receive the system shutdown notification? I want to do something before/after all other programs have shut down."

    </quote>

    I know you can change the shutdown priority – although admittedly you can’t be guaranteed first or last to shutdown.

  21. oldnewthing says:

    "Looks like Microsoft to me."

    Perhaps I should move my blog then.

    "… Windows’ house".

    I live in the shell house. IE lives in the IE house. WMP lives in the WMP house. And even the shell house has many sub-houses I do not belong to.

    And why can’t I ridicule mistakes coming from my own house? Wouldn’t that just drive the point home even better?

    How do I write about programming in general without people assuming that I’m writing from a particular house? You said it can be done – please explain how.

  22. Norman,

    There are those of us who truly do like Raymond’s blog and really learn a great deal from it.

    Please stop trying to piss him off.

    James

  23. Ray Trent says:

    I’d like to point out that "what if two programs did this" isn’t really best thought of a way to shoot down an idea. It’s a way to help define what it is that you really want to do and understand the implicit limitations of the system.

    For example, let’s look at the "topmost" request and the supposed reductio ad absurdum. That’s not a logical contradiction, it’s only a contradiction if you add the extra constraints "and I get to say where my window appears and how large it will be". "True topmostness" becomes possible iff the window manager makes sure that any topmost windows can’t overlap.

    Now, sure, that will probably cause other questions to pop up, like "how to I make sure that I’m topmost and centered and large enough to read?" at which point perhaps there’s another solution.

    People usually want something for a reason. While we can’t give them everything, it’s worthwhile understanding the reasons and trying to figure out what we *can* give them.

    In this case, one thing that came out of this kind of effort is notification bubbles as a replacement for notification dialogs. Mind you, I’m not trying to claim that this was necessarily the best solution to that problem, just that it’s a form of lateral thinking that’s superior to shooting down ideas.

  24. Andreas Haeber says:

    James S.: +1 for that :)

  25. Maurits says:

    Let’s use Word / OpenOffice as the example.

    New Word document extensions:

    DOC: .com_microsoft_word_document (.doc)

    RTF: .mime_text_rtf (.rtf)

    When you install Word:

    Word grabs DOC and RTF.

    When you install OpenOffice:

    OpenOffice grabs RTF

    OpenOffice ASKS if it is OK to grab DOC.

    If you only install OpenOffice and not Word, then DOC will always open with OpenOffice.

    If you have both OpenOffice and Word installed, RTF will open in whichever application was installed most recently. Word can, if it chooses, either:

    * Unilaterally enforce its ownership of DOC (always check)

    * Allow the user to uncheck a "Keep DOC" box (let user decide)

    * Let DOC go where it will (never check)

  26. junfeng says:

    Thomas,

    But where do you store the default?

    I can just hijack where you store the default, and change it to me.

    We are back to the beginning.

  27. Dean Harding says:

    > What if two programs were allowed to get exclusive locks on files? They could both lock the same file and the universe would surely cease to exist.

    This is like how it is now with top-most windows. You can specify your window is "topmost" (i.e. WS_EX_TOPMOST) and it will be, until another asks to be "topmost".

    What people are asking is they want their program to be "always" topmost, which is like asking "I want to be the *only one* who can get an exclusive lock on this file". *That’s* not possible because then what if two programs want to be the only one to ever be able to get an exclusive lock on a file?

  28. Norman Diamond says:

    > http://blogs.msdn.com/oldnewthing/comments/426294.aspx

    Looks like Microsoft to me.

    > If the possibility leads to an obvious

    > contradiction or the violation of generally-

    > accepted rules of metaphysics, then you can

    > be pretty sure that Windows doesn’t support

    > it.

    Both the visible text and the obvious smiley are obviously written as a defence of Windows.

    > Um, last I checked I don’t work in Internet

    > Explorer’s house or Windows Media Player’s

    > house.

    Yes you do. Your house proved in court that Internet Explorer’s house is an integral part of Windows’s house. The first release of Windows 95 was missing an integral part of Windows 95.

    > Does everything I write have to be construed

    > as coming from a particular house? Can’t I

    > write about programming in general?

    The answers are yes and yes.

    (To clarify possible ambiguity: The second yes means yes you can.)

    Meanwhile, notice what boxmonkey and Ray Trent wrote: Sometimes the USER knows what the user wants. Not always, but sometimes. Even the Windows task bar provides the user with an option to not always make it topmost. If the user wants to set some other window to always be topmost, the user doesn’t need your ridicule. Of the user wants to set two other windows to always be topmost and then positions them to overlap, THEN the user needs your ridicule. But if the repositioning came from a finger bouncing on a mouse button when the user didn’t intend it[*], then the user only needs a warning message without ridicule.

    [* Like yesterday when Windows Explorer obediently moved a folder into another folder, as designed. Fortunately the Undo command worked as designed.]

  29. TheMuuj says:

    Store it wherever the list of most-recently used programs is stored in XP. Or has this been hijacked as well?

    The OS really needs a way for individual programs/libraries to have their own storage that only they can read/write to. Perhaps the values read/write are encrypted using the identity of the calling library (maybe full path for classic DLLs, a registered GUID for COM DLLs, and a Strong Name for .NET DLLs).

    I’m not certain that .NET Isolated Storage cannot be hijacked, so I can’t say that it would be a good model.

  30. Wound says:

    I’m gonna guess that one of the fighting apps was winamp or realplayer. It might even have been the two of them. Those guys were always trying to take over certain file types, and further more had agent apps to retain those associations

  31. Edward says:

    There was a supposed Longhorn screenshot floating around about a year ago that showed a similar user controlled scheme.

    The window title was something like "A new application has been installed that can handle this type of file" with a list for you to select the default.

    I guess it just monitors the registry for applications trying to modify the associations and lets you choose between the old app and the new one.

    I can’t the screenshot again at the moment, but it looks just like what would be required. I hope it hasn’t been cut.

    I expect applications would start to try to automate the dialog to select theirs as the default, but at least its a start.

  32. After reading for quite some time i get to post a comment:

    I wrote a small app for my own, sort of a quicklaunch bar, but free floating in the top right corner (used regions to make it two lines). Now i obviously want it to be topmost.

    I confess i hacked a if-i’m-not-topmost-anymore-i-set-myself-topmost-again function inside. I understand that’s not good, but what alternative is there for smaller things like this?

    Also, as a notice: That doesn’t even work too well, the window still gets obscured from time to time. So it’s not wrong to do, it also doesn’t work right!

    Is asking for an alternative not basically asking for a hole in the system? :)

    Raymond, keep going. The blog is a very interesting read, and has some neat details.

  33. Kevin Roth says:

    Regarding a "super-topmost" window… I frequently find myself typing something into a window (word doc, excel sheet, or whatever) when along comes some other program’s dialog box asking me some question or another. First off, I hate that a few keystrokes get lost when that dialog box takes focus. But much worse, I hate if I hit a key that causes an OK or cancel button on that dialog to receive a click event (e.g. the enter key, the escape key, or the "O" key in the case of "Ok"), thinking that I was still typing into my original window, and end up dismissing the dialog box before I get a chance to read it.

    Is there anything I can do (any little hackish program) or wait for (perhaps a new setting in Longhorn) that would force a window I’m actively interacting with (from the keyboard) to retain focus no matter what?

  34. Thomas says:

    <sarcasm>

    Ah but Raymond you forget: You have a blog, so you’re obviously always speaking on behalf of microsoft – ESPECIALLY as its on blogs.msdn.com.

    </sarcasm>

    Raymond –

    Wouldn’t you agree it would be better if the extension default handler were user controlled *only*?

    I very much dislike some app I install grabbing my set extensions.

    My propsal: Apps can associate themselves with an extension, this puts it in the open with list, as well as the default if theres not already a handler for said extension.

    If theres already a default handler, upon next opening of .foo, make it pop up saying "A new application has registered itself as supporting .foo, please select default application" with the current handler selected by default.

  35. James Schend says:

    I’m going to chime in and support the old Macintosh Classic way of solving this problem.

    Each program had a creator code, and then a list of filetype codes it supported. If Word saved a file, it had Word’s creator code, meaning if the user double-clicks it, it’ll open in Word all the time. Now, you could open that with OpenOffice by dragging&dropping or using the Open… menu item (because it was on OO’s list of supported filetypes, the OS allows this.) Now when you save the document in OpenOffice, now it has the OpenOffice creator code, and double-clicking will open the document in OpenOffice. (MacOS also kept a copy of default handlers for files downloaded from the Internet for when it only had a file extension to work with.)

    Of course, Apple ditched this system in OS X. And now they seem to have added another system which seems to do the same thing but is 10 times more complex for both programmers and users. Oh well.

  36. Craig Ringer says:

    Regarding the discussion of houses, I’d like to add that I think it’s already quite clear you’re speaking about programming under win32 in a general context, unless you say otherwise.

    Some folks will want to read more into what you say, and there’s not much you can do about it. That doesn’t mean they’re right though, or that everybody thinks that way. There are folks who see everything coming from microsoft as bad or some kind of rivalry, too… same deal.

    By the way, thanks for writing here. As an exclusively UNIX/Linux developer I’m learning a lot about how win32 works and "thinks." A lot of what you write – or the ideas behind it – applies equally well to cross platform and non-Windows apps, and is often very interesting. It’s also fascinating to learn about the different approach win32 has to so many things, and see the various advantages and disadvantages therin.

    Since it looks like I’m about to be helping port an app to win32, I expect to appreciate what I’ve learned here even more soon. The app is based on Qt from Trolltech – http://www.trolltech.com/ so the toolkit solves the hard 90% of the porting work, I just need to handle a few things like printing and file/save dialogs. (Arrrrggh, printing!).

    A "Windows printing for UNIX/Linux developers" article on MSDN would rock, by the way. A lot. Something that helped introduce poor, confused *nix developers into the way the win32 print system works and fits together would help *so* much. Doubly so if it discussed things like how to discover if a printer speaks PostScript (

    http://support.microsoft.com/default.aspx?scid=kb;en-us;264036), how to send PostScript direct to a printer if it supports it, how to send a raster bitmap via a GDI driver quickly and painlessly, pointed out the wonder that is GhostScript (http://www.ghostscript.com) for apps that generate their own PostScript, etc.

  37. Tempus says:

    I have to agree with Kevin,

    I’ve had this business of a dialog appearing as I’m typing happen, and it has to be one of the ‘super-topmost’ items on my peves list. Worst of all is of course that often spacebar just selects the default action, and we tend to hit it about every 3-6 characters on average, so a fast typest is almost always doomed to pick the default action when such a dialog pops up. (and needless to say you are totally borked if you are transcribing something and your eyes are on the hardcopy, and not what you are typing)

    In an ideal world the dialog would have some way to ‘know’ the user was typing as it popped up, and either buffer or refuse to act on that input until there was a brief pause.. if buffered it would be nice if the input could be somehow fired into either clipboard, or back at the app which had focus prior to the pop-up dialog asserting it’s dominance over the user’s focus

  38. Maurits says:

    I did some programming on Classic Macs – and a dirty little secret was that creator codes were just four-character extensions that couldn’t be made visible.

    As such they run into the same collision issues that extensions do.

    And worse… because the creator code is stored in the resource fork of the file, it’s an all-to-frequent occurence on a cross-platform LAN that a file will be saved in AFP but accessed via SMB, and the creator code will be lost.

    Ditching Classic helps solve this issue for newly created files… but if you have an archive of old files with creator codes embedded in them, be aware of this issue.

  39. Maurits says:

    An application that does a good job is Trillian – if I’m typing in Word, and Trillian pops up an IM window, the IM window is on top (I can read it) but Word still has the focus (whatever I type continues to go into Word)

  40. aran says:

    This is just an instance of a great rule for life, not just computer software. "What if everyone did this?" It’s an easy way of checking morality and sustainability.

    e.g. What if everyone drove for an hour a day?

    What if everyone stole software?

    What if everyone trolled on Raymond’s blog?

    What if everyone donated 10% to hungry people?

    etc.

  41. Moz says:

    "If Word saved a file, it had Word’s creator code, meaning if the user double-clicks it, it’ll open in Word all the time."

    The trouble was that it was very easy to get files onto the Mac that when you try to open them say "This file was created with Bloo, you must install Bloo to open it" when in fact you have 3 or 4 apps that could open it. Now, while I’m happy that Macs are really easy to use, I never could work out how to open files in another app without a lot of faffing around. Someone always had to show me, or else I’d have to use finder to find the application, open it, then use its file-open to find the file. And all of those things are explicity not made easy by Mac, presumably because they defeat the paradigm of "the user is too stupid to know what they want" that Macs are based on.

  42. Norman Diamond says:

    Tuesday, June 07, 2005 8:00 PM by oldnewthing

    >[Norman Diamond]

    >>"Looks like Microsoft to me."

    >

    >Perhaps I should move my blog then.

    I don’t know. But there’s an easier method, which we’ll get to in a moment.

    >>"… Windows’ house".

    >I live in the shell house. IE lives in the IE

    >house. WMP lives in the WMP house. And even

    >the shell house has many sub-houses I do not

    >belong to.

    Are you sure they’re houses and not apartments ^_^ Sorry for drifting off-thread. Anyway, Microsoft is a pretty famous house with lots of victims. Prior to blogs by yourself and your colleagues, about the only kinds of communications we got from that house blamed its bugs on victims. Readers see you posting from it and sometimes defending it, and that is why it still sometimes looks like you’re part of it. Next, how to fix that appearance:

    > And why can’t I ridicule mistakes coming

    > from my own house? Wouldn’t that just drive

    > the point home even better?

    Yes, that is perfect. When you do so, please say something like this:

    > And then you stop and think, "What if two

    > programs did this?" and realize that it’s a

    > bad idea. At least I hope you do.

    + Including if you’re one of my colleagues.

    And something like this:

    > to show me two very popular commercial

    > programs that both wanted to guarantee that

    > they

    + could be as arrogant as some Microsoft programs…

    I think a lot of people would understand it better then, and would agree immediately.

  43. James Schend says:

    Two comments about creator codes:

    1) Creator codes were *supposed* to be registered with Apple to guarantee uniqueness. An application using an unregistered creator code could potentially cause problems, yes, but there’s no way to engineer-away bad developers who don’t do their job.

    2) The "PC Exchange" control panel fixed the problem of not having the application with the correct creator code installed in System… 7.5? I don’t remember. I admit it was a problem early on, though.

    (Additionally, you could just drag&drop the file icon to the application, even in System 6, so I’m not sure why you had so much difficulty getting those files open.)

    In any case, I’m not saying it’s perfect, but it’s a lot better than file extentions (which requires the filename be changed) and MIME types (which don’t allow users to have text files owned by multiple applications), and a lot less complicated than the system Apple’s added to the new OS X now.

  44. oldnewthing says:

    Whether the application trying to be "the only one" or whether two programs involved in the file association fight were written by Microsoft or not is irrelevant to my point. Mentioning Microsoft – in my opinion – would only be a distraction.

  45. Hal O'Brien says:

    Norman:

    It very much reads like you’re saying you believe that all 60,000+ people at Microsoft should conform to some cartoonish hive-mind, and that Raymond is somehow not holding up his side of *your* bargain by behaving as a thoughtful, reasonable, intelligent individual.

    Well, guess what? Raymond isn’t responsible for the preconceptions you bring to the table. Just because things are distorted in your own mind doesn’t mean he has to emulate those distortions.

    Try sitting back and observing the universe as it is, rather than trying to shoehorn it into what you believe it to be.

    (And, just as Raymond is talking about general programming principles regardless of company, I’d say the above is true is in general, both pro and con. All human institutions have their foibles, as do all human beings. Funny that — you’d almost think *people* are involved, in all their squirmy individuality.)

  46. Norman Diamond says:

    Friday, June 10, 2005 4:50 AM by Hal O’Brien

    > Norman:

    > It very much reads like you’re saying you

    > believe that all 60,000+ people at Microsoft

    > should conform to some cartoonish hive-mind,

    No, I’m saying that all 60,000+ people at Microsoft are at Microsoft, and Mr./Ms. ferrier was right when referring to Microsoft as a glass house. Microsoft is also pretty famous for blaming victims for bugs which are Microsoft’s bugs, indeed for throwing stones from their glass house. It is a relief to learn that Mr. Chen’s intention is not to be that way, but the intention is not always visible. I sure do not think Mr. Chen (or 59,999+ others) "should" conform, I only observe that often they still *appear* to conform, and there are ways to *not appear* to conform. Also I sure wonder how you managed to avoid observing that.

  47. Good Point says:

    So, did "let’s allow installers overwrite poitions of the OS" (i.e. system DLLs) pass the "Imagine if this were possible" test?

  48. oldnewthing says:

    Clearly it was undesirable but how would you stop them? Remember, Windows 1.0 used floppy disks.

  49. It’s a complicated mix.

  50. There’s a lovely article on the new Configuration Management&amp;nbsp;system in .NET 2.0 on Paulo Rechiert’s…

Comments are closed.