MSDN Alpha Available

CraigBlog

Syndication

For the past two years, I've been working on a complete overhaul of the MSDN publishing system. Tim Ewald was one of the principal forces behind this effort, but there were plenty of other really smart people involved, too: I am not at all kidding to say that merely keeping up with them was difficult.

Well, quietly, last week, the first publicly accessible incarnation of what we've been doing went up at http://msdn2.microsoft.com/library/. We weren't supposed to spill the beans yet, but Jenfeng Zhang broke the news, and we've gotten the go-ahead to blog about it.

This is a complete rewrite of the MSDN publishing engine, from the ground up; we started with zero code. Of course, you'll notice that the look-and-feel of the docs remains largely the same: most of the changes lurk beneath the surface. For example, the entire publishing process is now deeply XML-oriented. Content comes in as XML, gets processed as XML, gets stored as XML, and even gets rendered as XHTML. This is going to allow MSDN to introduce a lot more services around their extremely rich set of documents...just wait and see.

Of course, some of the changes are visible, too. You've probably noticed that the URLs are vastly improved. For example, you can now surf to http://msdn2.microsoft.com/library/System.IO.Compression.GZipStream to get documentation about the new GZipStream class. We call this an alias. The “real” URL for this document is http://msdn2.microsoft.com/library/zs4f0x23.aspx, where “zs4f0x23” is what we call the short ID for the doc. We did a lot of work to make sure that this identifier is stable, so that URLs won't break.

Even though I've now finished my involvement with the project, I'm pretty excited about this release. It is the most significant (largest scale) piece of software I've ever shipped, and a lot of my code is running in it. Not that I was the primary developer, but there will be MSDN devs maintaining my code for quite some time to come. I learned a ton, not only from Tim, but from a woman named Kim Wolk without whom this software literally never would have shipped. She hates it when I mention her name, but I think she deserves more credit on this release than any other single person on the team, and it would be a crime if no one came out and pointed her out as the hero of this project.

So go give it a test drive and let MSDN know what you think. It's only an alpha, so don't be too surprised if something breaks or doesn't work the way you'd expect, but take my word for it: this is a huge step forward for MSDN, and by extension, for the developers that rely on it.


Posted Sep 15 2004, 11:32 AM by craig-andera

Comments

seer wrote re: MSDN Alpha Available
on 09-15-2004 10:25 AM
For me it's great. Wihtout those tree control it work much faster. Earlier MyIE (which I use) was blocked for time of page load. I don't know why.
Also at last, it's possible to save printable version on my computer.

Nice work :-)
Service Station wrote MSDN v2
on 09-15-2004 10:25 AM
Craig wrote re: MSDN Alpha Available
on 09-15-2004 10:45 AM
Thanks! Generating the TOC was actually very, very complicated - I spent a lot of time working on the processing that creates that maps out the left-hand hierarchical navigation. And the problem still isn't solved in a general way.
Darrell Norton's Blog wrote MSDN version 2.0
on 09-15-2004 11:59 AM
MSDN version 2.0
Junfeng Zhang wrote re: MSDN Alpha Available
on 09-15-2004 1:42 PM
Ahh, sorry for stealing the thunder:) I just can't help spead the excitement.
Nic Wise wrote re: MSDN Alpha Available
on 09-15-2004 2:10 PM
Damn - EXCELLENT :) Looks very nice, and I can only assume that its very nice behind the scenes :)

I especially like the LACK of use of frames - that was my biggest problem with the current one.

Now, any chance of having SOME form of static version that I can put on an intranet server..... ;-) Even just for the namespaces....
Nic Wise wrote re: MSDN Alpha Available
on 09-15-2004 2:14 PM
Oh, and - any chance of getting someone to write some msdn articles on how it all works behind the scenes. I think it would be very interesting and helpful for a lot of people.

Cheers

Nic
Craig wrote re: MSDN Alpha Available
on 09-15-2004 4:21 PM
Jenfeng: no harm, no foul - the news had to get out sooner or later.

Nic: the debate over frames was a long and tough one. Fundamentally, the issue was, "How do we preserve a useful URL in the nav bar without having to reload the tree every time?"

As far as MSDN articles, that seems like a great idea. Unfortunately, I have no control over what happens. I'll pass the idea along, though.
Nic Wise wrote re: MSDN Alpha Available
on 09-15-2004 5:35 PM
From Craig: "How do we preserve a useful URL in the nav bar without having to reload the tree every time?"

By not using frames ;-) I can see what you would have this problem tho - there are a LOT of tree nodes in there. Maybe some other method would be good - eg, putting a search as the main navigation option, and being able to search for specific things, eg a class/namespace/property/article etc. Of course, with not having frames, google should now be able to do a much better job of indexing it ;-)

Anyway, cheers for the feed back and the view of the new stuff :) Look'in DAMN EXCELLENT :) ('cos lookin' good just doesn't cover it)
Philip Rieck wrote re: MSDN Alpha Available
on 09-15-2004 5:47 PM
1) Great. I especially love the fast rendering. linking to the online docs before would take a good five seconds to show what you wanted - with this, it's _fast_!

