Developer's musings
Microsoft breaks the contract

[Rant mode on]

Another week where I've been very quiet... This time, though, I find I'm actually quite angry at the reason. For the last three-odd weeks, I have been writing a help system and porting the Pegasus Mail help to it. Why have I been doing this? Because Microsoft broke its contract with developers.

Ever since it was first released, Pegasus Mail has used a Windows help system called WinHelp: WinHelp was a standard part of the operating system and worked quite well. Over time, for reasons I've never really quite understood, Microsoft drifted away from the WinHelp model towards a new help system called HTMLHelp, which uses Internet Explorer to display help pages. I personally never thought HTMLHelp offered any real advantages; furthermore, changing to HTMLHelp would have taken considerable time and effort, and

worse, would have required all my translators to go through the same

awful conversion process, something I wouldn't wish on anyone. I and my translation teams have made a very extensive investment of time and effort in WinHelp, and based on the feedback I regularly get from people, nobody was noticeably unhappy with it (one of the more regular pieces of "nice" feedback I get from people is how comprehensive the help system is).

Enter Windows Vista. Quite late in the pre-release process for Vista, Microsoft suddenly announced that they didn't like WinHelp any more, they didn't think anyone should be using it, and they wouldn't be including it in Vista. What's more, they specifically forbade developers dependent on WinHelp from distributing it with their applications. Microsoft's position was apparently that everyone should be using HTMLHelp, regardless of the effort, expense or practicality of doing so. I also have to say that Microsoft offered exactly zero assistance in moving between formats; there was an existing conversion tool, but it was useless.

That's not the end of the story, though. At some point in the endless patching process for Internet Explorer, Microsoft made a change that effectively crippled HTMLHelp: if an attempt was made to display a help file stored on a shared volume (for instance, a file server), the help file would simply fail to work with an incomprehensible error message ("Action cancelled"). While there are some possible fixes for this problem, they all involve an overall reduction of security and are fairly technical (registry editing). What's more, because the problem would occur in our help file, people would come to *us* for technical support on the issue, even though it's actually a bug in a Windows system component.

So here we are: under Vista, the only help system available to us is one which will fail to work in one of the most common installation scenarios for Pegasus Mail. The one that works fine (WinHelp) can only be downloaded from Microsoft by the end user - we can't supply and install it ourselves. From a developer's perspective, this is a nightmare. In the end, the ONLY solution available to me was to write my own help compiler and display subsystem, so I can continue to use the sources that I and my translators have so laboriously produced. This has not been an easy process, but I think the results are good: my testers got the first working cut of this code last night, and so far the feedback has been quite positive.

But I can see you're asking why I claim that Microsoft has broken a contract... ?  When programmers develop for an environment like Windows, they use programming interfaces called "APIs", provided by the environment's developer - in this case, Microsoft. The API is a contract between Microsoft and the developers who use it, a contract that says "Provided you follow the rules we lay out in the documentation, we'll guarantee that your program will work as you expect, and that it will continue to work as you expect in future". In this case, Microsoft have reneged on the deal. Instead of simply leaving developers like me in the lurch, they could have done any of a number of things: they could have allowed us to distribute WinHelp with our applications; they could have provided proper transition tools; they could have ensured that the system they WERE providing actually worked properly... But they did none of these things. They didn't even give much in the way of warning (six months is far from adequate for something as important and substantial as a help system).

So, I've written a complete help system. I think it's probably quite a lot better than what we had, and it's at least as good as HTMLHelp; what's more, it will work correctly even where HTMLHelp does not. But I should not have had to waste a month of my life doing this when there are so many more interesting and important things to do. I really wouldn't have thought Microsoft could have sunk much lower in my estimation, but it's one of their talents that they always seem to be able to do so. Grrr.... [8o|]

[ Rant mode off ]

-- David --

