* Hello, welcome #+BEGIN_SRC text * /\ /\ /o \ /\ ,--,/,----, / / /_ _o\ \ \ ( ) \ \__.' ' './ / _,'-----,__,;_ \___.---'---___/ *CLINK!* '.-. .-. / -, / @ @_ .-. .-. >' / ) _ ' |~|,, (o ) (o ) ) ;_-' _(,\__,) | |\/\ '-, ,--', ',-, / \ \'uuuu' '.' '-' '-v-v-v-'_' ) ,' "", '---'. ,|. 3')\,'------' ,-' \ / """,--, '-'|_| |_/ / (\,)__,' ; / / '"\\\'--- \_ ; / ' \ \ | #+END_SRC ** Sorry Ascii art as compensation for poor presentation format #+BEGIN_SRC text /\_/\ / 0.0 \ == _|_ == _ / \ / \ | || || | /\| |_|_|_|_|_| #+END_SRC ** Lots of people ask me to define federation But first, what do YOU think federation is? Okay, my version #+BEGIN_SRC text ,------------------------------------, | GNUTOP | | .--------------------------------. | | | , / \ | | | | |\| | | | | | [/usr/lib]$ make the_future ; | | | | \ //-, ,-\\ ,/ | | | | '.( o )'----'( o )./ / | | | | ; '-' '-' ; | | | | \ / | | | | \ '-.___, / | | | | \ / | | | | ', ,' | | | | ,.-'-.__.-'-., | | | | /\ /\ | | | '--------------------------------' | ;'----------------------------------'; / ,-,-,-,-,-,-.-.-.-.-.-.-.-.-.-.--. \ / -'-'-'-'-'-'-''-'-'-''-'-'-'-'-'--' \ #+END_SRC * So, what does federation mean #+BEGIN_SRC text \\||// / \ ~\\\\|||////~ |======| _/ \_ (|(o)(o)|) (_ ( o) (o ) _) | (__) | \ ___(_)___ / \<____>/ =\\_______//= ||\____/|| ===='-------'==== |||||||||||| =================== #+END_SRC ** To a user What kind of things *might* we federate? - On a "facebook alternative"? - In MediaGoblin? - A multiplayer game? #+BEGIN_SRC text \'. \ '. \ \ _L__L_ //~ ~ G > / \\\\-------.__ * * * * / ' \\\______ |T * MAGIC * | \ \\ \| * * * * #+END_SRC ** Break that down technically #+BEGIN_SRC text ^---^ /o_._o\ v _____ v |/ \| \\_____// uuu uuu #+END_SRC *** Propagating state ("eventual consistency") #+BEGIN_SRC text T .-'- | O_O| INCOMING TRANSMISSION '----' --------------------- // ooo|\ ag3x081xag-w104.?013! //| |XX|\\ gz3148508asvxz-1234ho C | ---| C va1*4)#fgapoi~09PVZqo #+END_SRC *** Performing actions (side effects) #+BEGIN_SRC text Q_____________,, _ _ _ _ / / , ,/oooo// /_\_/_\_/\ /_\_/_\_/\ \ \__\_\\----\\ ' \_/ \_/' ' \_/ \_/' / ,/ |__\ PEW! PEW! #+END_SRC *** Publish/subscribe #+BEGIN_SRC text "\/, \ -===''==''====== / "^ ^"; ' ` =o.o= )# ),~, ( ( ; "' "' HANG IN THERE! #+END_SRC *** Authentication #+BEGIN_SRC text .. .. \.-./ \ (o o) \ /\ /"""\ /\ '' '' BEWARE OF FALLING LAMBDAS! #+END_SRC * Want to get started? (using PyPump) http://pypump.org/en/latest/ #+BEGIN_SRC text .---. _|o__ |_ ' | ' ( .----' ) '_| ____' | o | '---' #+END_SRC ** Screw it, we'll do it live! http://pypump.org/ #+BEGIN_SRC text __________ / \ | O______O | | |\/\/\/\/| | / | | \ _//| |/\/\/\/\| |\\_ (_/ | | \_) | | | \____/ | _|_ | | _|_ (_____| |_____) #+END_SRC ** Are we federating yet??? (this is technically client to server, though as we'll see there's very little difference between the three) #+BEGIN_SRC text __________ .-' '-. .' '. .' _--_ _--_ '. / / (_). / (_). \ . | | | | . | ._____, ._____, | | ____________________ | | | | | ' \ / ' \ '. .----./ / \ '._ / / / '. '--------' .' '._ _.' '----------' #+END_SRC * Federation history, in brief #+BEGIN_SRC text /\ / \ .---; ;---. ( --, '-- ) "--| ,--. |--' |' \| #+END_SRC ** (non/pre-web federation) (Email/SMTP, XMPP, etc) #+BEGIN_SRC text LONDO MOLARIIIII /\/\/\ / ||||||==||||||||||====,________ ||||||_ ____ ____ \-----, _,-,____|||||| |--|####|------|____|---,__,--,|=== ||==_ ---==========_|####| |-- |= __ | '-' ||||||_| |####|------|____|---' '--' |||||| |||||| \/\/\/ NOT STAR TREK #+END_SRC ** The Original Series OStatus, blah blah #+BEGIN_SRC text ,-,,-''''-, ,-, /##" /###' '#' _ _ \###/ ",/o| /o\, '-'" " \_/ \__/ "###" " / __ \ "#####" #",'_\_/_' "#######" ##" '---' "#########" ##" "########" " NOT SPOCK #+END_SRC ** The Next Generation Pump.IO and ActivityPump (Maybe some other things) #+BEGIN_SRC text ,------, . ; \ , / \/ ,_, ,_,'/ \ \ U U )/ ,_> '-____-' ; \ \ \;VuuV/ / '-, '.---;' '-,__) ) ) '._.' NOT PICARD #+END_SRC ** Work at the w3c http://www.w3.org/Social/WG #+BEGIN_SRC text , ______|#|______ _[_______________]_ [|__POLICE_"""_BOX___|] || _____ | _____ || || | | | ||| | | | || || |-|-|-|||-|-|-| || || |_|_|_|||_|_|_| || || ,-----,|,-----, || || |,---,||| | || || ||,.,|||# | || || '-----'|'-----' || || ,-----,|O-----, || || | ||| | || || | ||| | || || '-----'|'-----' || || ,-----,|,-----, || || | ||| | || || | ||| | || ||_'-----';'-----'_|| [_____________________] ALSO NOT STAR TREK #+END_SRC *** Why are Jessica and I spending time on this? #+BEGIN_SRC text (())()) ))) ,, ( MY LITTLE ((( o ,\ FOSSPONY _))) \__/ (( <3 ) )),_____,\\ / // \ \\ '--'' '--'' #+END_SRC *** Parallel standards, but possible convergence #+BEGIN_SRC text \ /_o_/' o / /_ _)=` / / \ \ HYAAAA #+END_SRC * A technical dive into ActivityPump #+BEGIN_SRC text ___ ___ ___ _/ \_ _/ \_ _/ \_ ,/-\, /\___/\ /\___/\ /\___/\ / o_|| | | | | | | | | | | | | | ., '_.----, \ ^___^ / \ ^___^ / \ ^___^ / \// /// \,/ \\ ------__ ------__ ------__ \||/\,/ \.//. _(___(__) _(___(__) _(___(__) \\./_\_/_// (__) (__) (__) /_'-------L\ IT'S GOOMBA TIME #+END_SRC ** ActivityPump's predecessor: pump api http://pump.io/ #+BEGIN_SRC text _____ .-' ~~~'. | O .-- --. ' o .--..-- _\__-|| || | GOOD NEWS EVERYONE! (' ''--''\-' \\, - (_ \' _ / / '-'. _/ \// .'----' / ' \/ `_.' \_ \-_.' \ \_/ | #+END_SRC ** Pull up ActivityPump spec http://w3c-social.github.io/activitypump/ #+BEGIN_SRC text |\__\ / o_o /vvvv\ I AM BATMAN \vvvv #+END_SRC ** ActivityStreams What are they? Logging, actions with side effects http://www.w3.org/TR/activitystreams-core/ #+BEGIN_SRC text |\__|\ | _ _ | MY PARENTS ARE DEAD | .-. | ,' ', | |__|__| | W |---| W #+END_SRC ** Okay so how do we send these around (endpoints!) So, ActivityPump is kind of "the restful API version of ActivityStreams" #+BEGIN_SRC text .--. ,-. ( ;---. ) \ , .-----'.-' o o) / , - / ( .; ),", * | )'-__| , \___/ ) | | | | | 'nn nn 'nn'nn #+END_SRC ** Extensions, json-ld http://json-ld.org/ #+BEGIN_SRC text ISN'T THAT WHAT , | , ", ' ," .--.--. --- "-./o\.-" --- '---' /__|__\ /_|__|__\ /_|__|__|_\ THEY'D *LIKE* YOU TO BELIEVE??? #+END_SRC ** Actual examples (from Paris presentation) #+BEGIN_SRC text __ _ ,' ' '-_ _ /___ ; \ '-./ '._ , '-.--'--, '-.,; \," '=,_ /,\, ,_ // 3,' ,o ,._ / O_--' O = _____,; "= '_'_,' --,.'-"' " ,--, ( ( ( ) '-_ ) '.' .___) (___ | #+END_SRC * Federation is hardly the only challenge though #+BEGIN_SRC text ,,,,, '""" """' ' ' ;___ _ ___; ;[ o] [o ]; G _; G '; ,___, ;' / ';,,-,,;'|\ /| \'-,_,-'/ |\ / \ /', ,'\ / \ | ' \_/ ' | | | |' | | A WILD BKUHN APPEARS #+END_SRC ** In other words, deployment #+BEGIN_SRC text __ _ -, \_,------,_// <\ ,-- --.\ / (x ) ( X ) ' '--, ,--'\ / \ -v-v-u-v / . '.__.--__'.\ / ',___/ / \__/' | | ,'\_'/, || \_| | | | | || W',_ ||| |||_'' | '------'| |__| |_|_ ,,,-' '-,,, #+END_SRC ** Is docker the answer? #+BEGIN_SRC text __ __|II| ,. __|II|II|__ ( \_,/\ -.-'-.-'-.-'-.-'- __|II|II|II|II|___/ __/ -'-.-'-.-'-.-'- ---------------- | [Docker] / ------------------ ---------------- : / ------------------- ----------------- \____, o ,' -------------------- ------------------ '--,___________,' --------------------- #+END_SRC ** What might be the answer #+BEGIN_SRC text DO ,, ';; '' ____ || ; \ || \,---'-,-, || / ( o) || (o )__,--'-' \ || ,,,, ;'uuuuu'' ) ;; \ \ \ ) ) /\// '--' \'nnnnn' / \ \\ //'------' \ \\ // \ \ \\ // ) ) \\// | | \\ / | ALL THE THINGS #+END_SRC * Thanks! #+BEGIN_SRC text _------_ .' '. \||| / \-_ ) \\\| , ,__\\ ( /( ,'-_____'-, )---' ||//\ \ uuuuuuu // ',/ '.'----.'\\, '-____\,/ _ _ , , ___ |O)(_)|\|' | _ _ |_) /\ |\ | | / | | /''\| \| | \_ o #+END_SRC