2) If the "alias" will never break either, I wish you'd show it in the address bar any time it's available. I'd be nice to know (for example) what the alias was to the authenticationModules element reference for the network config settings schema. I can't even guess - if it has one.

3) I really like pages more like this: http://msdn2.microsoft.com/library/620b4fzf.aspx that show a description/summary under each link, rather than pages like this: http://msdn2.microsoft.com/library/x53a06bb.aspx or this: http://msdn2.microsoft.com/library/ed8yd1ha.aspx

Not sure what the plan is with the lists (I saw at least four different styles, table, list, table with desc, list with desc), but I like the two with summaries.


And, while I know that this is a *Super* early preview of your great new site (and it is cool), I want to say this: Search is King. Try searching for IPost - nothing. nada. Search for IPostBackDataHandler - 121 results. Some of the searches are great - "Regular" gives Regular Expressions as the first hit. However, "Dispose" is not usefull at all. On the other hand, I'm impressed that the first hit for a word like "using" is exactly what I want.

Sorry to make this so long, but one more thing on the search - on the search results for, say, "Filter" I have a bundle of "Filter Property" links. It's very difficult to see what types these properties are on! Please make it obvious. I'd rather see "DocumentList.Filter Propery" than "Filter Property" with "DocumentList.Filter" in tiny, tiny type at the end of a difficult to ready summary. I can see that the search results page is a work in progress, so I have high hopes!


Very awesome - please send kudos to your team from at least one happy nearly anonymous developer!

Craig wrote re: MSDN Alpha Available
on 09-15-2004 5:53 PM
Thanks! I'll pass along your comments.
Joel Ross wrote New MSDN Site (from: Joel Ross)
on 09-15-2004 7:15 PM
Extreme RAD from a Trading Desk wrote MSDN2 and WinFom tricks
on 09-15-2004 11:30 PM
Ivan Towlson wrote re: MSDN Alpha Available
on 09-16-2004 1:45 AM
What are the plans for versioning with the stable URLs? Presumably if I navigate to .../System.IO.FileInfo I get the docs for FileInfo in the then-current version of the framework. If I need to find out the behaviour in an older version of the framework (say, the current version is Orcas and I'm still on Whidbey), will there be a stable URL for that?

For example it might be useful to rule that although .../ClassName.aspx goes to the current version, .../20/ClassName.aspx always goes to the Whidbey version. Just a suggestion.

Nice touch that you don't even have to enter the .aspx extension by the way.
Digital Thoughts wrote New MSDN Documentation for Visual Studio 2005
on 09-16-2004 2:45 AM
Digital Thoughts wrote New MSDN Documentation for Visual Studio 2005
on 09-16-2004 2:46 AM
Craig wrote re: MSDN Alpha Available
on 09-16-2004 3:54 AM
On versioning, I should note that aliases are not intended to be "stable". System.IO.FileInfo can point to anything, and will probably be set up to point to the latest version.

There is a mechanism for versioning built in to the URL scheme. I no longer have access to the code, so I can't remember exactly what it is (we changed it a lot right towards the end), but there's something like a query string parameter that you can specify to say which one you want. Similarly for language.
Sean Gephardt wrote re: MSDN Alpha Available
on 09-16-2004 9:32 AM
Thanks for all the hard work, Craig!
Dave Donaldson's Blog wrote MSDN2
on 09-16-2004 9:43 AM
Dave Donaldson's Blog wrote MSDN2
on 09-16-2004 9:44 AM
on 09-16-2004 9:48 AM
on 09-16-2004 9:49 AM
red_avni wrote re: MSDN Alpha Available
on 09-16-2004 2:48 PM
Two things wrong with one of the nav's css classes. I've snipped the non-relevant styles.

.TocPane a {
height:100%;
border: solid 1px F0F0F0;
}

Can not set height on an inline element(!!), and a bit of dyslexia on the border...need to flip the size and style.

This is what they should be changed to:

.TocPane a {
display: block;
border: 1px solid #F0F0F0;
}

These two lines are currently breaking every browser except IE/Win. How IE is even managing to not break is what boggles me.
Craig wrote re: MSDN Alpha Available
on 09-16-2004 3:44 PM
Thanks - I've passed your comments along to the team.

Oh, and it wasn't my fault. :)
Tim wrote re: MSDN Alpha Available
on 09-17-2004 4:33 AM
Actually, the aliases should be stable and use the same versioning technique used for short ids. That is, you'll be able to specify a "version independent" URL which takes you to the latest doc or a "version dependent" URL that takes you to a specific version. There's only one version in the system right now, so this is not yet an issue.

Tim-
Nick Parker wrote re: MSDN Alpha Available
on 09-17-2004 9:19 AM
Craig,
I just wanted to let you know I have written an IE toolbar addin that will allow you to enter the namespace or class and be redirected to the new MSDN documentation. Take a look at the article and tool here:

http://www.codeproject.com/tools/netnamespace.asp

-Nick Parker
Dimitri Glazkov wrote re: MSDN Alpha Available
on 09-17-2004 9:40 AM
Craig,

Good stuff! I do think that the expandable tree, while awesomely cool, affected tactile response of the site and was probably hated by most users. Getting rid of it is a good call.

However, I think the new navigation can still be improved upon.

1) You are creating ambiguitiy by mixing "links to content" and "content hierarchy" concepts. For instance, Click on "General Reference -> Configuration" files. Whoops! It's a STARGATE! We've been transported into a totally different section of the site. The easiest solution is to add an icon to differentiate which items are "links" and which are "children".

