CINXE.COM
StatusNet, Identi.ca, and transitioning to pump.io [LWN.net]
<!DOCTYPE html> <html lang="en"> <head><title>StatusNet, Identi.ca, and transitioning to pump.io [LWN.net]</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> <META NAME="robots" CONTENT="noai, noimageai"> <link rel="icon" href="https://static.lwn.net/images/favicon.png" type="image/png"> <link rel="alternate" type="application/rss+xml" title="LWN.net headlines" href="https://lwn.net/headlines/rss"> <link rel="alternate" type="application/rss+xml" title="Comments posted to this article" href="https://lwn.net/headlines/544347/"> <link rel="stylesheet" href="/CSS/lwn"> <link rel="stylesheet" href="/CSS/nosub"> <script type="text/javascript">var p="http",d="static";if(document.location.protocol=="https:"){p+="s";d="engine";}var z=document.createElement("script");z.type="text/javascript";z.async=true;z.src=p+"://"+d+".adzerk.net/ados.js";var s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(z,s);</script> <script type="text/javascript"> var ados_keywords = ados_keywords || []; if( location.protocol=='https:' ) { ados_keywords.push('T:SSL'); } else { ados_keywords.push('T:HTTP'); } var ados = ados || {}; ados.run = ados.run || []; ados.run.push(function() { ados_add_placement(4669, 20979, "azk13321_leaderboard", 4).setZone(16026); ados_add_placement(4669, 20979, "azk93271_right_zone", [5,10,6]).setZone(16027); ados_add_placement(4669, 20979, "azk31017_tracking", 20).setZone(20995); ados_setKeywords(ados_keywords.join(', ')); ados_load(); });</script> </head> <body> <a name="t"></a> <div id="menu"><a href="/"><img src="https://static.lwn.net/images/logo/barepenguin-70.png" class="logo" border="0" alt="LWN.net Logo"> <span class="logo">LWN<br>.net</span> <span class="logobl">News from the source</span></a> <a href="/"><img src="https://static.lwn.net/images/lcorner-ss.png" class="sslogo" border="0" alt="LWN"></a><div class="navmenu-container"> <ul class="navmenu"> <li><a class="navmenu" href="#t"><b>Content</b></a><ul><li><a href="/current/">Weekly Edition</a></li><li><a href="/Archives/">Archives</a></li><li><a href="/Search/">Search</a></li><li><a href="/Kernel/">Kernel</a></li><li><a href="/Security/">Security</a></li><li><a href="/Calendar/">Events calendar</a></li><li><a href="/Comments/unread">Unread comments</a></li><li><hr></li><li><a href="/op/FAQ.lwn">LWN FAQ</a></li><li><a href="/op/AuthorGuide.lwn">Write for us</a></li></ul></li> <li><a class="navmenu" href="#t"><b>Edition</b></a><ul><li><a href="/Articles/543792/">Return to the Front page</a></li></ul></li> </ul></div> </div> <!-- menu --> <div class="not-handset" style="margin-left: 10.5em; display: block;"> <div class="not-print"> <div id="azk13321_leaderboard"></div> </div> </div> <div class="topnav-container"> <div class="not-handset"><form action="https://lwn.net/Login/" method="post" name="loginform" class="loginform"> <label><b>User:</b> <input type="text" name="uname" value="" size="8" id="uc" /></label> <label><b>Password:</b> <input type="password" name="pword" size="8" id="pc" /></label> <input type="hidden" name="target" value="/Articles/544347/" /> <input type="submit" name="submit" value="Log in" /></form> | <form action="https://lwn.net/subscribe/" method="post" class="loginform"> <input type="submit" name="submit" value="Subscribe" /> </form> | <form action="https://lwn.net/Login/newaccount" method="post" class="loginform"> <input type="submit" name="submit" value="Register" /> </form> </div> <div class="handset-only"> <a href="/subscribe/"><b>Subscribe</b></a> / <a href="/Login/"><b>Log in</b></a> / <a href="/Login/newaccount"><b>New account</b></a> </div> </div><div class="maincolumn flexcol"> <div class="middlecolumn"> <div class="PageHeadline"> <h1>StatusNet, Identi.ca, and transitioning to pump.io</h1> </div> <div class="ArticleText"> <div class="FeatureByline"> By <b>Nathan Willis</b><br>March 27, 2013</br> </div> <p>Evan Prodromou surprised a number of free software microbloggers in December 2012 when he <a href="http://status.net/2012/12/18/upcoming-changes-in-the-status-net-service">announced</a> that he would be closing down Status.Net, the "Twitter like" software service he launched in 2008, in favor of his new project, <a href="http://pump.io">pump.io</a>. But Status.Net's flagship site, <a href="http://identi.ca/">Identi.ca</a> has grown into a popular social-networking hub for the free and open source software community, and a number of Identi.ca users took the announcement to mean that Identi.ca would disappear, much to the community's detriment. Prodromou has reassured users Identi.ca will live on, though it will move from StatusNet (the software package, as distinguished from Status.Net, the company) over to pump.io. Since then, pump.io has rolled out to some test sites, but it is still in heavy development, and remains something of an unknown quantity to users. <p>Prodromou has some markedly different goals in mind for pump.io. The underlying protocol is different, but more importantly, StatusNet never quite reached its original goal of becoming a decentralized, multi-site platform—instead, the debut site Identi.ca was quickly branded as an open source "Twitter replacement." That misconception hampered StatusNet's adoption as a federated solution, putting the bulk of the emphasis on Identi.ca as the sole destination, with relatively few independent StatusNet sites. The pump.io rollout is progressing more slowly than StatusNet's, but that strategy is designed to avoid some of the problems encountered by StatusNet and Identi.ca. <p>The December announcement started off by saying that Status.Net would stop registering new hosted sites (e.g., <em>foo</em>.status.net) and was discontinuing its "premium" commercial services. The software itself would remain available, and site maintainers would be able to download the full contents of their databases. Evidently, the announcement concerned a number of Identi.ca users, though, because Prodromou posted a <a href="http://status.net/2013/01/09/preview-of-changes-to-identi-ca">follow-up</a> in January, reassuring users that the Identi.ca site would remain operational. <p><blockquote class="ad"> <b><tt>$ sudo subscribe today</tt></b> <p> Subscribe today and elevate your LWN privileges. You鈥檒l have access to all of LWN鈥檚 high-quality articles as soon as they鈥檙e published, and help support LWN in the process. <a href="https://lwn.net/Promo/nst-sudo/claim">Act now</a> and you can start with a free trial subscription. </blockquote> <p>But there were changes afoot. The January post indicated that Identi.ca would be migrated over to run on pump.io (which necessarily would involve some changes in the feature set, given that it was not the same platform), and that all accounts which had been active in the past year would be moved, but that at some point no new registrations would be accepted. <p>Indeed Identi.ca stopped accepting new user registrations on March 26. The shutdown of new registrations was timed so that new users could be redirected to one of several free, public pump.io sites instead. Visiting <a href="http://pump.io/tryit.html">http://pump.io/tryit.html</a> redirects the browser to a randomly-selected pump.io site, currently chosen from a pool of ten. Users can set up an account on one of the public servers, but getting used to pump.io may be a learning experience, seeing as it presents a distinctly different experience than the Twitter-like StatusNet. <h4>What is pump.io anyway?</h4> <p>At its core, StatusNet was designed as an implementation of the <a href="http://www.w3.org/community/ostatus/wiki/Main_Page">OStatus</a> microblogging standard. An OStatus server produces an Atom feed of status-update messages, which are pushed to subscribers using <a href="http://code.google.com/p/pubsubhubbub/">PubSubHubbub</a>. Replies to status updates are sent using the <a href="http://www.salmon-protocol.org/">Salmon</a> protocol, while the other features of Twitter-like microblogging, such as follower/following relationships and "favoriting" posts, are implemented as <a href="http://activitystrea.ms/">Activity Streams</a>. <p>The system is straightforward enough, but with a little contemplation it becomes obvious that the 140-character limit inherited from Twitter is a completely artificial constraint. StatusNet did evolve to support longer messages, but ultimately there is no reason why the same software could not deliver pictures <em>à la</em> Pinterest or Instagram, too, or handle other types of Activity Stream. <p>And that is essentially what pump.io is; a general-purpose Activity Streams engine. It diverges from OStatus in a few other respects, of course, such as sending activity messages as JSON rather than as Atom, and by defining a simple REST inbox API instead of using PubSubHubbub and Salmon to push messages to other servers. Pump.io also uses a new database abstraction layer called <a href="https://github.com/e14n/databank">Databank</a>, which has drivers for a variety of NoSQL databases, but supports real relational databases, too. StatusNet, in contrast, was bound closely to MySQL. But, in the end, the important thing is the feature set; a pump.io instance can generate a microblogging feed, an image stream, or essentially any other type of feed. Activity Streams defines actions (which are called "verbs") that handle common social networking interaction; pump.io merely sends and receives them. <p>The code is <a href="https://github.com/e14n/pump.io/">available</a> at Github; the <a href="https://github.com/e14n/pump.io/wiki">wiki</a> explains that the server currently understands a subset of Activity Streams verbs that describe common social networking actions: <tt>follow</tt>, <tt>stop-following</tt>, <tt>like</tt>, <tt>unlike</tt>, <tt>post</tt>, <tt>update</tt>, and so on. However, pump.io will process any properly-formatted Activity Streams message, which means that application authors can write interoperable software simply by sending compliant JSON objects. There is an example of this as well; a Facebook-like farming game called <a href="https://openfarmgame.com/">Open Farm Game</a>. The game produces messages with its own set of verbs (for planting, watering, and harvesting crops); the pump.io test sites will consume and display these messages in the user's feed with no additional configuration. <p>The pump.io documentation outlines the other primitives understood by the server—such as the predefined objects (messages, images, users, collections, etc.) on which the verbs can act, and the API endpoints (such as the per-user inbox and outbox). Currently, the demo servers allow users to send status updates, post images, like or favorite posts, and reply to updates. Users on the demo servers can follow one another, although at the moment the UI to do so is decidedly unintuitive (one must visit the other user's page and click on the "Log in" link; only then does a "Follow" button become visible). But Prodromou said in an email that more is still to come. <p>For those users and developers who genuinely prefer StatusNet, the good news is that the software will indeed live on. There are currently two actively-developed forks, <a href="http://www.gnu.org/software/social/">GNU social</a> and <a href="http://freesocial.org/">Free & Social</a>. Prodromou said there was a strong possibility the two would merge, although there will be a public announcement with all of the details when and if that happens. <h4>Where to now?</h4> <p>Pump.io itself (and its web interface) are the focus of development, but they are not the whole story. Prodromou is keen to avoid the situation encountered at the StatusNet launch, where the vast majority of new users joined the first demo site (Identi.ca), and it became its own social network, which ended up consuming a significant portion of StatusNet's company resources. Directing new registrations to a randomly-selected pump.io service is one tactic to mitigate the risk; another is intentionally limiting what pump.io itself will do. <p>For instance, while StatusNet could be linked to Twitter or other services via server-side plugins, pump.io will rely on third-party applications for bridging to other services. Prodromou cited TwitterFeed and IFTTT as examples. "<q>My hope is that hackers find pump.io fun to develop for,</q>" he said, "<q>and that they can 'scratch an itch' with cool bridges and other apps.</q>" The narrow scope of pump.io also means that a pump.io service only serves up per-user content; that is to say, each user has an activity stream outbox and an inbox consisting of the activities the user follows, but there is no site-wide "public" stream—no tag feeds, no "popular notices." <p>That may frustrate Identi.ca users at the beginning, Prodromou says, but he reiterates that the goal is to make such second-tier services easy for others to develop and deploy, by focusing on the core pump.io API. For example, the pump.io sites forward all messages marked as "public" to the ofirehose.com site; any developer could subscribe to this "fire hose" feed and do something interesting with it. Ultimately, Prodromou said, he hopes to de-emphasize the importance of "sites" as entities, in favor of users. Users do not care much about SMTP servers, he said; they care about the emails sent and received, not about enumerating all of the accounts on the server. <p>That is true in the SMTP world (one might argue that the only people who care to enumerate the user accounts on a server probably have nefarious goals in mind), but it does present some practical problems in social networking. Finding other users and searching (both on message content and on metadata) have yet to be solved in pump.io. Prodromou said he is working on "find your friend" sites for popular services (like Facebook and Twitter) where users already have accounts, but that search will be trickier. <h4>Identi.ca and other things in the future</h4> <p>Eventually, the plan is for Identi.ca to become just one more pump.io service among many; the decentralization will mean it is no harder to follow users on another pump.io server or to carry on a conversation across several servers than it is to interact with others on a monolithic site like Twitter. But getting to that future will place a heavier burden on the client applications, be they mobile, web-based, or desktop. <p>Prodromou has not set out a firm timeline for the process; he is working on the pump.io web application (which itself should be mobile-friendly HTML5) and simple apps for iOS and Android. In the medium term, the number of public pump.io sites is slated to ramp up from ten to 15 or 20. But at some point Prodromou will start directing new registrations to a free Platform-as-a-Service (PaaS) provider that offers pump.io as a one-click-install instead (AppFog and OpenShift were both mentioned, but only as hypothetical examples). <p>Where pump.io goes from there is hard to predict. Prodromou is focused on building a product developers will like; he deliberately chose the permissive Apache 2.0 license over the AGPL because the Node.js and JavaScript development communities prefer it, he said. Applications, aggregation, and PaaS delivery are in other people's hands, but that is evidently what he wants. As he explained it, running Status.Net took considerable resources (both human and server) to manage hosted instances and public services like Identi.ca, which slowed down development of the software itself. "<q>I want to get out of the business of operating social networking sites and into the business of writing social networking software.</q>" <p>At some point in the next few months, Identi.ca will switch over from delivering OStatus with StatusNet to running pump.io. That will be a real watershed moment; as any social-networking theorist will tell you, the value of a particular site is measured by the community that uses it, not the software underneath. Identi.ca has grown into a valued social-networking hub for the free software community; hopefully that user community survives the changeover, even if it takes a while to find its bearings again on the new software platform.<br clear="all"><hr width="60%%" align="left"> <form action="/Login/" method="post"> <input type="hidden" name="target" value="/Articles/544347/" /> <input type="submit" name="login" value="Log in" /> to post comments <p> </div> <!-- ArticleText --> <p><a name="Comments"></a> <a name="CommAnchor544802"></a> <details class="CommentBox" open> <summary><h3 class="CommentTitle">StatusNet, Identi.ca, and transitioning to pump.io</h3> <div class="AnnLine"> <p class="CommentPoster"> Posted Mar 28, 2013 5:37 UTC (Thu) by <b>karim</b> (subscriber, #114) [<a href="/Articles/544802/">Link</a>] (2 responses) </p> </div> </summary> <div class="FormattedComment"> I've never used Identica and never would have. I was (and still am) a very heavy Twitter user and have lately taken up Google+ because that's where all the open source geeks are. Rolling out my own StatusNet wouldn't really have been that useful either.<br> <p> Pump.io, though, is something I'm keeping a very close eye on. I've been considering rolling out my own server ever since I heard about it. Two reasons: 1. federation, 2. Apache licensing. I'm actually surprised this article somewhat lately discusses the 2nd aspect. I think that this is a strategically well thought out move that will show its value in due time.<br> <p> Though I don't have the resources to keep updating a server to follow development versions, the more mature pump.io gets the more likely I'll roll out an instance.<br> </div> <div class="CommentReplyButton"> <form action="/Articles/544802/comment" method="post"> <input type="submit" value="Reply to this comment"> </form> </div> <p> <a name="CommAnchor560469"></a> <details class="CommentBox" open> <summary><h3 class="CommentTitle">StatusNet, Identi.ca, and transitioning to pump.io</h3> <div class="AnnLine"> <p class="CommentPoster"> Posted Jul 24, 2013 10:10 UTC (Wed) by <b>sickofthesea</b> (guest, #87341) [<a href="/Articles/560469/">Link</a>] </p> </div> </summary> <div class="FormattedComment"> identi.ca was full of open source geeks. In fact it was hard to find posts that weren't related to it in some way. You missed out and now all the geeks have no option but to use Google+ and Twitter until someone comes to rescue us geeks from their evil clutches! I miss identi.ca :-(<br> </div> <div class="CommentReplyButton"> <form action="/Articles/560469/comment" method="post"> <input type="submit" value="Reply to this comment"> </form> </div> <p> </details> <a name="CommAnchor632827"></a> <details class="CommentBox" open> <summary><h3 class="CommentTitle">StatusNet, Identi.ca, and transitioning to pump.io</h3> <div class="AnnLine"> <p class="CommentPoster"> Posted Feb 11, 2015 11:22 UTC (Wed) by <b>shiju86.v</b> (guest, #100998) [<a href="/Articles/632827/">Link</a>] </p> </div> </summary> <div class="FormattedComment"> Hello<br> <p> I am integrate pump.io social server on my iOS development. The pump.io server has created/installed at our server end. I am stuck with user registration/login process. As we know, user registration with passing different parametrs and get response as well. Actually, i need to check the api URL's. So that i familiar with the api鈥檚.<br> <p> I get the feeds, followers and following with this url:: <a rel="nofollow" href="https://<hostname">https://<hostname</a>>/api/user/<nick name>/feed<br> <p> Trying to register: <a rel="nofollow" href="https://<hostname">https://<hostname</a>>/api/register/nickname=sam&password=sam<br> But bad luck. I don't know what i am missing. Please suggest me. Waiting your response. You can also email me at shiju.varghese@dekhdekh.com<br> <p> Regards<br> Shiju Varghese<br> </div> <div class="CommentReplyButton"> <form action="/Articles/632827/comment" method="post"> <input type="submit" value="Reply to this comment"> </form> </div> <p> </details> </details> </div> <!-- middlecolumn --> <div class="rightcol not-print"> <div id="azk93271_right_zone"></div> </div> </div> <!-- maincolumn --> <br clear="all"> <center> <P> <span class="ReallySmall"> Copyright © 2013, Eklektix, Inc.<BR> This article may be redistributed under the terms of the <a href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons CC BY-SA 4.0</a> license<br> Comments and public postings are copyrighted by their creators.<br> Linux is a registered trademark of Linus Torvalds<br> </span> </center> </body></html>