TimSull's Blog

The lowdown on Help in VS Whidbey

Hello world, my name is Tim--though I also respond to TimSull, Timmy, and Timmaaayyy--I'm a developer on the Visual Studio IDE team...welcome to my blog.  I work on a number of different features of VS including Help Integration, Community Integration, Commands and Menus, Side-by-Side Versioning, and Import/Export Settings. My plan for this blog is mostly to talk about some of the cool stuff we're doing for the Whidbey release and to provide a forum for developers out there to give us feedback about our plans.  I'll try to go through my features one by one and tell what I can about our plans.  If people respond and want to know more about a particular area, I'll go into the gory details.  I must say, given that I'm still new to the whole blogging fad, I'm a bit skeptical that anybody is actually going to read my blog.  But what the heck, I'll just throw this one out there and see what happens.

 

IDE Help and Community Integration for Whidbey:

Help and Community are getting a lot of attention in Whidbey. We've received an enormous amount of feedback from customers expressing their disdain for the Help that shipped in VS 2002 and 2003.  Developers consistently complain that the help interface makes it too hard to find the help content they're looking for.  And they complain that when they finally do find 'the right topic' it's often lacking in some fundamental way.  We're trying to address these problems in a few different ways.

Improved content:

This isn't actually something that my team works on, but it's obviously really important, so I want to mention it. The editors that are responsible for writing the docs have heard your feedback and are working hard to improve the quality of the help content. For instance, C++ developers have made it clear that they don't like seeing API reference that says only 'The FooBarEx() api takes parameters int x and void *y and returns 0 if successful', with no further discussion. If documentation barely says anything more than the SDK header file, it's obviously ...umm... lacking. VB developers have told us they don't want docs that seem to be written for or by C++ developers . For the VB developers , higher level content and task based help are clearly the way to go. And virtually every developer we've ever talked to, regardless of their language of choice, has requested more and better quality code samples in topics.  All the people that are working on the help content are aware of this feedback and are working to address it in the Whidbey release.  Unfortunately, due to the sheer number of help topics in MSDN and a few scheduling and organizational issues, I can pretty much guarantee that a number of help topics will still be sub-par when we ship Whidbey. But hopefully the most important topics will have been rev'd and will be much improved.  If you've got a rant about the help content, or if you have particular topics you'd like to see fixed in Whidbey, let me know and I'll make sure the documentation teams hear your feedback.  Also, make sure to use the 'send feedback' links whenever you find an MSDN topic that's not to your liking; those bits of feedback are all read by actual people and they result in bug entries that someone will be responsible for fixing.

Improved access to content:

In VS 2002 & 2003 you have 5 ways of getting help:

  • F1 -- Completely hit or miss, sometimes it works remarkably well, sometimes it shows the Dynamic Help window which is always trying to give you help on the 'Code and Text Editor', which is never what you're looking for.
  • Table of Contents -- I don't know anyone who has successfully found a specific topic they were looking for by navigating down the TOC tree.  The TOC is most useful for finding topics that are similar or related to the current topic, using the 'Sync Contents' button on the Web toolbar.
  • Index -- If you already know the API or class name you're looking for then the Index works well, otherwise you're out of luck since this window is virtually useless for finding conceptual topics.
  • Search -- 500 results in nearly random order, choose the topic you want based on its Title and Location--unfortunately the titles are really tough to differentiate since there are lots of duplicates and similarly named topics.
  • Forgo the integrated help experience and search using the web -- Has mixed results depending on your search engine of choice, forces you to leave the IDE, which implies a mental context-switch and usually a loss in productivity.

