IndieWeb

Being social on the Web

DrupalCamp Gent 2018 | 23 November 2018

Your domain as your identity on the Web

About me

realize.be

(or swentel, on drupal.org and twitter)

In this presentation

  • IndieWeb 101
  • Communicating via Webmention
  • Markup your content with Microformats2
  • Publishing content through Micropub
  • Your new social reader with Microsub
  • Authenticating with your domain
  • Joining the Fediverse with ActivityPub
  • Live demo - nothing will go wrong

Goal of the talk

An idea how to create a setup where you can read and interact with the web, all from one place

This talk basically describes my current setup

Disclaimer: I maintain the Drupal IndieWeb module and also Indigenous for Android

So what is this IndieWeb anyway ?

POSSE Webmention Microsub RelMeAuth Activitypub Domain Feeds Pingback HWC WebSub MF2 PESOS Salmention Micropub JF2 PTD Backfeed Reader IndieAuth Fediverse Vouch Reply-context

But first

A history of the web in 5 minutes

  • Iteratively built
  • Promoting Web standards
  • Everyone had a blog
  • RSS feeds! (they are not dead yet)
  • Something happened around 2006-2007

Who uses the following ?

  • Twitter
  • Facebook
  • Instagram
  • Snapchat
  • LinkedIn
  • Swarm
  • Google+
  • Pinboard
  • Pocket
  • Flickr

Does anyone really like them?

What do these services do what {insert your favorite framework} can't do?

  • 5% posting interface
  • 95% reader interface

Benefits

  • Ease of use
  • Clean user interfaces
  • Network effects

Corporations

  • Own your data
  • Misuse or even leak your data
  • Keep or delete them
  • They work for themselves and not for you
  • Growing lethargy and lack of competition

Algorithms

  • can be toxic
  • no control over them
  • no control over bias
  • monitization
  • gamification
  • dopamine response

Site Deaths

  • Short, if any notice
  • Data disappears
  • Community disappears
  • Connections disappear

https://indieweb.org/site-deaths

Site Deaths

  • Storify
  • del.icio.us
  • App.net
  • Orkut
  • My Space
  • Friendster
  • FriendFeed
  • Google Reader
  • Posterous
  • Google Buzz
  • Geocities

Upcoming Site Deaths

  • Google+ August 2019

Policy changes

Flickr: Independent -> Yahoo -> Smugmug
Recently announced switch from unlimited data to 1000 photos without paid account

Facebook as good as closed anonymously in Belgium

Shutting down public API's

Slack drops IRC support

plus side: you have WimLeers all for yourself on #drupal-contribute :)

Benefits of your own domain

  • Control
  • Freedom
  • Your data is yours
  • Reach everyone who can go online!
  • Telephone analogy

Avoid problems

  • Content loss
  • Identity loss
  • Censorship
  • Content theft
  • Personalisation/filter bubble
  • Negative community

IndieWeb movement

  • Back to the roots of the Web
  • Loose collective, no corporation behind
  • Focus on people and the message

IndieWeb principles

  • Own your domain and data *
  • Scratch your own itches
  • Use what you make
  • Document and open source your stuff
  • UX and design come first!
  • Use, promote or contribute to web standards
    (W3C involvement)
  • Syndicate your content

* own your own server too ?

HWC

  • bi-weekly meetings in your local town
  • hwc.gent ? Come talk to me if you're interested.
  • hack on own sites, projects etc

IndieWeb building blocks

https://spec.indieweb.org/

Drupal IndieWeb module

https://drupal.org/project/indieweb

  • Functionality currently split into 8 submodules
  • Websub, Salmention, Vouch and ActivityPub upcoming

Webmention

https://indieweb.org/webmention

W3C status: Recommendation

What is it ?

When you link to a website, you can send it a Webmention to notify it. If it supports Webmentions, then that website may display your post as a comment, like, or other response, and presto, you’re having a conversation from one site to another!

From a technical perspective, the notification part is not so different as pingback

Extensions

  • Vouch: anti-spam extension
  • Salmention
  • Private webmention

Tricky - not supported yet by Drupal module

Webmention model

Discovery


   
					

Syndication

  • POSSE: Publish (on your) Own Site, Syndicate Elsewhere
  • PESOS: Publish Elsewhere, Syndicate (to your) Own Site (e.g. ownyourgram.com)

Brid.gy

  • Allows you to publish on other networks
  • Provides backfeed to your site
  • All by sending or receiving webmentions

https://brid.gy/

A note with interactions (replies, repost, like)

Privacy ?

Drupal IndieWeb module

  • Rely on Webmention.io or use built-in endpoint
  • Send webmentions (via drush or cron)
  • Create comments when a reply comes in
  • Use brid.gy to syndicate and get backfeed
  • Show interactions with or without avatars and so on

