Over the last few years we witnessed a change in the development world. Not only did products become more social in themselves, but the whole process of development became much more transparent. Companies offer open source versions of their products and give access to their data via Application Programming Interfaces or short APIs. Software is being hosted on repositories with social aspects, training material is spread across the social web, people leverage existing social graphs and build products live in the cloud.
Today I want to show why this is happening and what benefit developers have from "thinking social" when it comes to creating, releasing, testing and extending products.
Offering an API to "outsource innovation"
The first trick to make your product social in a sense that people will learn about it and be able to contribute is to offer an API. Programmable Web as the main authority for APIs to date lists 2755 APIs with 5527 mashups created with them. That is a lot of innovation and creativity developed outside an official employment agreement.
Almost all products work on top of data. The main issue is getting the data, keeping it up to date and making it simple to amend and change. The best way to do this is to embrace the idea of data as the life blood of your application and making yourself independent of the interface. As sending around databases is not viable the simplest and most successful way of doing this is by offering a data API.
Most of the great successes in the social space are based on APIs:
The photo sharing site Flickr was probably the first to allow you to browse photos on their site but also easily get them in XML format to use in other products. A write API also allowed people to write tools to upload folders of pictures instead of each photo individually. The use of tags and later on machine tags also allowed people to promote their uploading tools in the system itself.
Twitter would not have been the success it is now if it didn't allow people to both send and retrieve content to and from its systems via an API. Instead of having to go to the site and use the interface you could tweet from SMS services, via email, from other services and even automatically by writing a simple robot script that reacts to requests from the users. This did not only make Twitter a content aggregation and human communication system but also an API endpoint in itself.
For example instead of telling people to come to your dictionary site you can write a Twitter bot that allows people to do lookups without leaving their Twitter client. Talking about clients - Air clients like Twhirl and Tweetdeck are still very much the interface people use to participate in Twitter. The reason is that it is less work to switch to a dedicated application for Twitter than to have it running in a browser tab interfering with your normal work. A dedicated app doesn’t slow down the browser and makes your Twitter usage an opt-in instead of a distraction.
Besides making it easy for people to retrieve and add data to your systems APIs have other benefits. Most importantly you get the benefit of "crowdsourcing innovation".
Being innovative and creative is one of the most important features of a successful web company. Both your end users and your stakeholders want to see you on the bleeding edge and expect new things all the time. Innovation inside companies is hard as there are the day to day chores to deliver and people are too close to the subject matter to come up with new use cases. People on the outside are not hindered by any of these, which is why it is a good plan to let them play with your systems.
This is why companies release APIs, SDKs and hold hackathons, hackdays and run university outreach programs. A developer who already proved they like your products, understands how to use them and built something cool is a hire that could give your company exactly the kick it needs.
Offering an API is one way to find developers to collaborate with but there is a much better place to find both people and reusable code for you.
Hosting code on social repositories
Version control has been an essential part of professional development for quite a while now. It keeps your products safe as mistakes can be undone and you can keep various parallel versions of the same product to try out new features without changing the live system. It also allows several developers to build collaboratively without overriding each other’s efforts.
The natural evolution of that was to build a social dimension on top of it. GitHub did exactly that by offering a code hosting solution and social network on top of Git. Developers can host their code on GitHub and get embeddable snippets (called Gists) of their code to show in tutorials and articles whilst staying maintainable in the main repository. You can follow the efforts of other developers and get notified automatically when a certain product has changed. Your code repository also comes with a Wiki and other developers can take copies of your product and enhance them and tell you when their changes have been applied.
Another new system with a more “show off” feel is Forrst. There developers can show off links and code snippets to each other much like designers do at Dribble.
These social systems for developers have lately become a very fertile ground to find great code, connect with likeminded people and to find talent to hire. Recruiters who know their job start looking at people’s GitHub profiles before checking their CV.
The next step technically is to enable people to collaboratively edit code live on the repositories.
Collaborative live development
One rather new movement is to provide hosted editing solutions. We put the data and we put the APIs in the cloud and collaborate on its accumulation and the improvements but we still all use our own editors when changes happen. This also means we constantly need to wait for the other person to add their changes to the source control before we can implement them. This is why the most important part of a good version control system is the merging algorithm. In a world where everything is virtual and the end machine we are using doesn’t really need any installed software the logical next step is to collaboratively write code in a hosted service.
There are a few products that allow you to do that. Etherpad was the first and is still used by companies (Mozilla for example uses it), MobWrite is another contender. Whilst both of these primarily target text editing other systems are built for writing code. One of those is Mozilla Bespin which is also used in collective online editing suites like Kodingen. Others, like Cloud9 IDE and Coderun studio go even further and try to replicate a full IDE like Eclipse in the browser. Lately, and probably also to promote their cloud-based Chrome operating system (with the CR48 laptop) Google also added a live code editor to the Google Code repository.
Getting developers excited about your product is one thing, but to be a success you also need end users. This is where special APIs come in that allow you to piggyback on existing social graphs.
Login with existing services and oAuth
These days it is pretty much pointless to start with your own login system. End users are getting bored of having to come up with passwords to use for a system and instead reuse simple or domain-specific ones. The Gawker hack earlier this year revealed this in scary detail. This is dangerous and will result in many security issues in the long run. This is why oAuth was invented. This protocol allows your end users to sign up to your system with one of the identities they already have on the web. Twitter, Facebook, Yahoo, Google and others offer this and it makes sense to have this option for your end users rather than spending time building and maintaining your own login service. A great example of that is Screenr, which we will come back to later on. Another big success story is Disqus which replaces comment systems on blogs which would be full of spam within hours unless you use filtering systems like Akismet. Disqus allows users to post comments with various identities and tracks both comments and Twitter reactions to your article for you.
With oAuth you make systems talk to each other rather than requesting repeatedly the same information from users. Furthermore, you can get more information about your users from their identity in the other system and the social graph they built there.
Importing information from other services
In addition to not asking your users to come up with yet another identity on the web allowing them to sign in with an existing profile also gives you access to more information about them like their geographical location and their friends. Making people advocate your product to their friends becomes easy and happens naturally in the environment where they are already communicating with each other.
Furthermore you can also ask them to import information they have already uploaded somewhere else into your system. A Yahoo login for example allows you to offer an import of people’s photos from Flickr or to host the photos uploaded in your system there. The same applies to Google and YouTube. By using oAuth you allow people to reuse what they had already done on the web rather than asking them to start again from scratch.
Another very successful technique to promote technologies and products is to show them in action instead of just talking about them.
Hosting screencasts on social video sites
Screencasts are a very simple way to say a lot about your product or explain a certain technology without having to go into detail or write a long description nobody reads. It has never been easier to create them. A few services allow you to record what is happening on your screen and immediately use the social web to promote them. Screenr for example is a Java Applet that asks for access to your computer and allows you to define the part of the screen you want to record. You sign into Screenr using your Twitter account. Once you recorded your video, Screenr converts it to an embeddable video and allows you to tell Twitter about it. An “export to YouTube” button also allows you to host it on YouTube and allow for rating and comments there. The whole process takes a quarter of an hour as the video gets converted live. The benefit of hosting your screencasts on YouTube is that there is where people look for them. The benefit of telling Twitter about it is that people can easily retweet it for you. The only drawback Screenr has is that your video is limited to 5 minutes recording time. Screencast-o-Matic is another service that offers unlimited length recording but is not free.
I found sending around a screencast on how to use a system or develop some script saved me a lot of back and forth in emails. It is true that a picture says more than a thousand words and a moving picture even more so.
Social bookmarking and discussion
Finding good, up-to-date information has never been simple. As there is money in ad impressions and clicks you will always find that for some technical terms products show up as the first results in search engines. The countermovement from the tech crowd are social bookmarking and discussion sites where developers keep their stash of great resources and discuss the quality of links that are currently hot. Delicious is the granddaddy of this field and still a great place to follow luminaries of certain subject matters. It also offers a simple API to get information returned for a certain tag. I for example use Delicious to build my portfolio page dynamically by bookmarking my own content on the web.
Reddit and Hacker News have also been used and lately instead of just showing and discussing resources question and answer systems like Stackoverflow and Quora are hot resources.
Summary
Social media is a very interesting area at the moment. Whilst on the surface it is full of celebrity gossip and people showing off it offers a lot for developers. You can find the code you need, allow people to add content to your product and people to collaborate with simply by taking part and treading the cowpaths instead of inventing your own solution and offering it to a world that already suffers from information channel overload.