In Whidbey we're making improvements to F1 and Search and we're adding some completely new interfaces to access help content.

  • F1 -- Better metadata on help topics will make F1 work more consistently even if you're not in the context of a project, or if you're writing code in native C++ where we usually don't have fully namespaced keywords to lookup. Better disambiguation UI will show topics that are more targeted to your selection; you won't see the same topics all the time.  You'll also have the option of going online for F1.  This will have 2 beneficial effects: First, you'll get the very newest help topics. And second, if you're not satisfied with your F1 results, you'll be able to let MS know so we can try to fix whatever bug is causing F1 to be broken.
  • Search -- Filtering will be more easily adjustable than it was in VS2002 and 2003, and will do a better job of filtering away many of the topics you'll never have an interest in. (Topics on DirectX, the Speech SDK, Commerce Server 2002, etc. might be great, but not when they show up at the top of the search results list when you're trying to learn about a TreeView control for C#.) Also, the search results will show a dynamically generated abstract based on the text of the topic to go along with the Title and Location. We hope this will make it much easier to tell if a topic will be worthwhile before you click on it and wait for the fancy script and graphics to render in the web browser window.
  • How do I... -- This is an entirely new view into the help system. It's a hierarchical organization of common tasks a developer is likely to encounter. Each developer segment (VB, C#, Web, etc.) will have its own hierarchy containing roughly 200-400 tasks. Each task will contain carefully reviewed editorial text along with sample code that can be copied and pasted into the VS editor. The documentation teams have been collecting user feedback to help determine which tasks to include in the hierarchies. If you have ideas for tasks you'd like to see in a How do I... page, let me know and I'll pass them along to the right people.  You can think of How Do I... as a hand-picked, carefully designed subset of the Table of Contents. Check out these screen shots from live builds: How Do I... hierarchy page, WinForms Controls category page.
  • Help Favorites -- previous versions of VS and MSDN contained an integrated favorites tool window, but it was just the IE favorites window, not help-specific favorites. Our initial surveys and focus groups have indicated that developers think help-specific favorites will be really useful.  People have also shown a lot of interest in the ability to save favorite search queries so they can easily go back to interesting sets of search results.

Inclusion of online content:

There are numerous things that online help can provide above and beyond what you already get with local help:

  • Smaller install size: MSDN is on the order of 2 GB when installed locally, online help has the ability to forgo that use of hard disk space.
  • Newest content: if content gets updated, the only way to get that with local help is to acquire and install one of the MSDN Quarterly updates (very heavyweight process).  With online help, you get the newest content automatically.
  • Ability to provide feedback to MS: Online help makes it easy to tell MS that a particular help topic is insufficient.

Inclusion of Community content:

Going online to access MSDN content has its benefits, but the biggest win in searching online is really the ability to access living content.  If you look at some of the fantastic work that Community-based web sites like .Net247, CodeProject, ASP.Net, and others have done, it's clear that static content published to the web can never be as rich as content that is provided by members of the developer community.  Don't get me wrong, MSDN's API reference is obviously important.  But if you open that content up to be annotated and extended by people in the community, then it becomes a much more powerful resource.  It's really a complementary relationship: MSDN content provides breadth of coverage while the Community fills in depth in the areas that are most important to developers in the real world.  Community content also helps address the need for more code snippets.  If I need help using a DataGrid control, I definitely prefer to look for code snippets at .Net 247's DataGrid page than at MSDN's static DataGrid class topic.  MSDN's code snippet looks very comprehensive, but .Net 247's page provides so much more variety, and it's directly linked to a forum where I can ask questions about the code and interact with the code authors or other forum members.  The experience at the Community-based site is much richer because the content is far more dynamic and because I can interact instead of just reading.

So how does this apply to VS?  In Whidbey we have partnered with a number of Community sites that will allow MS to aggregate and search their content from the VS client.  This means that when you search for DataGrid from Visual Studio Whidbey, you'll see a list of local help MSDN topics, a list of MSDN online topics, and a list of links to pages on CodeWise web sites.  So developers will have simple, direct access to the newest and most popular code samples and technical articles in the community.  You'll see living content alongside the comprehensive static content from MSDN.

In our focus groups, we've found that many of the more savvy developers out there currently do a 2-stage search for help content.  First they search in local help or MSDN Online, and then they search Google.  The goal of integrating community content into the VS client is two-fold: First, we want to help our not-so-savvy customers get access to all the great community content out there.  Second, we want to make finding help content a seamless experience where you only have to learn and use one UI, and you never have to leave the IDE.  The main outstanding question is: Will the quality of integrated VS search results be comparable or better than the search results from today's 2-stage search.  Because of our highly customized filtering and scoping, we think that they will, and when you combine that with having a single search entry point and a unified search results interface, our solution should be a big productivity win.

But what does it all mean (to you)?

When I look at the full list of changes we're making to improve Help in Whidbey I think they'll add up to a big productivity win for our customers.  But I'd love to hear what the developers out there think of our plans.  Are you psyched about what we're bringing to the table in Whidbey?  Do you wish we were focusing our efforts in different places?  Let us know what you think!

Published Tuesday, November 11, 2003 4:26 AM by timsull
Filed under: , , ,

Comments

 

Chris Jackson said:

There are PLENTY of things that I think. First of all, I use the table of contents constantly, and I am pretty routinely aggravated that I can't always get to what I want as quickly as I want. For example, when developing for the web, I have two sections that I want open: the .NET Framework Class Library reference (currently I have to drill through .NET Development\.NET Framework SDK\.NET Framework\Reference\Class Library) and the web object reference (Web Development\HTML and Dynamic HTML\SDK Documentation\Reference). I wish I could bubble these up to the top! You have the concept of favorites for a particular page - if you could figure out a way to handle the concept of favorites for a folder, so I can then drill in, that would be great. Also, when I'm working on the guts of Windows, it's often ambiguous as to whether I should be in the shell docs, the UI docs, or some other folder. Why do you limit folders and files to having a single parent? When things have two possible ways people might think to get there, just make both ways get you there. Also, I love the idea of dynamic updates. When I hit a page, check the web for the latest version. But, I am not always online, so please cache the entire library and then update as appropriate. You do have to continue to handle the disconnected scenario, and when you talk about not having the 2GB install, I get worried. I'm fascinated to see how you handle community - I like the idea of annotations a LOT, and I am wondering how you will integrate things such as blogs and newsgroups and community forums and web sites.
November 11, 2003 6:01 PM
 

Robi Khan said:

Sounds great. Especially fixing the maddening F1 problem. My gripes: 1. Performance: the help system is way too slow to startup and slow to find and display things. I find the Web MSDN help faster sometimes. I can launch IE, navigate to the web help, search and retrieve info faster than it takes devenv help to come up. And this is on a 2.4Ghz P4. 2. Filters: We're doing mostly WinForms programming and get annoyed at constantly getting WebForms classes in our search results. Finer grained filters would be nice, either reasonable presets or customizable. 3. Language filtering: We do C# and it's tedious to have to scroll past VB,C++ and JScript code all the time. I'm sure those launguage users feel the same way. If I have the Visual C# filter on please hide the other languages in the method signatures and samples. 4. Flatter view of members: When dealing with overloading you have to find the method, the drill in to see the overloads. I would be much easier to just see an expandable/collapsible view of the overloads in the main member list.
November 14, 2003 8:49 PM
 

Tim Sullivan said:

Chris and Robi, thanks for your feedback! My responses are inline... (Chris) (paraphrasing) The TOC is badly organized and difficult to navigate. We've definitely heard this complaint before. Because the UI of the TOC is tightly bound to the underlying infrastructure, it would be very difficult to allow customization of the TOC, e.g. dynamically rearranging nodes. But as you point out, we could make things easier by providing favorites for TOC folders. I like this idea, and I also like the idea of having a Back-Fwd ability in the TOC. I plan to propose these ideas to the rest of the feature team soon; if there is enough support perhaps this could make it into Whidbey. (Chris) (paraphrasing) The topics don't always fit well into a TOC structure, a web is more appropriate. I agree here too, but I'm not sure there's much we can do about this from the product perspective. One way to get around this shortcoming is to find your way into the TOC by selecting a topic that is similar to what you want via the index or search, then clicking the Sync to TOC button on the web toolbar. Often you'll find the topic you're looking for in the 'neighborhood' of a similar topic. (Chris) (paraphrasing) I want to have local help installed, but I also want to take advantage of the goodness of online help. No worries, Chris, installing local help will not prohibit you from accessing online features. We're still working out how dynamic updates will work, and I don't think there is a full solution yet. I think we will have the technology in place to look on a per-topic basis for a more recent version online, or at least to go from the local version of a topic to the online version. If there was a button that took you from a local topic to the online version of the topic, would that satisfy most of your needs? (I'm not certain we can produce this, but I'd like to get a sense of its value.) (Chris) (paraphrasing) How will all this community stuff show up in the IDE? Newsgroups, forums, and web sites that are part of the CodeWise program will come back as part of Community search results. Annotations will be an intrinsic part of the online versions of the topics. Blogs and RSS feeds are on the radar, but we don't have a good story for them yet. If you have ideas on how you'd like to see them integrated, let me know. (Robi) (paraphrasing) The help system is too slow. Yes it is. In Whidbey, I can't promise that it will be much faster to startup, although it may improve slightly. We are improving the speed of search by doing all of our searches on a background thread and showing search results as soon as their available. The other major slow point is the time it takes to render the topic in IE. I know there are people working on that, and I've just entered a bug to let them know you want it improved. :-) Are there other specific places that you'd like to see help speed up? (Robi) (paraphrasing) Need finer grained search fitlers. We're planning to deliver this for Whidbey. You should be able to select language = C#, technology = WinForms, and you won't see Web forms topics in your search results. (Robi) (paraphrasing) Show me only C# stuff in the help topics. This is also planned for Whidbey. If you select the C# help page, then all topic code samples and function signatures will be filtered by default such that only C# code will show up. (Robi) (paraphrasing) Don't make me navigate twice to see overloaded members. I run into this constantly as well, and I find it really annoying. I've just entered a bug to track this issue. Thanks for the comments and keep them coming!! -Tim
November 14, 2003 11:20 PM
 

