Jose Fajardo
Silverlight and WPF
Wednesday March 05, 2008
Silverlight & WPF, what it means to me
When I approach learning new technologies, such as Silverlight & WPF, the first thing I ask myself is "What problem is this new technology trying to solve?". When I've found my answer for that first question I then ask myself "How is it solving this problem?". So let's try to find out what problem Silverlight & WPF is trying to solve.
Several years ago
Stretch your mind back several years, remember the days of VB6, Delphi, Access 97 etc. I am talking about the late 1990's, early 2000's.
Windows forms looked like this :
And web forms looked like this:
Windows forms for the most part were gray, and textboxes and buttons had square edges etc. This was the norm back then, obviously there were exceptions but they were few and far between.
Web forms were similar, square textboxes, square buttons, tabled layouts etc. The technologies at the UI level back in the early days were JavaScript 1.0, HTML 1.0, CSS 1.0 etc.
Fast forward to today
If you launch visual studio 2003, 2005, 2008 and create a windows form or web form application what do you get?
Majority of windows forms look like this:
Web forms look like this:
Windows forms have pretty much stayed the same, there are now more controls however the forms are still bland and the textboxes, buttons are still fundamentally square and boring.
Web forms also stayed the same. Textboxes, for the most part, are still square in nature and functionality is still very simple, buttons are still elevated and square in nature. The technologies at the rendering level are still HTML, CSS, and JavaScript, just different versions. (actually only three versions old for the most part)
ASP did move to ASP.NET but the innovative changes were more server than client. Forgive me if I am over simplifying the innovation here BUT the way I see it is that the UI was still HTML, CSS, JavaScript and it was still the same basic UI controls.
Also Ajax had come along trying to deliver a more engaging experience however it still resulted in an experience not much more innovative then what was available several years ago.
So several years and still the same UI?
It is amazing that several years had passed and not much had changed on the UI. Windows forms and web forms were still built using similar concepts and techniques from several years ago.
Apple, Flash and Web startups
Apple, in the space of several years, have reinvented themselves as the company with the coolest looking products. They have always believed that the user interface and a users experience with a product was crucial in the overall design of a product. Apple believed that UI design and research were very important in the product development life-cycle. One only needs to look at their products to understand that they are doing something right.
Flash several years ago began its life as a simple animation engine, fast forward to today and Flash is a rich application suite capable of delivering amazing online experiences that go beyond just simple animations. Applications of the most complex nature can be written in flash, applications that rival traditional desktop paradigms.
Web startups appear every day, the barrier to entry for these startups is amazingly low. In today's market it is so easy to start a web company and launch a product. These startups do not have much to lose but have everything to gain. Startups often devote a large percentage of their time and funds to the UI design of their product since this is the first thing they see as a differentiator over their competitors, like Microsoft.
Microsoft's current UI does not meet today's needs
So Microsoft saw this threat years ago, they saw what Apple was achieving and acknowledged the need to create beautiful, yet functional applications. They saw that flash was growing into a killer UI platform and they saw its adoption grow astronomically even surpassing that of Internet Explorer.
They also saw the software on a desktop channel diminish and other channels like hardware entertainment devices, mobile devices etc grow. Microsoft's competitors were no longer just software houses but came from other industries such as entertainment and hardware device makers.
Microsoft needed to reinvent their approach to the UI. Seven year old technology just does not compete well against the likes of Apple and Flash.
User Experience team at Microsoft + Research
A UX person dreams up application designs and service based offerings, they imagine a UI with extravagant animations and complex workflow's. A UX person dreams up ideas and they want these ideas realized.
A UX person dreams up Rich scenarios, and by Rich I mean
1. Animations + Colors + Personalization
2. Data Visualizations
3. Undreamt of controls + User workflow's
4. Designers involved more actively in the SDLC
5. Interactions beyond the keyboard and mouse
Microsoft have always had staff devoted to User Experience and UI design. Only recently have they invested heavily in these teams and tried to coordinate UX efforts across all of their products.
Microsoft now see the value of having beautiful and functional UI's, one only needs to take a look at their latest offerings of Vista and Office 2008 to see the impact that the UX team is having. UX now plays a core part in the Microsoft product lifecycle, more so then what it did several years ago and this is in direct response to the threat from competitors like Apple & Flash.
Microsoft is more than just software
Every day I am daunted at the size of the Microsoft gorilla, this beast has its fingers in so many pies it's amazing it hasn't fallen flat on its face.
Microsoft have product offerings in
1. Software - Server OS's, Client based Application's like Office, Development Software
2. Services - Live services, things in the SaaS space etc
3. Entertainment - Xbox, Zune, Mobile
4. Advertising - they have a huge advertising arm in the top 3 in the world
5. Content - they have a staple of websites and content distribution arms specializing in content etc.
Microsoft have many product offerings all of which require some form of User Interface. With all these products that touch so many different industries it is easy to have isolated solutions for each UI and traditionally that is what has happened. The UI technology that drives one product may be completely different to that of another product, especially when a product is brought into the Microsoft fold from an acquisition.
THIS IS THE PROBLEM THAT NEEDED TO BE SOLVED
Imagine all these product offerings existing in their own world and branded using their own special technologies. Also imagine Microsoft competitors releasing their own products but with infinitely more captivating user experiences.
Microsoft realized this problem early on and I believe this is what fueled the need to re-invent their UI strategy. They needed to create a UI technology that would let them compete against the likes of Flash, Apple and web startups. They needed this technology to be Microsoft centric such that it could be easily adopted across their stable of current and future product offerings. They needed full control of this technology. Standards based technologies are notorious for long version life-cycles and over complicated requirements and documentation processes, basically a lot of red tape. If you wanted to get things done in short time frames then proprietary technologies is what you would need.
This technology would need to be intimately part of the traditional Microsoft SDLC and MSF and it needed to fit in with their development product lines. Most importantly it needed to meet the requirements of their UX experts. If a UX expert wanted a UI feature built, regardless of how complex the requirement, this technology needed to be able to achieve it.
This was the problem that needed to be solved.
Now we know the problem, how did Microsoft solve it?
Microsoft's solution to the problem
1. xAML
2. Expression Suite
3. WPF
4. Silverlight
5. Support Communities
6. Extended existing Development Product line (Visual Studio)
All the smart people at Microsoft, and by smart I mean brilliant, came up with the above mentioned technologies. These brilliant techies came up with an amazing set of technologies to combat the problems identified above.
I will not go into detail now regarding these technologies, I will save that for the next blog posting.
Microsoft forms-based Applications of the future
The applications of the future will be rich and the traditional windows form will be thrown out the window. Consumers and business users expectations will become very similar and the expectations of the ordinary user will be infinitely greater then what they were several years ago.
I personally believe that WPF will be the technology that will underpin the new world desktop experience. It will pick up where windows forms leaves off. It will take a couple more iterations until WPF is optimized enough to supersede the windows form but I believe that is the path destined for WPF.
Today it is so simple to create a WPF form - as simple as it is to create a windows form. The major downside to WPF is performance and size of the basic footprint. For example WPF is currently not optimized for use on a simple 2 page form.
Microsoft Web-based applications of the future
Html, CSS, JavaScript will always be prevalent in the world of the web but to deliver that rich experience a new technology will need to surface. Currently the only one capable of delivering that experience is Flash however Microsoft's proposed solution is Silverlight.
ASP, ASP.NET, Ajax are technologies that will always be around however the ease at which web applications can be built using Silverlight & xAML and the benefits of these new technologies far out shine current technologies.
The determining factor for using Silverlight over traditional web technologies is based on the requirements defined by UX designers. If they dream up scenarios that cannot be met with the traditional web technologies of CSS, HTML, JavaScript and Ajax then Silverlight will be used.
Future Devices beyond the browser/desktop model
In the future there will be an unlimited number of devices that will want to run your application. Current dominant technologies in the windows-forms and web-forms arena does not have a solution for this problem. Silverlight, on the other hand, was designed to solve this very problem. It has the ability to bring in new libraries to take advantage of new input devices or new visual devices and to a certain degree it has been engineered to be future proof.
How big are these new UI technologies?
At the very top of this blog post I mentioned VB6 which was around several years ago. Back then we were building some pretty complex COM based applications. Roughly that same time Microsoft released a new technology which was called .NET
Back then we had experts telling us that this new .NET world was going to be huge, that everything was going to be managed and it was going to change our lives. A lot of us were dragged into this new .NET world kicking and screaming not really knowing why it was going to make our world better.
Looking back now, that period of when .NET was introduced, that was a real monumental moment in software development history. It really changed things and I have to say for the better. The .NET world has lived up to all the hype, one only needs to look at recent features in .NET like dynamic languages and Linq to understand that this language is nothing short of amazing.
That is what we are dealing with now, with Silverlight, WPF and all these other sister technologies. In several years time we will be looking back and we will be saying the same thing. Silverlight, WPF and the other sister products are as revolutionary as was .NET several years ago. It will just take us several more years to realize this :)
My personal opinion on this matter is that if you plan on still cutting code in several years time then chances are you will be cutting Silverlight, WPF or xAML code. It is better that you start picking it up now whist it is only version 1 than picking it up in 2 years time when its three versions old and four times more complicated.
Imagine all the new, fresh out of university, programmers that are trying to pick up .NET skills today. I had the luck of starting out in .NET when it was born so I literally grew up with it, hence why I'm so comfortable with it. I feel for the young ones having to learn the 200Mb framework, they have so much information to process.
One of the reasons I quit my nice paying financial services job for a full-time role in Silverlight & WPF with CynergySystems is because I honestly believe everything I said above. That these technologies will form the basic building blocks of future applications. We will be choosing WPF and Silverlight projects over the traditional Windows Forms or Web Forms based projects. Microsoft are investing heavily in these technologies, as am I and I honestly believe it is worth the risk.