Other implementations at
https://indieweb.org/Webmention#Publishing_Software

MF2 and JF2

http://microformats.org/wiki/microformats2

http://microformats.org/wiki/jf2

Microformats2

  • Markup structured information in HTML
  • Extremely simple: add classes to your markup!
  • Representation in JSON

Why apply to your content?

  • Figure out response type (like, reply, bookmark ..)
    on incoming webmention
  • Microformats2 h-feed: gives richer, more structured content than RSS, ideal for microsub servers

Example 'author' h-card


 

My name is Kristof De Jaeger also known as swentel. My bio

Example 'note' post type


 
					

Example 'reply' post type


 
					

Post types

  • Note, article, reply, photo, like ..
  • These can be Drupal content types or comments

https://indieweb.org/posts#Kinds_of_Posts

JF2

  • Working prototype of a simpler JSON serialization of MF2

Drupal IndieWeb module

  • Microformats2: markup content
    (preprocess, formatters)
  • Feeds: generate Microformats2 or JF2 feeds
    (You especially need this for Brid.gy)
  • Post context: get references from external content (or microsub content) e.g
    https://realize.be/reply/content/1619

Micropub

https://indieweb.org/micropub

W3C status: Recommendation

Micropublishing

  • Allow 3rd party clients to create, update or delete posts on your site
  • Uses microformats2 JSON to post, or form-encoded
  • Ties in great with readers: social actions! Extensions allow managing your content from apps too (Indigenous)

Discovery


   
					

Clients and servers

Many, many more at
https://indieweb.org/Micropub/Clients and https://indieweb.org/Micropub/Servers

Drupal IndieWeb module

  • Does post type discovery on incoming requests
    and can be mapped onto Drupal content types

Map 'note' to Note content type

Microsub

https://indieweb.org/microsub

W3C status: Draft

What is it

Provides a standardized way for reader
apps to interact with feeds.

  • server parses RSS, Atom, Microformats2
  • client connects with server and consumes the feed
  • server implements various API actions (read, delete, follow)

Discovery


   
					

Clients and servers

  • Clients: Indigenous, Together, Monocle
  • Servers: Aperture, yarns, ekster

https://indieweb.org/reader

https://indieweb.org/Microsub#Clients

https://indieweb.org/Microsub#Servers

Indigenous android: channels

Pro tip: use https://granary.io/ to follow Twitter for instance

Indigenous android: timeline with actions per post

Indigenous Android: create posts directly

Drupal IndieWeb module

  • Microsub module
  • Use external service (e.g. Aperture) or built-in endpoint
  • Built-in endpoint is a server, not a client!
    Configure channels and feeds to read.
  • Media cache: cache images locally (also for author avatars in webmentions)

IndieAuth

https://indieweb.org/indieauth

W3C status: Draft

Authenticate with your domain

  • Built on top of OAuth2
  • Can use RelMeAuth (distributed identity authentication)
  • Either sign-in into another website
  • Or give 3rd party apps an access token so they can
    • Post to your site (micropub)
    • Read from your site (microsub)

Discovery


   
   
					

Flow: enter your URL

Authorize

Drupal IndieWeb module

  • Use external service (e.g. IndieAuth.com)
  • or built-in endpoint for authorization and access tokens
  • Allow Web sign-in: Drupal user accounts are created then

Fediverse

  • Examples: Mastodon, GNU social, Pixelfed
  • Everyone can install an instance on a different domain
  • Typically use ActivityPub or OStatus to communicate with each other
  • Webfinger to authenticate

What if your site can communicate with them ?

Enter fed.brid.gy

  • Proxy around your domain
  • Create a post on your site, then simply
    send webmentions to reply, like, boost on Mastodon
  • More support for sites comming (pixelfed)
  • Only needs a syndication target in the Drupal configuration
  • Mastodon uses Microformats2, or has Atom feeds
    so you can follow users in your reader

Discovery

Interact once with the fediverse
and you'll be found as your site

first 'swentel' is a test account

Module roadmap

  • Currently at Beta5 (breaking since Beta4)
  • Aiming for RC in the next two weeks
  • 1.0 end february 2019
  • Future 1.x releases: bugfixes, finish Microsub API,
    multiple responses in one post, quickstart module
  • 2.0: ActivityPub, Vouch, multi-user

Demo time!

  • publish note via 3rd party client
  • trigger syndication
  • ask for reactions
  • view backfeed coming back
  • show interactions on site
  • show notifications in reader
  • optional: reply back

Credits

  • Chris Aldrich - www.boffosocko.com
  • Sebastian Lasse - sebastianlasse.de/

Thank you!

  • join us! indieweb.org
  • #indieweb / #indieweb-dev on freenode.net