Robi Khan said:

> Are there other specific places that you'd like to see help speed up? Well I was a little puzzled. Is the content markup so complex that IE is the bottleneck? It seems like pretty much the same stuff from the MSDN library website comes up faster. The bottleneck for me seems to be opening a reference from the index (I always start from the index). It seems like there is an unreasonably long delay before the content even starts rendering. Is this the IE parser, or the help system extracting and styling the HTML from it's internal format? I had assumed the latter. > Thanks for the comments and keep them coming!! Be careful what you ask for ;-) Actually, a great filter to have would be a '.NET Framework Classes' filter. This would restrict indices/searches to searching the class reference documentation. I often get hits in tutorial/conceptual docs when I really just wanted to look up a class or method. For example, if I type 'Application' I get lots of background info on app configuration, tracing, deployment. I really just wanted the Application class. I think this is a common scenario-- reference material vs. backgrounders. And to add another wishlist item-- if there was a n easy way to hide and/or group inherited members. When the base class has a lot of members (i.e. Control) it's very difficult read the derived classes member list. You want to see what's unique about, say, ListBox, not the ton of stuff it inherits. Of course, someone new to the framework is not going to be familiar with what is in the base class, so there is a danger in choosing 'hide inherited' as the default. Keep up the good work/blog.
November 18, 2003 1:06 AM
 

Paul Grunau said:

I'm given up on the current help system in VC++. I now use Google, which almost always points me to what I'm looking for on the MSDN site. Much faster than wading thru filters and such in VStudio. Looking forward to the changes in Whidbey.
November 18, 2003 11:18 AM
 

Keith Patrick said:

I think the help system is, for the most part fine. The code samples tend to be enough, although if not, the tutorials are usually good about filling in the blanks (although security attribute stuff is very underdone, IMO. I spent months on Usenet after not being able to figure out the correct way to use some stuff). My biggest pet peeve, though, is that the exception documentation is inaccurate. For example, Icon's ctor docs mention no exceptions, even though it will throw ArgumentNullException and ArgumentException. I've brought this up before in Usenet, but the response is generally, "Quit being so damn anal about exceptions," which is a terrible position to have with regards to a class library, IMO.
November 18, 2003 3:40 PM
 

RichB said:

I regularly choose Google over the VS.Net help because Google is faster. This is a crazy situation to find myself in! Google has no idea I'm searching for technical content, VS.Net does, yet Google is still faster! BTW - have you every tried to search the VS.Net help for .Net format strings? It's nearly impossible... Where the VS.Net help does work is when I use the Contents to drill down to a topic. The biggest problem with the contents pane is that you (Microsoft) re-arrange all the help topics every 2 years. I mean, who decided that having a node called "SDK Documentation" is a good way to integrate documentation? Once I've found the help page I was looking for, I sometimes want to email a reference to that page to a friend or mailing list. What I want is an easy way to obtain the online, msdn.microsoft.com URL when I'm looking at the offline VS.Net help system.
November 19, 2003 6:39 PM
 

Mike Dunn said:

Hi Tim, welcome to the world of blogs and commenters. ;) I have one serious issue with the help viewer (not the help contents itself) - keyboard navigation is awful. Here's an excerpt from a post I made over at CodeProject in a thread about the IDE, comparing keyboard usability of the VC 6 viewer with the new one. [Note: I do not use VS.NET but I have seen/used the new viewer via the Platform SDK] [Note 2: Sorry in advance if this sounds harsh, it was a rant] ----- I wanted to look up IShellIconOverlayIdentifier earlier today. In the old help viewer, I bring it up with F1 in VC6. It's probably on the Search tab, but no big, I hit Alt+N for Index. I start typing: "ishellic" By that time I see the topic I want near the top of the list, so I hit down arrow a few times, enter, and I'm there. So, with the new viewer, here's how it goes. Bring it up, if it's on the Search tab, hit Ctrl+Alt+F2 to go to Index. That keystroke is hardly a "shortcut" since it's a long reach for my fingers. Anyway, if the viewer is already on Index, I hit Alt+L to go to the "Look in" edit box... or so I think. All I get is a *bing* meaning "I won't let you do that". Why is the L underlined if Alt+L doesn't work? So I use the mouse (the whole idea here is to avoid the mouse) and click in that edit box. Start typing "ishellic"... there it is in the list. Hit down arrow... wait that just redid some old search that was in the search history. Ok, delete that search term out of the edit box. "ishellic" again, now I have to hit Tab twice before I can start moving thru the list with down arrow. Now I'm ticked and I go back to VC 6 So long rant short, they broke the one thing that must be fast and easy, because it's what you do most of the time, searching -----
November 20, 2003 7:51 PM
 

