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
- Storify
- del.icio.us
- App.net
- Orkut
- My Space
- Friendster
- FriendFeed
- Google Reader
- Posterous
- Google Buzz
- Geocities
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
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
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)
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
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
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)
Drupal IndieWeb module
- Does post type discovery on incoming requests
and can be mapped onto Drupal content types
Map 'note' to Note content type
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)
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)
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
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 ?
- 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