VSM Cover Story
Is Microsoft enhancing your user experience in Visual Studio 2010 and beyond?
The team in Building 41 on the Redmond campus is working on ways to modernize the developer experience for Microsoft's third-largest application and flagship toolset. The Visual Studio platform architects face the same challenges as their developer customers: How to revitalize a pivotal legacy codebase as hardware systems, Software plus Services (S+S) and new ways of building applications demand advancement.
Visual Studio (VS) 2010 -- expected in beta around the Microsoft TechEd timeframe (May 11-15, 2009) -- will mark the start of a major remodeling of the IDE, according to Microsoft, a process that will continue over several product cycles.
In the upcoming release, the Developer Division is taking a major leap of faith by "dogfooding" its unproven graphics technology. The VS 2010 beta debuts a new code editor, user interface and shell built on Windows Presentation Foundation (WPF), the .NET 3.x graphics subsystem that surfaced to mixed reviews in Vista.
"We've told developers how to make applications that are intuitive and exciting and modern looking for their customers," says Matt Carter, Microsoft's Visual Studio group product manager. "What we're trying to do is say, 'You deserve an environment that's also very easy to use and intuitive and visually appealing, but also uses that visual appeal to really provide greater insight into what you're working on, how the different parts of your code and your applications are related.'"
A programming model to take advantage of Vista's new graphics subsystem, WPF was designed to modernize the user experience by enabling developers to code against a powerful framework that housed a subset of DirectX 3D, animation, vector graphics, ClearType, declarative programming, data binding, multimedia, styling and controls. The initial releases of WPF, according to many developers, provided limited guidance and a lack of sufficient tooling.
"It's good to see Microsoft using WPF in one of their core products, as it will surely drive the maturity of WPF and related tools," says Rockford Lhotka, principal technology evangelist at Minneapolis-based consultancy Magenic Technologies Inc. "Every time Microsoft buys into its own technologies like this, we all benefit."
Dated and Confused
These bold moves come as VS's architects attempt to roadmap a remodel of the IDE with investments in five areas: extensibility beyond the core throughout the product, frugality with better dependency management and resource allocations, connectivity with S+S, scalability to the tune of 10,000 projects in a solution; 50,000 files in a system and overall modernization.
"The 2008 product looks a lot like the 1998 product and I don't think that's a good thing," said Visual Studio architect Rico Mariani in a Channel 9 interview at the Visual Studio Extensibility (VSX) conference in September.
"We're doing a lot of work around scalability and frugality in the IDE, so that you can afford to be modern," he said. "We can pay for our WPF costs with savings elsewhere. We don't expect WPF to be free."
Moving beyond "single-threaded app" performance in Visual Studio and a Model-View-Controller-type architecture are among the roadmap's talking points. "We have plenty of threads but we don't have a whole lot of concurrency," said Mariani. "And there's a lot we could do if we separate what needs to be synchronous, what needs to interface with the user, which is where the SDK models begin. Get the state off of those objects and separated and get separation between the controllers, which can initiate asynchronously and have high-quality models in the background."
In VS 2010, developers can experience firsthand the beginning of the IDE's evolution: improved code navigation, annotation and extensibility with the WPF-based shell; better performance and scalability for native code; and fundamental improvements in debugging and test-driven development.
Snazzy New UI Bling
Like many teams tasked with modernizing their apps, Microsoft is revitalizing its legacy code base with a .NET presentation layer. The UI changes appeared modest to several developers who witnessed the first pubic unveiling at VSLive! in February. The UI Ribbon found in Vista and Office 2007 is not part of the redesign.
In the new VS 2010 interface, the menus and commands are connected together in a shelf, so it's easy to coordinate and find things or get the clutter out of the way, explains Carter. Microsoft has done design work around how color and negative space is used, and removed some of the necessary gradients and line work there so that the app is "cleaner and crisper than it has been in the past," he explains. "It lets you focus on the work that you're doing and minimize the distractions from other parts of the environment."
Lhotka, who attended the VSLive! keynote delivered by Microsoft's Visual Studio GM Jason Zander where the UI was first shown, questions the "less clutter" argument. "While it's nice that Visual Studio is now WPF, it didn't seem to me that the layout and dialogs were all that different from today," Lhotka says.
In addition to a new look and feel, WPF allows you to extend the application experience beyond what Microsoft delivers in the IDE through third-party or self-written add-ins.
WPF allows new extensibility to the source code editor that in the past has been difficult to achieve, says Rob Sanfilippo, research vice president of developer platforms at Directions on Microsoft, a Kirkland, Wash.-based research firm. You can look at methods in your code and get a pop-up with history of the modifications as it's gone through development. You can also leverage debugging information in Team Foundation Server, create specialized IntelliSense or adorn XML Documentation Comments.
"Microsoft will offer a lot of these extensions," Sanfilippo explains. "But it also opens up a market for that ecosystem. It's an interesting competitive move: If there are features in competing dev environments, to put [Visual Studio] on par with what's found on other toolsets."
At TechEd in Barcelona, Zander showed a DevExpress add-on that lets you create thumbnail code views, so it's easy using WPF layers to pick a word and drill down in the Document Map Margin.
The new WPF-based Home Screen is also extensible through configuration and XAML files. "I could see extensions to this screen that can display things like quick-facts," says Sondre Bjellås, Microsoft technology leader for Capgemini in Oslo, Norway. "How much code you've checked in lately, how much time you spend testing, how much time you spend documenting your methods and so forth. It could aggregate data from the Team System warehouse and display it personalized for the individual developer."
The WPF redesign of the IDE is the part of VS 2010 that impresses Andrew Brust, chief of new technology at twentysix New York, the least. "What I saw looks more like a WPF port of the 2008 IDE than a true redesign. I hope that Microsoft will consider making more fundamental UI design changes to VS 2010 before release," Brust says.
"We're not embracing WPF because we want graphical 'wow' -- that wouldn't be enough of a reason," blogged VS architect Mariani in late November. "What we want is flexibility and extensibility. For instance, it's because the new editor is WPF-based that we can, for reasonable engineering cost, offer the ability to add inline adornments, margins, even 'heads up display' style extensions. ... The best part is you won't have to wait for us to do these things -- you want profiler information overlaid on your text? No problem. Go do it. Test coverage? Hot links to documentation? Online presence indicators based on e-mail names in comments? You could do all these things."
The WPF-based editor is built on Microsoft's new Managed Extensibility Framework, a .NET 4.0 library for building extensible applications or discovering extensions. MEF is available as a preview on CodePlex (see more about MEF in this month's Ask Kathleen).
"This whole modernizing thing, I think it's a little tongue-in-cheek," although it's a good direction for Microsoft, says Jeff Levinson, ALM practice lead at Kirkland, Wash.-based Northwest Cadence Cor
"Companies have been writing add-ins in Visual Studio for 16 years now. They can't just go and dump what's there. I think what they're going to do is skin it for WPF, but I don't know how full-featured WPF is going to be in terms of interoperability," he says.
The current VSX architecture remains intact, according to VS architect Mariani, but extensibility needs to be more uniform. Other questions remain: How can developers find and plug into the appropriate subsystem? How do you de-bug and update these components? How many extensions are feasible?
A new Extension Manager in VS 2010 lets developers access, search and download extensions from the VSX gallery, for example, from within Visual Studio without a required VSIP package on their machines.
Perhaps the biggest question around WPF is how it will affect the IDE's performance. Mariani, known as a "performance guy," has acknowledged that there will be a penalty. "I'm expecting to take a startup hit," he said during a Channel9 interview, noting that around 300-msec would be acceptable.
The new IDE will be targeted at developer machines. "We're going to down-level to XP in this version," he explained, but to get the best experience, developers need to have a graphics accelerator (DirectX 9.0).
From a practical standpoint, WPF also lets developers zoom in and out of code, undock palettes and view code and designer windows on multiple monitors (see Figure 1). "It's easier to work in different [but integrated] projects on different screens independently from your screen resolution," says Daron Yöndem, a Microsoft regional director and INETA Turkey lead, who described the WPF support as "crazy good" in an e-mail. "I'm looking forward to the great days where we will be able to design our own Visual Studio interface with full templating."
Crowded with Goodness
Designing custom toolsets appeals to many developers, especially those who are accustomed to downloading only the modules they need, which is the Eclipse model. The promise of .NET, according to Microsoft, is that you can target so many applications -- Windows, Office, Web, smartphone, cloud -- with a single framework. And there's the rub: How can a single IDE keep up?
"It has been bloated for a number of years," says Northwest Cadence's Levinson. "For example, if you look at Team Explorer, which is just a Visual Studio Shell, that's 387MB to download and install … and if you look at something like Eclipse, that thing is around 180MB. Then when you add everything else on, [Visual Studio] is almost 1GB."
Microsoft has heard the refrain for years -- Visual Studio needs to be a smaller footprint and take up less resources. "It takes a long time for certain operations to occur, where it shouldn't take that long," says Levinson. "I would like to see them shrink it so that you only install the packages that you need and the shell is much smaller." He acknowledged that the ecosystem makes it hard to address a lot of these issues in a single product cycle.
The platform wave continues in the new IDE, which will support .NET 4.0, Windows 7, SharePoint 2007 and Microsoft Office SharePoint Server, the Azure Services Platform and Silverlight 2.
"If you're a Visual Studio developer, you already have the core knowledge to take advantage of all these great new innovations," says Microsoft's Carter, pointing to recent developer feedback on the new SharePoint tooling.
Indeed, the new Server Explorer, VS 2010 Web Parts, Application Page Designers and user controls for SharePoint are highly anticipated by many developers who have bemoaned the lack of tooling.
This release is primarily focused on Windows 7. (VS 2008 did not fully support Vista/.NET 3.x until Service Pack 1 was released last summer.) VS 2010 and Visual C++ will offer new class libraries for building Windows 7 apps (including UI elements like the Ribbon), bring back the MFC Class Wizard and support multitouch interfaces.
In addition to support for its bread-and-butter platforms, Microsoft is baking in tooling to support emerging application trends, namely cloud computing and parallel programming for building applications that can take advantage of the performance of multi-core systems. Visual Studio offers additional support for parallel programming with debugging windows and profiling for coding against the Parallel Extensions to .NET Framework, PLINQ, the native Parallel Pattern Library and Concurrency Runtime.
The Windows Azure Tools for Visual Studio, released out of band at the Professional Developers Conference (PDC) 2008 in October for building, debugging and deploying cloud apps and services, is also integrated into the new IDE.
Third-party products and frameworks are also finding their way into the IDE. Two notable inclusions in the VS 2010 tooling are Oracle database support with an optional database schema provider developed by Quest Software Inc., and native JQuery. "We had two paths we could follow there," explains Carter. "We could create a JQuery functional equivalent or we could just use JQuery ourselves … and have it supported by Microsoft. It will have all the IntelliSense that you'd expect from Visual Studio. If you have a problem and call Microsoft, we're here to support it."
While developers and analysts describe VS 2010 outside of the core platform support as somewhere between a point release and full-fledged upgrade, Team System 2010 is a milestone release that ratchets up the testing capabilities on par with third-party testing products, and reinvents the architecture role to ensure best practices in the build process.
"The 2010 release is kind of like an über release," says Levinson. "The functionality is much better. The introduction of hierarchical work items will make your life a lot easier. Plus, now Microsoft is putting out a fully compatible, competitive professional testing tool, which they haven't really had before. If I had to categorize VSTS 2010 in a single word, I would say, 'Awesome!'"
|New in .NET Framework 4.0
Visual Studio 2010 will ship with a .NET Framework that has undergone major changes, most notably a complete overhaul of Windows Workflow. Other noteworthy additions include:
- Managed Extensibility Framework (MEF): A new .NET 4.0 library for building extensible applications or discovering extensions. MEF is available as a preview on CodePlex.
- Integration of .NET Parallel Extensions: A new library for data and task parallelism that includes the Task Parallelism Library and declarative programming support via Parallel LINQ (PLINQ).
- Support for the functional programming language developed by Microsoft Research, F# and Microsoft's dynamic languages IronRuby and IronPython via the new dynamic language runtime built on top of the common language runtime.
The new Architecture Edition is more of an app tool than a systems tool, according to Levinson. It makes elements composable and discoverable so that you can now reverse engineer with sequence diagrams or use the Architecture Explorer to drill down to see relationships. IDE support for UML is also added in 2010. VS Professional has traditionally shipped with Visio, which offers UML stencils, but this is the first time Microsoft is supporting it in its own products. How "Oslo," the model-driven development tooling announced at PDC, fits into this strategy is unclear. The latest Oslo community technology preview was released in January.
Improvements like the "no repro" debugging and the new Test Lab Manager, a virtual machine environment that developers and testers can spin up and tear down, goes beyond quality, asserts Carter, to a team dynamic that can be fostered with the new software.
"My read is it will enable teams on tight deadlines and budgets to put out much higher quality code, because the effort required to find and fix the bugs will now be greatly reduced," says Brust. "Automation and all the recording features will really help here."
VSTS 2010, which includes role-based client tools that incorporate VS Professional and a license to TFS, is the first major upgrade to the collaboration environment since its debut in VS 2005. TFS will drop support for SQL Server 2005 as the back-end source control system and thus require an upgrade to
SQL Server 2008. Team System also rolls up the former Developer edition into the Database edition, resulting in Architect, Tester and Developer roles in addition to Team Suite, which includes all of the aforementioned functionality in a single SKU.
"We're looking at quality across the board," says Carter. "When customers are ready to move up from doing unit testing in Visual Studio 2010 Professional, to advanced stuff in Visual Studio Team System, that's an easy transition. That's really exciting stuff … things like historical debugging, not only drive quality, they help save time and resources for your team."
Call to Action
With installable beta 1 bits expected next month, developers can test drive the new editor and try out the code navigation. A new Call Hierarchy feature provides inline information on code interaction. Highlight References bypasses the Find in Files feature to highlight reference information in context of selected code and Quick Search provides insight into other code locations.
Like VS 2008, the new IDE will support multitargeting of .NET Framework, and new with VS 2010, developers will also be able to "multitarget" both versions of the Common Language Runtime (CLR2 and CLR4). Developers can also build client apps for multiple versions of Office, and deploy as a single package.
Those with existing solutions based on C++ project systems will need to convert to MSBuild in VS 2010 to receive full IDE support. Although Microsoft has said it will provide migration tools, more information is needed.
VS 2010/.NET 4.0 beta 2 is expected before the end of the year with a Go Live license, according to sources familiar with Microsoft's plans. The tiered VS pricing structure, which debuted with VS 2005, isn't changing, but professional developers may be better able to discern what functionality is available in what SKU/MSDN subscription based on their experience with this pricing model.
Microsoft started a step-upgrade discount program last July that offers 30 percent off to developers who upgrade or move from competing products to VS Professional/MSDN Premium subscriptions or VSTS, both of which include the VS 2010 upgrade. Microsoft has declined to quantify how many step-upgrades have been sold.
VS 2010 is the first release in what the Visual Studio platform architects describe as a multicycle evolution. The team is looking at a 64-bit version of the IDE for VS 11, but hasn't committed to a technology roadmap.
"The reason that you do this is to make sure that the developer experience is as efficient as possible," says Microsoft's Carter. "So that's really what we pivot around -- to make sure that with Visual Studio 2008 and 2010 and beyond we deliver a great productive experience that is at once familiar to developers, but also lets them tap into these new capabilities."
The ultimate goal, according to Mariani, is: "How do you make it so that when a developer sits down, they feel like there's nothing in his or her way between their idea and the execution?"