Hrair Mekhsian said:

I also find google much faster (both in speed of returning results and getting the best results). The reason for the latter being that google will always return either a) simple samples of how to use a function or b) the answer to a common programming trick/problem on a message board. When you hit F1 you should get a full page open up. On the left is commented code, with the relevant line in bold (the line that corresponds to the line you hit F1 on). To the right of the code you can put the most FAQs (2 or 3 only) along with their answers. Finally, if all these code samples are part of one big project it would allow you to "zoom out" off the sample that was returned, to see how that code fits in the scheme of things. Of course this means you would have to build a large project that covers most of the framework. I think it's a good idea though.
November 22, 2003 11:02 AM
 

Hrair Mekhsian said:

Just to add to the above. This page on gotdotnet.com is the kind of related FAQs I would have to the right of the code. http://samples.gotdotnet.com/quickstart/howto/ Great page.
November 22, 2003 11:14 AM
 

Sean Yunt said:

Hey Tim, ...and you thought no one would read this :) What I personally find helpful (no pun intended): 1) contextual help, with examples (pretty much what we have today) 2) stripped down API docs. Just plain vanilla class and method signatures - WITH a sentence or two describing the use. The class browser is nice, but it's really just using reflection to tell us what a namespace or class anatomy is like. There really needs to be more descriptions in some cases. Ideally the developers would write this stuff as each class member is coded, but I understand the business/political issues with MSDN language translations etc. Too bad you can't do it on the cheap like SUN (see http://java.sun.com/j2se/1.3/docs/api/) For example, is FooSearch(int start, int end) inclusive? I've found too many things like that, which I had to learn the hard way. I think the developer community is a lot more sophisticated today. Hopefully the days of some asking "I need a code snippet that shows how to connect to ActiveDirectory..." are limited and you guys can spend resources on making better tools, rather than idiot proof tools. Thanks.
November 24, 2003 12:02 PM
 

Yogesh Chhabra said:

On a completely OT note, what I would find really helpful is an integrated chat client in VS.NET. At my work we have devs spread all over the floor and when I have a problem, I usually walk up to the nearest guru and ask them. Trouble is, that nearest guru could be a good 2 mins hike away. Imagine if I could just IM the said guru and show him a remote view of my code window and we could merrily chat away. I would no longer need to see the guru. In fact, I would not even need to know if gurus were human or six-armed monsters plugged into 3-phase sockets. I know I can do all this with features in XP (Windows Messgenger + remote desktop etc) but that would need setting up by sys admins and other such Tsars, who generally frown upon IMs in general and grimace at any word beginning with remote. Since MS already have said technologies spread across different components of XP, implementing it in VS.NET would be a doddle. You can send my cut of the money you make out of this idea via Paypal to user: yogesh@nospam.maung.co.uk.
November 27, 2003 6:46 AM
 

Sean Gephardt said:

Don't worry, Tim, I'm reading your blog :)
December 13, 2003 6:18 PM
 

Sara said:

Once, a computer programmer drowned at sea. Many Marines were on the beach and they heard him cry, "F1!! F1!!" but no one understood. =)
December 17, 2003 2:50 AM
 

Thea said:

I think Mike Dunn can take up his problems with keyboard navigation with Sara Ford (http://weblogs.asp.net/saraford) - she works with the accessibility of vs.
January 11, 2004 11:03 PM
 

Scooblog said:

March 17, 2004 12:54 AM
 

Scooblog said:

March 17, 2004 11:02 AM
 

Anssi said:

Sorry everyone,

could you please consider readability,

like having some paragraphs

next time, thanks!

Can't just make anything out of Tim's 30 line comment :/
March 21, 2004 5:10 AM
 

Nick V. said:

If Google is so efficient (as I use it as my own main search method) then why not mimic it as closely (and legally) as possible?
Why not ask the user to agree to anonymously submit clicked search results and the associated search string to asp.net if a network connection is found.
Asp.net can compile the results and create a ranked database which can be silently updated on intervals or startup of Whidbey. That way, even the local help content (which should be the fastest and most helpful resource) pull up the most relevant content to the people who search it.

If Google is beating your help-system out, why not mimic the useful parts? simple one-line text entry, search results sorted by hits (hits made by the people who actually use the thing), and a quick synopsis of the page (or search result) with the words closest to the searched words.

MS has a legal deptartment... use it. Find out how close you can get to Google's functionality without infringing. OR, license the technology.

=)
April 4, 2004 5:58 AM
Anonymous comments are disabled

© 2008 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Microsoft
Page view tracker