Visual Studio 2010 PDC session: customizing and extending your developing environment

In my last post about the new Managed Extensibility Framework (MEF) I mentioned this PDC 2008 session about VS 2010 extensibility whose video is now available:

TL32 Microsoft Visual Studio: Customizing and Extending the Development Environment” by Tim Wagner

I have watched today the video and overall I have liked a lot what I have seen:
  • The IDE is moving slowly towards a managed .NET application (it will take several releases, but in this one the shell UI and the code editor is now .NET based using WPF).
  • There is a new Drop-In, Light-Up (DILU) deployment approach for extensions where you just drop a component in a special monitored folder so your extension just appears in the IDE. This is very cool.
  • 3rd party extensions can now contribute more easily to intellisense/auto completion/tooltips/smart tags stuff and can colorize (or any other WPF effect) the code.
  • There will be a new extensions manager to download extensions directly from the VS gallery, with auto-update / disable / uninstall capabilities.
  • Internally the extensions are built using the MEF approach.

All that said, it seems that the current CTP doesn’t offer any of that yet (at least mine). We will have to wait until Beta 1. Update: the current CTP offers some funcionality about the new editor (c:\Users\public\documents\CTPWalkthroughs\Visual Studio\Samples).

There are only a couple of things that scare me:
  • How well the internal changes in the IDE to handle all this new stuff are going to coexist with current technologies (add-ins, packages). I guess that there will be backwards compatibility, but, you know, changing internal things without breaking something is difficult. I mean, if you change the code editor technology (even if only the presentation layer, not the internal buffering stuff), there are add-ins and packages out there (not my case) that colorize, add smart tags, etc. The new code editor even allows you to use different font families and sizes for different parts of the code…
  • The other thing is the WPF stuff, or more precisely, when WPF designers rather than Windows developers start to create Windows applications (instead of, say, web sites where they can use their creativity to the max) because, simply put, I don’t think they know or care about Windows design guidelines. I am currenly learning Microsoft Expression Design 2, a WPF Windows application to create designs and it is a horrible Windows application:
    • It doesn’t honor the Windows look and feel (menu fonts, colors, etc). You can only choose between light or dark user interface. OK, Microsoft Office 2007 also started to violate Windows design principles using its own Segoe font rather than the Windows font (whatever the user has selected in the Control Panel), and many users have discovered in the forums that it is impossible to remove it.
    • It uses weird menu to change preferences: “Edit”, “Options” rather than the usual “Tools”, “Options” that every other Microsoft application uses. I guess there was some people influenced by Adobe applications which use “Edit”, “Preferences…”. I hope no people influenced by Apple starts switching the OK and Cancel buttons ;-)
    • The toolbox is not the more user-friendly thing in the world. It uses multi-tool buttons and it changes their icons to the last used one. The toolbox of Visual Studio is much better (you can show all tools at the same time, with or without text)
    • The Layers panel doesn’t use a context menu to add or remove layers or other things, you have to use some weird artifact at the bottom of the panel to show a menu.
    • OK, this one is not arguable: the objects that you design in the canvas can’t be copied and pasted using a context menu! You have to use the ones under the “Edit” main menu. I can’t think about a Windows application that doesn’t offer a context menu to copy/paste selected objects…

So, while it is true that developers are not good designers, I think that it is also true that designers can’t create good applications (maybe web sites or video games, but not Windows applications).