Writing plugins for Seesmic Desktop
| CommentsToday, Seesmic more broadly launched Seesmic Desktop, a refreshed platform for interacting with various social media outlets like Twitter, Facebook, Google Buzz, etc. Seesmic has been one of the leaders in this space providing client applications on various platforms across web, desktop and mobile and providing us with unified views of our interaction with others online.
You may have remembered seeing Loic on stage at MIX last year demonstrating their first preview of this updated platform and inviting developers to be a part of extending the shell. That’s right…their platform is extensible! A great application that I can also modify to my needs? Double rainbow…what does it mean!?
I went to the evening social session at MIX to hear about how they would be enabling developers to extend the platform. In introducing the concept of plugins, it was made clear that the Seesmic Desktop Platform (SDP) would be leveraging the Managed Extensibility Framework (MEF) that was to be included as a part of Silverlight. Seesmic would define MEF contracts that as long as developers adhered to them (and of course implemented any required interfaces for actual functionality) then the plugin would be able to extend the platform. The most grandiose idea can be simply stated as if you don’t like how Twitter is represented in Seesmic, fine…change it. Of course, I suspect most people will be just fine with their implementation and choose to extend in other areas as I’ve done.
Admittedly I’ve got a vested interest in being excited about SDP…after all it is built using Silverlight. However, I’m also very much into being a part of my online connected network via Twitter. Prior to SDP I did not use Tweetdeck or some of the other popular multi-column ones…but was a user of Twhirl. I loved the simplicity that it provided but did desire for slightly more. I never got into Tweetdeck and honestly I don’t know why…it just never stuck to me in how I interacted online. The thought of customizing my own experience, however, is what intrigued me to SDP.
I immediately got started writing some plugins, starting with something that I use often, a translator for reading messages incoming that aren’t in my native English. Some may scoff, but when you monitor a lot of different things online, this becomes important as I don’t want to ignore things that might be interesting. I chose to use Microsoft Translator services and in a few hours had my first rough draft plugin completed. It was very rough (mostly because I desired a lot of things from Seesmic). I showed Marco my warez and started to give feedback on what I think the platform needed for this specific use case as well as to make my life easier.
Since then the platform has significantly evolved to accommodate most developers needs. Seesmic has been very responsive on the developer forums for the platform to needs and questions. Getting started writing a plugin couldn’t be easier for a Silverlight developer, but I’ve tried to make it even simpler (as I was sick of doing the same tasks myself). I created some templates that you can download from the Visual Studio gallery that will help get you started. Once installed you’ll see a nice new project template in Visual Studio:
This will stub out the initial shell you will need (you’ll still need to add the correct references to the SDP SDK). From there you can add item templates for the base plugin type or other types: posting actions, timeline items, etc. Here’s what my templates provide:
These should give you some good jumpstart code to provide some of the necessary plumbing that would be required. This is NOT a substitute from understanding the platform! You need to read the docs and understand the interaction of the API with the platform to be successful.
TIP: When you add references to the Seesmic SDK assemblies, change their Copy Local attribute (in properties) to false so you don’t end up shipping them with your plugin. Since they are already a part of the platform there is no reason to ship them with your plugin (and this makes your plugin size smaller).
To me, I think the easiest plugins to create are those that implement a URL shortener, posting action or a timeline processor. These are the areas which would allow for very fast customization. The account providers is likely the most time consuming as you could imagine as you are interacting with authentication schemes, etc.
I’ve created a few initial plugins that you might be interested in and you can download them here. I’m really excited about this platform and the fact that I can extend it to make my interaction with things I care about uniquely my own. Install Seesmic Desktop today and start developing using the SDK!
Please enjoy some of these other recent posts...
Comments