Being social on the Web

DrupalCamp Gent 2018 | 23 November 2018

Your domain as your identity on the Web

About me

(or swentel, on 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


  • Ease of use
  • Clean user interfaces
  • Network effects


  • 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


  • 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

Site Deaths

  • Storify
  • 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 ?


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

IndieWeb building blocks

Drupal IndieWeb module

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


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


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

Tricky - not supported yet by Drupal module

Webmention model




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

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

A note with interactions (replies, repost, like)

Privacy ?

Drupal IndieWeb module

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

Other implementations at

MF2 and JF2


  • 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


  • 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
  • Post context: get references from external content (or microsub content) e.g


W3C status: Recommendation


  • 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)



Clients and servers

Many, many more at and

Drupal IndieWeb module

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

Map 'note' to Note content type


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)



Clients and servers

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

Indigenous android: channels

Pro tip: use 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)


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)



Flow: enter your URL


Drupal IndieWeb module

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


  • 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 ?


  • 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


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


  • Chris Aldrich -
  • Sebastian Lasse -

Thank you!

  • join us!
  • #indieweb / #indieweb-dev on