Wow what a title. No you haven't stumbled upon a piece of broad-sheet journalism reflecting on the evolution of our society in modern time. This article is about something far more important, Social Media! Or rather, Social Media and strategies for integration.
I will be referring to Social Media in the broad sense as I think it's more relevant than focusing on Facebook or Twitter in particular. Of course a lot of what I'm referring to is based on my direct experiences with the two big players.
I must admit, although in my work I build a lot of Social Media enabled sites, this is something that usually gets implemented by front-end web developers. It's not something I have had to deal with too often in terms of the software engineering side of things, but times are (rightly) changing. As we increasingly push boundaries with Social Media it can no longer be considered a value-add or an after-thought. Social Media is forever ingrained in our lives and is becoming the hub for our online experiences. More than ever it's crucial to understand these technologies and how to harness them. As such I've been researching Social Media to get a better idea of what's out there and how we can leverage them in our projects without introducing significant risk.
The Colour Of Chaos
So what's out there? Well the bad news is it's chaos! The good news is its getting better.
So what do I mean by chaos? Well Social Media has evolved rapidly, not only the technologies themselves but also our understanding and acceptance of them. The result is a sway of privacy and policy changes influencing functional change and several generations of progressive APIs leaving a trail of misinformation.
Now change is a great thing, it's the key the to success and acceptance of Social Media in our life's, but it gives us developers a terrible time. Just search for samples and tutorials for working with Social Media and there's a vast sea of misinformation out there referring to out-dated APIs, functionality long since removed, and links to abandoned libraries. What's more is that the applications we build today, don't necessarily work tomorrow.
OK so we have the official documentation right? The problem with those Social Media giants is that they are busy people. They spend a lot of time working to enrich our lives, inventing new features, refining APIs, and re-organising their sites. All this takes its toll on documentation which can be quite slim and sparse of specific examples.
The Kiss Of Death
I don't need to tell you, we're a friendly bunch us developers. We love to share our ideas and contribute to open source communities. Usually this is a great thing, it brings a competitive edge to the industry; it broadens our experiences; makes us proud; and allows us to achieve so much more of our potential.
Now the thing about Social Media is that they certainly aren't in the business of creating frameworks. And where those lovely community libraries can lead to faster development times and reduce costs when working with frameworks, they can be the kiss of death when working with third party APIs. It's an unnecessary layer between you and a moving target, and if you can't adapt fast enough, you're dead in the water.
The internet is littered with these good-willed projects that once sort to enrich our lives by bringing Social Media to our particular brand of technology. They now lay abandoned where the effort in upkeep overtook good-will or where functional changes have crippled the once sparkly widget that we all craved. Whereas Apple's move to block third party libraries on their platform was unexpected, it's clear that this was some clever thinking on their part to keep the community and platform nibble. The truth is Apple are more focused on producing APIs than developing frameworks, and it makes perfect sense.
Now there are some good libraries out there, notably the Facebook C# SDK and Twitterizer, but I question the need for these and personally I believe it's only time before these go the way of their predecessors. Social Media has grown up and their APIs are built on simple technologies, but unlike frameworks they will continue to adapt and be redefined as the community demands.
Write Code Not Libraries
The other emerging feature of Social Media APIs are the streaming content services which move away from more traditional RESTFul integration techniques. This allows much more efficient B2B communication, and the handling of much higher volumes of data than ever before.
A New Hope
To really leverage Social Media and take advantage of the advancements being made we need to create more lightweight adaptive solutions that build on the core technologies, and not the APIs.
OK so what do I mean by that? Well both Twitter and Facebook are built on RESTFul technologies. Rather than looking for C# libraires (for example) that provide an easy hook into the platform and are tightly coupled to a particular version of the API, I suggest effort is better spent investigating, developing, and implementing RESTFul libraries written in C# (for example), that make it easier to call the Social API. This promotes code reuse without coupling the application to one approach or one technology. Any changes to the API can then easily be rectified by tweaks to the high level codebase without functional changes.
Lastly I want to talk about another emerging solution to integration woes. These are service based companies that are springing up. Many of these are in their infancy with Alpha or Beta products but their offerings are attractive and come at a premium. These companies take on the integration effort across numerous Social Media Networks so you don't have to. Unlike community based projects this is becoming big business and they are forming tight partnerships with the big players. Whereas they may not be useful for helping you develop your Facebook application or run your Twitter campaign they can really help you access the results and get out the raw data. Common features include the aggregation and normalization of data across multiple Social Networks, and the provision of that data which you may not otherwise have access to.
For example access to 100% of the unfiltered Twitter firehose (i.e. all the data) is very difficult to achieve due to the way the APIs are request limited and the way public streams are filtered to reduce noise. This data is massively valuable so of course companies are keen to offer solutions at a premium. Prices vary and usually charged on a per message basis. These services could prove themselves very valuable, although I suspect we may start to see these offers being made more directly in the future.
Key To Success
The Social APIs are constantly in flux and we shouldn't try to pin them down with middleware. The nature of Social Media is that it's driven by the will of the community and natural evolution. It requires a different thought and development process than traditional frameworks. Embrace the core technologies and build on those rather than the APIs directly. Keep the actual integration light and adaptive, watch out for depreciated APIs. Embrace the new integration mechanisms on offer such as Social Plugins and streaming services. Keep an eye out for data mining services to help aggregate and normalize your data.
The one thing Social Media has taught us is that it's no longer acceptable to force our messaging on the user, or jump on every opportunity to spam them with content. This is reflected in the emerging APIs which curb our dark desires. We need to educate our clients on this and find new ways to reach out. The message is clear, it's about quality, relevance and user consent.
Build it well and they will come!