<p>[Rant mode on] Another week where I've been very quiet... This time, though, I find I'm actually quite angry at the reason. For the last three-odd weeks, I have been writing a help system and porting the Pegasus Mail help to it. Why have I been doing this? Because Microsoft broke its contract with developers. Ever since it was first released, Pegasus Mail has used a Windows help system called <span style="font-style: italic;">WinHelp</span>: WinHelp was a standard part of the operating system and worked quite well. Over time, for reasons I've never really quite understood, Microsoft drifted away from the WinHelp model towards a new help system called <span style="font-style: italic;">HTMLHelp</span>, which uses Internet Explorer to display help pages. I personally never thought HTMLHelp offered any real advantages; furthermore, changing to HTMLHelp would have taken considerable time and effort, and worse, would have required all my translators to go through the same awful conversion process, something I wouldn't wish on anyone. I and my translation teams have made a very extensive investment of time and effort in WinHelp, and based on the feedback I regularly get from people, nobody was noticeably unhappy with it (one of the more regular pieces of "nice" feedback I get from people is how comprehensive the help system is). <span style="font-weight: bold;">Enter Windows Vista</span>. Quite late in the pre-release process for Vista, Microsoft suddenly announced that they didn't like WinHelp any more, they didn't think anyone should be using it, and they wouldn't be including it in Vista. What's more, they specifically forbade developers dependent on WinHelp from distributing it with their applications. Microsoft's position was apparently that everyone should be using HTMLHelp, regardless of the effort, expense or practicality of doing so. I also have to say that Microsoft offered exactly zero assistance in moving between formats; there was an existing conversion tool, but it was useless. That's not the end of the story, though. At some point in the endless patching process for Internet Explorer, Microsoft made a change that effectively crippled HTMLHelp: if an attempt was made to display a help file stored on a shared volume (for instance, a file server), the help file would simply fail to work with an incomprehensible error message ("Action cancelled"). While there are some possible fixes for this problem, they all involve an overall reduction of security and are fairly technical (registry editing). What's more, because the problem would occur in our help file, people would come to *us* for technical support on the issue, even though it's actually a bug in a Windows system component. So here we are: under Vista, the only help system available to us is one which will fail to work in one of the most common installation scenarios for Pegasus Mail. The one that works fine (WinHelp) can only be downloaded from Microsoft by the end user - we can't supply and install it ourselves. From a developer's perspective, this is a nightmare. In the end, the ONLY solution available to me was to write my own help compiler and display subsystem, so I can continue to use the sources that I and my translators have so laboriously produced. This has not been an easy process, but I think the results are good: my testers got the first working cut of this code last night, and so far the feedback has been quite positive. But I can see you're asking why I claim that Microsoft has broken a contract... ?  When programmers develop for an environment like Windows, they use programming interfaces called "APIs", provided by the environment's developer - in this case, Microsoft. The API is a contract between Microsoft and the developers who use it, a contract that says "Provided you follow the rules we lay out in the documentation, we'll guarantee that your program will work as you expect, and that it will continue to work as you expect in future". In this case, Microsoft have reneged on the deal. Instead of simply leaving developers like me in the lurch, they could have done any of a number of things: they could have allowed us to distribute WinHelp with our applications; they could have provided proper transition tools; they could have ensured that the system they WERE providing actually worked properly... But they did none of these things. They didn't even give much in the way of warning (six months is far from adequate for something as important and substantial as a help system). So, I've written a complete help system. I think it's probably quite a lot better than what we had, and it's at least as good as HTMLHelp; what's more, it will work correctly even where HTMLHelp does not. But I should not have had to waste a month of my life doing this when there are so many more interesting and important things to do. I really wouldn't have thought Microsoft could have sunk much lower in my estimation, but it's one of their talents that they always seem to be able to do so. Grrr.... [8o|] [ Rant mode off ] -- David -- </p>

I just ran into this. I'm a Vista Business user, and was having problems with wheel scrolling in my version of Pegasus. Went into help to look, and got the "no help" stuff.

So if you need anyone else to help with this Vista stuff, drop me a line, be glad to help out. Been a Pegasus user for over a decade, so I'm somewhat familiar with the program. :)

I just ran into this. I'm a Vista Business user, and was having problems with wheel scrolling in my version of Pegasus. Went into help to look, and got the "no help" stuff. So if you need anyone else to help with this Vista stuff, drop me a line, be glad to help out. Been a Pegasus user for over a decade, so I'm somewhat familiar with the program. :)

Hi !

Well, it is the case that you were very quiet these past weeks, and I thought that you were on vacation. What a fool, hey ? Instead, you were fighting trough the jungle of help coding. Anyway, I am glad you found your way out and also kept the past work in the process, since it is very true that the translation is very good. Maybe it is time now to go on vacation ?

Cheers !

Ginhead.

Hi ! Well, it is the case that you were very quiet these past weeks, and I thought that you were on vacation. What a fool, hey ? Instead, you were fighting trough the jungle of help coding. Anyway, I am glad you found your way out and also kept the past work in the process, since it is very true that the translation is very good. Maybe it is time now to go on vacation ? Cheers ! Ginhead.

I cannot imagine you are the only developer with this problem. Although i'm too lazy to google around to inventory the worldwide need for your home grown help system I suggest you try to market this as a seperate tool.

Cheers!

Loek Gijben

I cannot imagine you are the only developer with this problem. Although i'm too lazy to google around to inventory the worldwide need for your home grown help system I suggest you try to market this as a seperate tool. Cheers! Loek Gijben

I couldn't understand why MS started the move away from WinHelp either. After all the system worked, although that's never stopped them before.

Without having actually created any HTMLHelp myself I assume their reason was something to do with making it easier to align with online docs.

It seems to me a good solution is to just bypass MS altogether and create documentation in pure HTML, which a lot of (esp. cross-platform) developers seem to be doing. At least that way you're less likely to be ambushed by MS dropping backwards compatibility with their own products.

No *guarantee* they won't do it with recognized standards though.

I couldn't understand why MS started the move away from WinHelp either. After all the system worked, although that's never stopped them before. Without having actually created any HTMLHelp myself I assume their reason was something to do with making it easier to align with online docs. It seems to me a good solution is to just bypass MS altogether and create documentation in pure HTML, which a lot of (esp. cross-platform) developers seem to be doing. At least that way you're less likely to be ambushed by MS dropping backwards compatibility with their own products. No *guarantee* they won't do it with recognized standards though.
live preview
enter atleast 10 characters
WARNING: You mentioned %MENTIONS%, but they cannot see this message and will not be notified
Saving...
Saved
With selected deselect posts show selected posts
All posts under this topic will be deleted ?
Pending draft ... Click to resume editing
Discard draft