2) "The deeper you are, the less space you get" problem. It is simply not fair for items like "ASP.NET Configuration Sections" to have only 60% of the space than the root items. You can try to keep the tree shallow, but I am afraid the problem will always hang over your head. A while back, I've come up with a navigation schema that provides generic tree view with only 2 levels exposed at a time. It is now implemented on a dozen of sites and seems to work pretty well. Take a look:

http://www.ccc.uab.edu/

Go to "New Patients", "Support Groups and Services", "Questions about Support Groups". See how the tree "folds?". Let me know if you need more explanation.

3) The breadcrumb is useless - it is duplicated by the tree view, which provides a lot more intuitive presentation. Ditch it.

HTML code is not bad, but can still be worked on:

1) Eliminate useless ids in HTML elements. I estimate that you could probably save a couple of grands in traffic costs if you take them out.

2) Move embedded styles into the separate CSS file. Speaking of embedded styles, you will have a much cleaner HTML if you preserve the hierarchy of the TOC in your HTML, rather than calculate margin offset for each level. If your child topics are nested within each parent topic (using UL element, hopefully), you only will need to specify margin once.

3) I see that you guys use XSLT to render HTML. Take a look at "exclude-result-prefixes" attribute of the stylesheet element. It will help you strip out the xmlns:msdn namespace declarations -- you don't need them. Again, I just saved MSDN a couple of grand in monthly traffic costs. Hey, maybe I need start getting kick backs or something? :)

4) When ratings and page tools first came out, it was acceptable to retrofit them into the old system using IFRAMES. But for the new design? Come on.

Let me know if you need any help in getting those done. I will more than happy to assists with any changes that I suggested.
Sanjay wrote re: MSDN Alpha Available
on 09-17-2004 10:33 PM
One major request of mine is to allow the left menu and the top MSDN header bar to be collapsed for a "clean" view. When opening MSDN on a small screen (like the 800x600 screens we use for some embedded platforms), the nav/menu bars end up taking almost 40% of the screen.
James Chaldecott wrote Code samples broken in FireFox
on 09-20-2004 1:07 AM
At first glance this looks very nice, but it's a little bit broken in Mozilla Firefox.

Firstly, the highlight boxes around the TOC content overlap when a line is wrapped (which is a lot in Fx). This is what red_avni was talking about, and I can confirm his fix.

More importantly, the style used for code blocks isn't working properly. The whole code sample is running together as a single (wrapped) line.

It looks like the culprit is :

pre
{
/* margin: 0px 0px 0px 0px; */
white-space:normal;
word-wrap:break-word;
word-break:break-all;
}

Why is that "white-space:normal;"? Shouldn't it be "pre"? I used the DOM Inspector to change it to "pre" and it all displayed fine.

Good work, though. Like I say, this looks nice. Is any of the legacy content going to be migrated?

Mike Taulty's Weblog wrote MSDN V2?
on 09-20-2004 8:11 AM
Service Station wrote MSDN v2 integration has already begun
on 09-20-2004 10:27 AM
Craig wrote re: MSDN Alpha Available
on 09-22-2004 12:46 PM
Nick: cool tool. :)

Dmitri: I'm not quite sure how you think an *ex* contractor is going to help you get work at MSDN. :) But I've passed your comments along to the team.

James: thanks - I've passed your comments along to the team.

As you can see, the site still needs work, like any alpha. Your comments are very helpful in helping them find what's broken!
Craig wrote re: MSDN Alpha Available
on 09-22-2004 12:48 PM
Sanjay: thanks I've passed your suggestion along to the team.
Dimitri Glazkov wrote re: MSDN Alpha Available
on 09-30-2004 10:24 AM
Craig, who said anything about working at MSDN? I am happy where I am, thank you very much. I was just trying to help out fellow colleagues.
MSDNTest's WebLog wrote MSDN Alpha RTW
on 09-30-2004 10:32 AM
Craig wrote re: MSDN Alpha Available
on 09-30-2004 12:06 PM
Sorry Dmitri! I misunderstood your altruistic intents. My apologies. Like I said, I've passed along your comments to the team.
MSDNTest's WebLog wrote MSDN Alpha RTW
on 09-30-2004 12:39 PM

Add a Comment

(required)  
(optional)
(required)  
Remember Me?