tpac-2016-and-review-activitypub.html 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. <html>
  2. <head>
  3. <title>ActivityPub and MediaGoblin at TPAC 2016 (or: ActivityPub needs your review!)</title>
  4. <meta name="date" contents="2016-10-05 11:45" />
  5. <meta name="author" contents="Christopher Allan Webber" />
  6. <meta name="tags" contents="activitypub, standards, w3c, tpac" />
  7. </head>
  8. <body>
  9. <p class="centered">
  10. <a href="https://www.w3.org/TR/activitypub/">
  11. <img src="/blog_images/activitypub_wd_2016-09-04.png"
  12. alt="Screenshot of ActivityPub Working Draft" />
  13. </a>
  14. </p>
  15. <p>
  16. Hello everyone!
  17. We have a lot of news to cover, but I'm going to jump right into the
  18. thick of it: we've been working hard on a new federation (as well as
  19. client to server) standard called
  20. <a href="https://www.w3.org/TR/activitypub/">ActivityPub</a>
  21. (formerly ActivityPump).
  22. We've made tremendous progress, and I was just recently at a face to
  23. face meeting at <a href="https://www.w3.org/2016/09/TPAC/">TPAC</a>,
  24. the W3C's big technical conference.
  25. </p>
  26. <p>
  27. The good news: ActivityPub is aiming to hit Candidate Recommendation
  28. status by October 11th.
  29. (That's less than a week away!)
  30. However, in order to enter that stage, we need <i>your review!</i>
  31. If you have any interest in the decentralized web, you can help.
  32. All you have to do is
  33. <a href="https://w3c.github.io/activitypub/">read the latest editor's</a>
  34. draft and provide feedback.
  35. (The earlier the better... maybe a fun weekend project?)
  36. You can do this by any of the following:
  37. </p>
  38. <ul>
  39. <li>
  40. Post
  41. <a href="https://github.com/w3c-social/activitypub/issues">issues on the issue tracker</a>
  42. (yes, I think it's ironic and problematic that we're using GitHub,
  43. I picked my battles here, whether right or wrong).
  44. </li>
  45. <li>
  46. Email the
  47. <a href="http://lists.w3.org/Archives/Public/public-socialweb-comments/">social working group comments</a>
  48. mailing list.
  49. </li>
  50. <li>
  51. You can email me directly.
  52. Email cwebber AT dustycloud DOT org, and include "ActivityPub" in
  53. the subject.
  54. Note that I will be publishing your comments publicly, probably
  55. on the Social Working Group wiki!
  56. </li>
  57. </ul>
  58. <p>
  59. If you have feedback, we want to hear it!
  60. (From anyone, but <i>especially</i> from those who are interested in
  61. implementing ActivityPub!)
  62. Thank you!
  63. </p>
  64. <h2>ActivityPub live</h2>
  65. <p><i>
  66. Note, the rest of this post is a bit of a dive into behind the scenes
  67. decisions and activity in MediaGoblin and ActivityPub... there's no need to
  68. read this part to submit a review!
  69. </i></p>
  70. <p>
  71. I'm kind of traveling through time in all the wrong order in this post...
  72. but it's worth jumping forward a bit to see the results of what we've done.
  73. Over the last many months there's been a huge push on ActivityPub as a
  74. standard, as we'll talk about.
  75. But in order to succeed, I also needed implementations, both of client to
  76. server and server to server.
  77. Well, I'm happy to say that those did come together...
  78. </p>
  79. <p class="blog_image">
  80. <a href="/blog_images/pubstrate-2016-09-14.png">
  81. <img src="/blog_images/pubstrate-2016-09-14-scaled.png"
  82. alt="Pubstrate in action!" /></a>
  83. </p>
  84. <p>
  85. This is <a href="https://gitlab.com/dustyweb/pubstrate">Pubstrate</a>,
  86. an implementation of ActivityStreams and ActivityPub for
  87. <a href="https://www.gnu.org/software/guile/">GNU Guile</a>.
  88. Sorry for the sappy embedded love-note, though what's nice about this
  89. is that it's the first demo I gave to someone else of the client to
  90. server functionality working in Pubstrate.
  91. But wait, what was the client?
  92. </p>
  93. <p class="blog_image">
  94. <a href="/blog_images/soci-el-2016-09-14.png">
  95. <img src="/blog_images/soci-el-2016-09-14-scaled.png"
  96. alt="Soci-El in action!" /></a>
  97. </p>
  98. <p>
  99. This is <a href="https://gitlab.com/dustyweb/soci-el">soci-el</a>,
  100. an ActivityPub client written in... you guessed it... emacs lisp.
  101. You can see the rendering of the user's outbox here as well as the
  102. buffers from which the message was composed.
  103. </p>
  104. <p>
  105. Pretty nerdy!
  106. I don't expect everyone to be using emacs as an ActivityPub client of
  107. course... I hope to see various desktop, web, and mobile clients
  108. made available.
  109. But, Emacs is the most fun for me, and I was time pressed, so
  110. there we are.
  111. </p>
  112. <p>
  113. Everyone loves seeing screenshots, but maybe not all of this stuff
  114. makes sense without context.
  115. What does this mean for MediaGoblin?
  116. </p>
  117. <h2>So what's been going on?</h2>
  118. <!-- - So what's been going on?
  119. Talk about despite an appearance of absence, I've been working furiously...
  120. -->
  121. <p>
  122. It seems a recurring meme in MediaGoblin land to say "we've been quiet, because
  123. we've been busy" (or maybe historically on every tech blog ever), but I guess
  124. I can't resist repeating the mantra.
  125. It's true!
  126. Though the weight of my focus has been shifted from where I expected it to be.
  127. From the
  128. <a href="http://mediagoblin.org/news/mediagoblin-0.9.0-three-goblineers.html">last</a>
  129. <a href="http://mediagoblin.org/news/stripe-retreat-state-of-the-goblin.html">few</a>
  130. <a href="http://mediagoblin.org/news/state-of-the-goblin-september-2015.html">updates</a>
  131. over the last year, you would be right to anticipate that the main thing I would
  132. be working on would be merging the
  133. <a href="http://mediagoblin.org/news/state-of-federation.html">federation code Jessica
  134. has written</a>
  135. and getting 1.0 out the door.
  136. That was the plan, and we're still working towards that, but
  137. priorities shifted as we realized the opportunities and time
  138. pressures we were under with ActivityPub.
  139. After the Social Working Group
  140. <a href="https://www.w3.org/wiki/Socialwg/2016-06-06">face to face meeting in June</a>,
  141. Jessica and I sat down and talked about what we should do.
  142. Jessica had recently started working at
  143. <a href="https://www.igalia.com/">Igalia</a> (great people!) and
  144. was busy with that and other transitions in her life, so we discussed
  145. whether we thought it was most sensible to focus my energy on MediaGoblin
  146. or on ActivityPub.
  147. It was clear that ActivityPub was shaping into a solid specification,
  148. but it was also made clear that the Social Working Group's charter was
  149. running out by the end of 2016.
  150. We both think ActivityPub is key to MediaGoblin's success and didn't want
  151. to see our invested time go to waste, so decided my immediate focus
  152. should switch to ActivityPub so it could successfully make it as
  153. a standard.
  154. </p>
  155. <p>
  156. Which isn't doom and gloom for MediaGoblin!
  157. MediaGoblin development has continued... the community is good enough that
  158. people have been able to work while I've been busy.
  159. I'm happy to say we also appointed longtime contributor Boris Bobrov as
  160. co-maintainer to help reduce me being a bottleneck.
  161. (Thank you Boris, and congrats!)
  162. Other contributors have also stepped up to the plate.
  163. I'm especially thankful of Ben Sturmfels for hosting MediaGoblin hackathons
  164. and being so responsive to community members.
  165. (And of course, there are many others to thank, too!)
  166. </p>
  167. <!-- + I realized I was going to have to go head down... so I spent my effort on
  168. ActivityPub, and ActivityPub implementations...
  169. -->
  170. <p>
  171. Anyway, I'm not going anywhere, I've just been shifting focus to standards
  172. work for a bit... but it's all for the greater good of MediaGoblin.
  173. (Well, and the greater federated social web!)
  174. Soon, we'll be putting the work we're doing on ActivityPub directly
  175. into MediaGoblin.
  176. When we merge Jessica's work on federation, we will also retool it so that
  177. the first federated release of MediaGoblin will be blazing the trails with
  178. ActivityPub.
  179. </p>
  180. <!-- + Amy visiting... -->
  181. <!-- TODO: Amy photo here -->
  182. <p>
  183. Both ActivityPub and I personally got a significant boost by a happy visit
  184. from friend and Social Working Group co-conspirator Amy Guy.
  185. Amy dropped by for an intense four days of standards hacking and scheming,
  186. and came up with several significant ways to restructure and improve the
  187. document.
  188. With her help, we now have much clearer distinction between the use of
  189. ActivityPub as a client to server protocol (think mobile applications and
  190. desktop applications connecting to your server) vs the server to server
  191. protocol (federation).
  192. Both of these are now clearly intertwined in the document, but are distinct
  193. enough where they can be used and understood separately if desired.
  194. We also more clearly established the connections between ActivityPub and
  195. the linked data community by explaining ActivityPub's relationship with
  196. <a href="https://www.w3.org/TR/ldn/">Linked Data Notifications</a>.
  197. </p>
  198. <p>
  199. Amy has a gift for composing standards language, something I'm still
  200. struggling to learn (but hopefully getting better with over time).
  201. ActivityPub is much better with her hard work.
  202. Thank you Amy!
  203. </p>
  204. <!-- + hopefully I could get them ready in time for... -->
  205. <p>
  206. In addition to the standards side of things, in order to get ActivityPub to
  207. the next level, we needed to be able to present real live demonstrations
  208. of the standard in action.
  209. Hence the work on Pubstrate and soci-el mentioned previously.
  210. For most of the months before TPAC, I was working furiously day and night
  211. to get things ready to show...
  212. And then, it was time to head off, and hope it was good enough...
  213. </p>
  214. <!-- - TPAC! -->
  215. <h2>TPAC</h2>
  216. <p class="blog_image">
  217. <a href="https://www.w3.org/wiki/File:2016-09-21-socialwg-breakout.jpg">
  218. <img src="/blog_images/2016-09-21-socialwg-breakout-by-aaronpk-scaled.jpg"
  219. alt="Live demo image, by aaronpk" />
  220. </a>
  221. <br/>
  222. <em>
  223. TPAC demo room photo by
  224. <a href="https://aaronparecki.com/">Aaron Parecki</a>
  225. </em>
  226. </p>
  227. <p>
  228. Fortunately, all that hard work paid off.
  229. The Social Working Group kicked off TPAC with live open-viewing
  230. demonstrations of the various standards we've been working on.
  231. We got in a really solid set of demos from everyone in the
  232. group.
  233. </p>
  234. <!-- + Giving live demos -->
  235. <p>
  236. From my end, I managed to demo all the core parts of the ActivityPub
  237. spec: I wrote a note in my client (soci-el), fired it off to the server
  238. (Pubstrate), where it rendered successfully.
  239. Then I explained, well, what if you want someone on another machine to
  240. see it?
  241. So I had another user on a separate Pubstrate instance, added
  242. the user over there to the recipients list on my message, shot
  243. the message over to the server, crossed my fingers and hey!
  244. The live demo of federation succeeded.
  245. (Whew!)
  246. </p>
  247. <!-- + State of the specs post-meeting -->
  248. <p>
  249. In the actual main Social Working Group meeting, we hammered things
  250. forward pretty nicely.
  251. As said, ActivityPub was positioned to move ahead towards
  252. Candidate Recommendation by the 11th.
  253. Again, your feedback is most valuable at this time!
  254. </p>
  255. <!-- + One more thing: at Amy Guy's suggestion, I showed off the
  256. MediaGoblin campaign video -->
  257. <p class="blog_image">
  258. <a href="/pages/campaign.html">
  259. <img src="/images/campaign/video2_poster-surveillance.png"
  260. alt="Spying image from the campaign video" /></a>
  261. </p>
  262. <p>
  263. Oh, one more thing.
  264. On the second day of the main Social Working Group meetings,
  265. at Amy's suggestion (apparently she was impressed when I showed her
  266. at her visit), I showed off the MediaGoblin campaign video to
  267. the group.
  268. Apparently I had never done so previously, so it was really nice
  269. to hear the reaction: "Holy cow, this is describing exactly the
  270. type of stuff we're working on in the working group!"
  271. Yep, exactly... all that stuff you see illustrated in that video,
  272. we're working on putting into code and standards.
  273. The dream lives!
  274. </p>
  275. <p>
  276. So, all this Social Working Group stuff... things are happening!
  277. We're not just goofing off!
  278. </p>
  279. <p class="blog_image">
  280. <a href="https://www.w3.org/wiki/File:2016-09-23-socialwg-group-animated.gif">
  281. <img src="/blog_images/2016-09-23-socialwg-group-animated-by-aaronpk.gif"
  282. alt="TPAC 2016-09-23 goofoff gif by aaronpk" />
  283. </a>
  284. <br/>
  285. <em>
  286. Super serious TPAC group "photo" by
  287. <a href="https://aaronparecki.com/">Aaron Parecki</a>
  288. </em>
  289. </p>
  290. <p>
  291. ... er, right.
  292. Not <em>just</em> goofing off! :)
  293. </p>
  294. </body>
  295. </html>