Pump.io + Community = ♥
Alex Jordan
Let's talk about moi
Arch Linux
Emacs
Git
zsh
Node.js
Firefox
Also about moi
Radical FLOSS zealot
Self-hoster
Pump.io core contributor
High school senior
he/him
Let's talk about this presentation
Originally a lightning talk (5 minutes -> 60 minutes)
What & why of Pump.io
Using it
Brand-new community (+ history)
The "what & why"
Social network
Federated
Successor to StatusNet (aka GNU Social)
That thing that runs identi.ca
Pump.io != StatusNet++
Both written by Evan Prodromou
StatusNet was his first social project
identi.ca circa July-ish 2013
Very complex
Codebase problem & protocol problem
(Side note: Apache 2.0 vs. AGPL)
StatusNet protocol
(Fair warning: this is Long Before My Time™)
OStatus
Atom (status update feed)
PubSubHubbub (post push)
Salmon (comment distribution)
ActivityStreams (favorites, etc.)
Let's talk Salmon
Just as an example.
Comment distribution
Based on Atom/RSS
Data is POSTed back to an endpoint URL in original post
Turns out this is overkill
StatusNet code problems
Everything and the kitchen sink
OpenID
Twitter cross-posting
URL shortening
Publish updates over XMPP
Content embedding (think YouTube)
A lot of this had custom server-side stuff
140 characters
Looked like Twitter
Artificial limits
Eventually evolved to support pictures, etc.
AKA: understood more and more types of ActivityStreams
Enter Pump.io
I post something and my followers see it. That's the rough idea behind the pump.
- README.md
In other words:
Pump.io is just an ActivityStreams distribution engine
ActivityStreams
Usually JSON
Actor, verb and object (+ optional target)
{
"published": "2011-02-10T15:04:55Z",
"actor": {
"url": "http://example.org/martin",
"objectType": "person",
"id": "tag:example.org,2011:martin",
"image": {
"url": "http://example.org/martin/image",
"width": 250,
"height": 250
},
"displayName": "Martin Smith"
},
"verb": "post",
"object" : {
"url": "http://example.org/blog/2011/02/entry",
"id": "tag:example.org,2011:abc123/xyz"
},
"target" : {
"url": "http://example.org/blog/",
"objectType": "blog",
"id": "tag:example.org,2011:abc123",
"displayName": "Martin's Blog"
}
}
The API
OAuth 1.0
Post activities to the user's outbox
Read activities from the user's inbox
Example: let's post a note
POST to my outbox
Pump.io POSTs to my follower's inboxes
Generic ActivityStreams distribution
OpenFarmGame
Implements custom verbs and objects
Pump.io distributes them, no problem
Generic, extensible social server
I post something and my followers see it. That's the rough idea behind the pump.
- README.md
Community
June 22, 2014
Evan pushes the last commit for over a year

The fork
Late August: I send this note to Evan, asking him to nominate a new maintainer
Less than two weeks later, I fork
First commit is September 2, 2016

Bringing it home
September 21, 2015: Evan wants to hand off the code to the community
Informal meeting that same day
Evan grants admin rights to cwebber and jpope
Since then...
The community is small but strong
Meetings third Friday of the month
PRs get merged now
Other awesome stuff
Conservancy
Node transition
Community accounts
MediaGoblin federates with us!
SocialWG (lots of Editors Drafts and beyond)
Looking forward
Bug squashing
Reduce technical debt
Upgrade dependencies
0.3.1
Join us!
#pump.io on Freenode
XMPP: pump.io@muc.jappix.com
e14n/pump.io on GitHub
@pumpdotio or (even better) pumpio@pumpit.info
Sign up for a hosted node...
...or run your own!
Thanks!
I've been AJ
alex@strugee.net (email & XMPP)
alex@pump.strugee.net
@strugee2 (if you must)
strugee on GitHub
strugee.net
Access this presentation again
https://strugee.net/presentation-pumpio
