I think that one of the beauties of striving for perfection is that, in doing so, you implicitly admit that you're imperfect. While those of us at MSDN Magazine certainly work very hard to make the magazine and the content we provide in it as accurate and as relevant as possible, we also realize that it's impossible to be perfect. And along those lines, we think it's important to openly acknowledge when we make mistakes, be they large or small. Of course, in order to minimize noise, we also need to strike a good balance between calling attention to every minor typo and making sure that you are kept up-to-date with important changes that have been made.
For changes on the larger side, we have our corrections page. Here we list all of the important changes we've made to content on our Web site based on inaccuracies that have been called to our attention or based on new information that invalidates something we said in the article. This list calls out the article in question, the type of change that was made, when the change was made, and so forth. On the article itself, at the top we make sure readers of the content know that something has changed below with bright red type:
New information has been added to this article since publication.
Refer to the Editor's Update below.
And in the body of the article, we use another bright red editor's update message to call out exactly what was wrong about what we printed. For example, Mark Novak and Andrew Roths wrote a great article for the September 2006 issue of the magazine on implementing secure protocols. We were slightly unclear with a statement made in the article about NTLM being disabled in Windows Vista, when we really meant to suggest that only NTLMv1 would be disabled by default. We fixed this with an Editor's Update:
Despite the best intentions of Microsoft, obsolescing NTLM 1.0 turned out to be a multiyear task spanning several OS releases. Windows Vista™ will be the first OS shipped by Microsoft that has it disabled by default. [Editor's Update - 8/14/2006: In Windows Vista, NTLM will not be disabled entirely. Only support for version 1.0 will be disabled by default.] Later in this article we discuss steps you should take to prepare your protocols for versioning.
There are other fixes that we just do inline without using an Editor's Update because we don't think they're important enough to warrant taking up your time. For example, in my .NET Matters column in the April 2007 issue of the magazine (it's not yet online, otherwise I'd link to it), I made several related changes to the code just prior to shipping the article, but unfortunately one of the changes accidentally got left out, leaving the code inconsistent. If you have a copy of the magazine in front of you, you can see it on p136 in Figure 2, appx 3/4 of the way down. The line "foreach(RM_PROCESS_INFO info in processInfo)" should have been "for(int i; i<pnProcInfo; i++)". We'll make this fix to the online version when the issue goes up on the site in a few weeks so that anyone just copying and pasting the code from the article will get it right. However, we decided that given that the meaning of the original loop doesn't really change (just switching from a foreach to a for as the iteration mechanism), you would be able to figure out what was meant, and as such it didn't warrant a whole big Editor's Update.
I'm curious to hear your thoughts on this. Are we drawing the line in a good place? Is the Editor's Update concept a good one in general?
ps I do realize the apparent irony in saying that we don't publicize small changes and then in the same blog post highlighting just such a change 😉