By: Loic Le Meur & Marco Kaiser, Seesmic
Since 2007, Seesmic has provided desktop clients that allow users to connect to social networks such as Twitter or Facebook.
Out of the box, SD2 has service integration with five big social networks (Twitter, Facebook, LinkedIn, Foursquare, and Google Buzz) and various utility plugins that allow uploading images, shortening URLs, or viewing interactive maps right in your timeline. But this is just the start as there are 40+ plugins available in our plugin marketplace including additional networks, more URL shorteners, image previewers, translators, or even support for music service last.fm. It's quite an experience to listen to your favorite music from within the same app that also lets you manage your Twitter or Facebook accounts!
Thanks to our plugin architecture, we are also naturally extending from pure consumer app to an enterprise scenarios. Plugins designed for enterprise and business users are starting to appear including Salesforce.com, Yammer, Zendesk and Ning.
Switching to Silverlight 4
We made the decision to switch to Silverlight about 12 months ago. Seeing what Microsoft planned for version 4 of its cross-platform runtime it seemed to be an obvious choice for us to invest in it to build the desktop platform we had in mind. Cross-platform and vastly improved out-of-browser features were key.
In the past we divided our time between user experience enhancements and adding and maintaining services. This usually led to making compromises, because the time needed to invest in new service integration was significant, and only made sense for services that had a good adoption by users. We had to focus on the "big ones", and postpone or put aside new or smaller networks disappointing our users who were asking for more services to be supported and companies approaching us to have their services included.
In theory, the solution was simple and obvious: we had to open up our client to 3rd party developers, so that they could create their own integration. This would allow us to focus on the application itself and a few plugins that we considered "core" so that users could get started with the application easily. We'd be able to both give smaller or brand new services the opportunity to be integrated by extending our app, as well as make those integrations accessible to our users without having to fall behind on our core features.
The problem: this was technically impossible with the platform our existing clients were built on.
Still, we had some design goals for such an application in mind:
a modern, well-designed user interface and user experience
easy extensibility by plugins
cross-platform for Windows and OSX
Enter Silverlight 4. Due to its roots in the .NET framework, Silverlight is based on a very powerful language (C#), includes an extensive library of classes and capabilities, and is available cross-platform on Windows and Mac - something very important for us as well, as a significant portion of our user base is using OS X.
There is no question that Silverlight, thanks to XAML, allows for creating beautiful, rich, yet fast and responsive user interfaces. Combined with the right designer, reaching our first goal wasn't hard at all. While the user experience was developed based on the experience we had from our previous apps, we were able to find and implement the right UI design in short time, too.
MEF, the Managed Extensibility Framework supported by SL4, provided us with the extensibility we needed. Thanks to its contracts-based composition features, it was easy to wire the functionalities provided by the shell application to the plugins which used them, and vice versa. Our SDK and integration points for plugins are (as we think!) clean and fine-grained enough for developer to find, pick and combine what they need, without adding the burden of having to implement functionality their plugins don't require.
Getting the performance right for a platform that you don't fully control is not easy, and while I can say that we are happy with where we are now, there's of course always room for improvements. But thanks to the whole .NET ecosystem, there is a tremendous amount of information available online which helps us to constantly tweak and improve both speed and memory usage for the app. We also share best practices with plugin developers to help them to choose the right approaches.
Cross-platform support is also a given now. While there were some initial problems during our own beta phase with OSX, we finally got all the issues resolved, and could officially launch on both platforms.
Besides knowing that Silverlight 4 would help us to achieve all the goals we had defined, there were two other aspects that helped us make the decision to go all in on Silverlight: first, there is a huge community of .NET developers all over the world, which would be able to start developing extensions right away, and second, the integration of Silverlight 4 in Visual Studio 2010, undoubtedly one of the best (if not the best) integrated development environments available today. All the parts wanted were there, and they did fit together nicely.
From here on, the possibilities are endless – with little effort we were able to leverage the Silverlight codebase for Seesmic Desktop 2 to build Seesmic for Windows Phone 7 and Gizmodo just raved about how good it looks. We’re very excited by the launch of Seesmic Desktop 2 and our platform, all made possible by Silverlight and the incredible support we have been getting from our friends at Microsoft.
@loic – Loic Le Meur, Founder/CEO, Seesmic
@marco - Marco Kaiser – VP, Desktop Products, Seesmic