I’ve been asked this question a couple of times recently, so thought it worth trying to clarify.
First, a little background – bear with me for a few paragraphs:
Today, Microsoft has a pro developer tool called Visual Studio 2005 – so far, so good. This is aimed squarely at developers and enables Windows application development (client and/or server) and Web site development (ie ASP.NET). Other things too, but let’s not overcomplicate.
However the world is about to change. We’ll shortly be entering the world of the Windows Presentation Foundation (WPF), which is a part of WinFX (a small aside: WinFX is built on the .NET Framework 2.0, and includes the three “foundation” products Windows Presentation Foundation, Windows Communications Foundation and Windows Workflow Foundation. It is baked into Vista, but can be installed on XP and WS2003 via a download).
As I’m sure you’ve heard, WPF uses XAML, a mark-up language that codifies the entire presentation layer / user interface (another aside: XAML isn’t just for WPF; It’s used in the Workflow Foundation too, so don’t think of XAML as just a WPF artefact).
XAML allows us to do something that has been talked about for some time, and has been partially realised in web technologies like CSS: The separation of design and code. So graphics designers can put together great-looking interfaces that are easy to use, easy to learn and nice to live with, while developers can write the logic needed to make the application work.
How does it achieve this? Because the user interface can be “codified” using XAML, it’s a simple matter to transfer it between applications. Which means we could have a graphics design tool, a user-interface design tool, and a development tool all able to create and/or read XAML files. So I could design my entire user interface in a tool that is specifically designed to do just that job, then transfer the results to my developers who are using a tool specifically designed to let them write business logic.
So, that’s all well and good, how does this all translate to Microsoft products (existing and planned). Here’s a summary:
a) We already have a great all-purpose tool in Visual Studio 2005, but this is aimed at developers (putting VSTS to one side for the moment)
b) There are 3 products in the wings that are specifically aimed at pro designers, that carry the brand “Expressions”:
c) Also in the wings is Cider, a tool for user interface development but aimed at developers. It too understands and uses XAML, but is likely to be a component of the next release of Visual Studio.
So a couple of questions you might ask are:
1) What is the difference between Sparkle and Cider, given that they both provide facilities for producing user interfaces?
2) What’s the difference between the current Visual Studio capability for developing ASP.NET websites and Quartz, which seems to do the same thing?
The answer to both is “audience”: Sparkle and Quartz are aimed at pro designers and therefore reflect this audiences’ working style and needs. Cider and VS are aimed at pro developers and consequently will suit and work with them on their terms.
So are there features in Quartz that aren’t in VS? Without a shadow of a doubt, for example Quartz is likely to handle CSS much better that VS does.
And are there features in Sparkle that aren’t in Cider? Yes, for example animation.
But the key differences are how these products work, how they “feel” to use, and how productive each audience will be with them. You absolutely can design an entire website or entire Windows application using Visual Studio and Cider. But you’re very likely to be able to design a far better website or Windows application with designers using Sparkle, Acrylic and Quartz, and developers using Visual Studio and Cider.
There’s plenty of devil in the detail, but hopefully that gives a top-level view to help clarify how these technologies fit together.
If you want to know more, this MSDNTV episode covers Sparkle and Cider: http://msdn.microsoft.com/msdntv/episode.aspx?xml=episodes/en/20051020CiderMB/manifest.xml