I gave Microsoft’s Sparkle a quick test drive this weekend. Sparkle is Microsoft’s tool to design (not necessarely code) applications on the new Windows (Vista, was Avalon) operating system. Let me preface this entry with I’ve only given her a quick spin, so my conclusions are preliminary first impressions, and are in no way meant to really confirm or deny anything. A beta is a beta, and a beta from a product that’s been in development for 3 years is way different in scope than other betas. Different builds of Flex 2 have drastically changed my opinions about it, and I’m sure the same will hold true more so with subsequent betas of Sparkle.
Her majesty was away for the weekend visiting friends, so I had the house to myself. I had missed the video they released late last year, so watched it with my mom over coffee. She dropped out when homeskillet started going off about Model’s and View’s. I totally understood where she was coming from because MVC used to make my head fuzzy too… a year later, good to go.
While the video was playing, I was installing a wide array of patches and updates required to play. Basically:
- WinFX Components
- Expression Interactive Designer (Sparkle)
- Visual Studio 2005 Express
- 3 Windows Update Installs
- Authentic Windows Checker
- Windows XP Update
- Amazingly, 1 reboot
Video was good quality, though, and you get to be mired in with the some of the geeks who make the jazz happen. You get a pretty good walkthrough.
One of Screenweaver’s, one of the best Flash Projector creation tools ever made, strengths was that you could use Screenweaver to create Screenweaver. This made it quite unique, in practice, not in theory. Not in theory because programmers always create things to create things for them; that’s what we do. No, it was the mere fact that every facet was covered that made it powerful.
Sparkle’s the same way in that they are using Sparkle to update new builds of Sparkle. Sick.
The zoomable/scaleable interface actually does help. Rather than push panels out of the way, I sing the Ludacris song, “Move Bitch, get out da way!” and the interface parts like Moses parted the Red Sea… except I’m not being chased by a bloodthirsty Pharaoh and his army, I just need more space for my “Paintboard”, a.k.a. Stage. …weilding a Khopesh whilst making next-gen Windows desktop apps would be pretty damn cool, though! I need a third-arm.
It’s a lot like After Effects. You have a non-descructive timeline where everything is done via keyframes that affect the layer they are on. While this allows for a more flexible way of animation, it’s a lot slower to actually get the exact effect you want because the object and the effect aren’t tied; you use the keyframe as a go between.
To say it another way, if I animate something in Flash’s timeline, that key frame affects that object on the same, and whatever I do to it affects the object. Since a lot of Flash animation actually involves considerable timeline work, you are working and fine tuning key frames.
After Effects and Sparkle on the other hand require more attention to the actual timeing or “state” of what you are working with. If you want to create something, you either “record a keyframe” or change a property. While this cleanly seperates the object’s implied state from the actual state, it can be quite unnerving to back to this way of animating if you, say, are used to the keyframing of Flash or Director.
If you use After Effects, you’ll feel mostly right at home. The keyframing engine, or timeline, doesn’t feel as mature as After Effect’s, and rightly so, she’s beta, not even version 1. I got into After Effects at version 3, and even then it had multiple, preset properties actually built into the timeline itself, all with their own keyframe lines so you could operate on them independently. Sparkle, at least as far as I could tell, groups all effects to 1 keyframe. This makes things simpler, but less organized.
Of course, everything you do is written to XAML, Microsoft’s markup. And this leads me to my next point. XAML is no way comparable to Flex‘ MXML. It’s apple and oranges.
MXML was created to provide a familiar paradigm for JSP developers who are used to HTML.
HTML lays out designs and control elements for web forms.
MXML lays out designs and control elements for Flex form.
XAML, however, is a lot more. While all 3 represent “documents” per se, HTML is the only one that remains so. MXML is compiled down with all the other MXML documents, ActionScript classes, CSS files, and image/audio assets into a SWF which is then played back in the Flash Player. XAML does something similiar.
So, yes, both MXML and XAML do create documents, with document property settings, tags to represent controls, and effects, MXML is much more high level, and abstracted whereas XAML is wayyyyyy more low level, more verbose, and plays more of a behind the scenes role.
For example, I’d argue most Flex developers spend most of their day in MXML and ActionScript. Sparkle, a.k.a. Expression Interactive Designer 2006, is totally the opposite. You spend most of your day in the IDE laying things out, adjusting properties of elements in the timeline, and moving keyframes. Yes, they have data binding, but I seriously doubt most designers would be screwing with that stuff.
I akin it to an average day in After Effects. You import your project’s assets, create compositions, add built-in effects, animate assets in them, and utilize compositions in other compositions. EID is the same way; you import assets into your project, create new timelines & templates (like MovieClip’s & Symbols), add your assets and built-in controls & style them, and re-use those in other timelines.
Imagine if a FLA outputted XML instead of a binary FLA, and you’ll get a good understanding. While you can see and interact with the XAML you are creating, I don’t think most designers will touch it at all.
I opened my XAML document’s corresponding C# (.cs) file in Visual C# Express 2005 just to see since I spent most of my time in EID playing vs. actually caring about code. It looked similiar to ActionScript’s typical code most people put on _root. They even have a root variable. Of course, my first thought was with such low-level classes, someone really really needs to create some sort of MVC framework upon release… ARP or Cairngorm up to the challenge? Anyway, C# looks pretty cool, and too many libraries to know what to play with first. Nice to know you effects you apply utilize the video card; hell yeah, hardware accelerated POWAH!
It certainly has the feel of Director, which was all about the compositing engine. Flash and Flex are authoring tools which export their content to SWF whereas Director was authoring and runtime at the same time. Sparkle gives you the same feeling, ecspecially when you start editing existing controls, modifying their innards on the timeline, and seeing them show some data that is actually live bound in the tool. Databinding in Flex and Flash is usually indicated by an icon, whereas the Sparkle team is doing their best to show actual real bound data while you are working. As a developer I think this is dumb because a lot of data begotten needs context before you can really get what you want, but as a designer, seeing real, true data in my design allows me to better understand how she’ll look. One of Flex 2’s better features is an improved Design View, showing you what your design will look like before compile, and I think Sparkle does that really well.
The databinding is nice. It would be nice, however, to have all of those fancy DLL’s like… you know… included in the app. I don’t really have friends on IM where I can go, “Dude, you know where a Flickr API dll is?”. Doing that for ActionScript utility classes is pretty easy; you go to Google or ask your friends online. However, they said that they will include a lot of that kind of stuff at release, so that’s cool.
I can really see how existing Flash component developers would really dig Sparkle. The market for such pre-built components and effects will really be in need. On the flip side, I see the same problem happening with Sparkle that happens with Flex/Flash, and that’s education about the available list of components. Explaining that you have an Accordion pane, what it does, and the same for the rest of the components really allows an interaction designer to better understand what constraints they are designing under. So, I can certainly see some slow uptake time on there as people utilize the controls, and others use the same controls in unique and creative ways that don’t necessarely comprimise usability.
I haven’t really decided yet if a designer could truly use Sparkle as their mainstay. Her majesty and I watched the 2nd Video together, and there is a lot of developer centric stuff that, frankly, I don’t think designers need to know about, nor should see. The same zeal that Java programmers have been using towards Flex with, “I can handle this design tool, no problem baby!” is not what I see designers doing towards Sparkle; quite the reverse. Rather, I see existing multimedia developers, artistically inclined developers, and interaction designers using it.
…and, most unfortunate, production artists. I was hoping that I could have a PSD converted straight to XAML and be done, but yet again, I have to take a design, and shove it in an authoring tool. Hopefully someday we’ll see the convergence of these roles via a nicely abstracted part of both Photoshop & Sparkle that allow what you create to be interpreted in the other. Analogy would be tags assigned to images on Flickr. They give context to that image, and thus allow us (usually) to better understand that image.
The same could be said to an image created in Photoshop. Some way to designate layers named “Button” as truly a Flex button, <mx:Button />, or <Button> in XAML.
I think for Sparkle to truly get people’s attention, they need to take her majesty’s suggestion, and have someone at 2Advanced design an app with a C# developer, and post that as a sample application.
Case in point, Apollo is more appealing because it is easier to take a designer’s design from Photoshop/Flash and make it work in Apollo because Flash is a design tool, and Flex supports both CSS and Flash skins.
Maybe if I learned C#, I could make the above as seamless?
Anyway, pretty neat program.
It all comes down to the weird implication of SmartClient’s vs. web applications. Web applications done with Flex are great because you get an extremely easy way to deploy the latest code on millions of client machines. Flex provides the rich desktop experience.
Apollo will provide a richer one with better API’s, integration with other existing powerful technologies, and lessons learned from Central. Apollo, at least viewed from a Central perspective, is a client-side framework for Smart Client’s created using Flex/Flash. A desktop app that is network aware, occasionally connected, saves data locally & remotely, and can easily update itself.
While I’ve been wanting to do Smart Client work vs. web application work for years, the ASP model (software as a service) is just so darn successful whereas the Smart Client hasn’t been… for me anyway. People are vying for my time to create enterprise web applications. When Central was at it’s apex, I was getting some small requests to create desktop applications, but always ended up using a 3rd party projector instead.
While I as a developer would much rather be where I like to be, on the desktop using hardware accelerated effects and machine code in my applications, the money isn’t there, or more specifically, where I’d be interested. At the same time I’d get a job offer everyday in the spring of 2004, I’d get just as many .NET job postings on Monster.com.
Now that Microsoft has wisened up and starting pre-installing .NET v2, maybe that’ll change?
I really don’t think the “my personal data on various remote servers” will backlash hard enough to having people running random EXE’s on their machines. On the same token, the leading cause for internet terrorism is Internet Explorer, so that doesn’t really help either. While Firefox is a nice spearhead for a secure app tube, I haven’t seen the WinFX stuff running in anything but IE 7.
Will Sparkle bring about Desktop 2.0? Web 2.0 was brought about sheer willpower of talented individuals rising from the dot-bomb ashes. Frankly, I think Business 2.0 will prevail; where there is money, there is success. Currently, people are paying for experiences and services. Mabye if whatever the WinFX plugin is called gets wild adoption and is secure, cool things could happen. Flash started from the web side, and is transitioning yet again to the desktop. WinFX is doing the opposite; making a strong foothold on Windows Vista, and venturing onto the web and beyond with the WinFX-E (e for everywhere, including Mac).
I don’t see the web relinquishing control anytime soon. Hell, another bubble is forming around it.
…anyway, if anyone wants me to work on a Sparkle team as an Intern (at a Software Architect rate), I’d definately be game. I’m in this for what’s fun, and Sparkle looks to be a lot of fun, it’s just kind of intimidating with all of it’s new API’s, features, 10 billion controls, and new way of creating apps.
If you haven’t checked out Sparkle yet, and don’t mind spending 1 hour to get setup before you can actually play, and you’re a Flex/Flash developer, I suggest you try it out. I don’t think back-end people will really care as it’s a primarely front end technology, but for some reason ColdFusion guys like Flex, so you never know.
Feedback for the Sparkle team:
- One click install (1 reboot acceptable). Installing all that jazz above is bs.
- Double-clicking to rename timeline layers is … not working
- Make a marquee selection for the timeline; I can’t mass select keyframes and that’s lame, slows me down.
- Have someone from 2advanced design an app; use that as a tutorial
Nice job Sparkle team, she looks hot. I’ve just invested 5 years into this Flash/Flex thing; you’ll excuse me if I don’t jump ship within 1 weekend. You keep this up, and you never know…