ActivityPub is a social networking protocol. Think of it as a language that describes social networks: the nouns are users and posts, and the verbs are like, follow, share, create… ActivityPub gives applications a shared vocabulary that they can use to communicate with each other. If a server implements ActivityPub, it can publish posts that any other server that implements ActivityPub knows how to share, like and reply to. It can also share, like, or reply to posts from other servers that speak ActivityPub on behalf of its users.
Today the EU passed Articles 11 and 13 of its new Copyright Directive in a 438 to 226 vote. This has, rightly, been widely painted as a complete disaster for European internet businesses - and the internet industry as a whole. Here's the first clause of Article 13 in its entirety: Information societ...
The decentralised web, or DWeb, could be a chance to take control of our data back from the big tech firms. So how does it work and when will it be here?
The problem — and it is the same problem that is never being addressed — is that your decentralized social networking app doesn’t actually solve any of your users problems that haven’t already been solved! And often fails to solve problems that the centralized guys have solved and that their users depend on.
Solving for real problems is important. The tough part is solving for those that don’t necessarily scale to millions or billions…
In a previous conversation, I made a rough list of types of blog search directories and search engines. Blog Discovery: I’m sure directories are not the best solution for blog discovery, but like blogrolls they have a place at the table because they are low tech and cheap. Here’s a rough hiera...
Over 1 million Webmentions can’t be wrong. Join the next revolution in web communication. Add the Webmentions standard to your website to solve the biggest communications problem on today’s internet and add rich context to your content.
My post on A List Apart is up!
Stopping the internet from getting too concentrated will be a slog, but the alternative would be worse
This has generally been an interesting series of articles in The Economist.
As John Sherman, the senator who gave his name to America’s original antitrust law in 1890, put it at a time when the robber barons ruled much of America’s economy: “If we will not endure a king as a political power, we should not endure a king over the production, transportation and sale of any of the necessaries of life.” ❧
A perfect example of a Hamiltonian internet for maximum control
Leading thinkers in China argue that putting government in charge of technology has one big advantage: the state can distribute the fruits of AI, which would otherwise go to the owners of algorithms. ❧
Such thinking has also been gaining some traction in the West, although so far only at the political fringes. The underlying idea is that some types of services, including social networks and online search, are essential facilities akin to roads and other kinds of infrastructure and should be regulated as utilities, which in essence means capping their profits. Alternatively, important data services, such as digital identity, could be offered by governments. Evgeny Morozov, a researcher and internet activist, goes one step further, calling for the creation of public data utilities, which would pool vital digital information and ensure equal access to it. ❧
When it comes to democracy and human rights, a Jeffersonian internet is clearly a safer choice. With Web 3.0 still in its infancy, the West at least will need to find other ways to rein in the online giants. The obvious alternative is regulation. ❧
The concept of IndieWeb is something slightly different to many people and it’s ever evolving and changing, just like the internet itself.
Trying to define it is somewhat akin to trying to define America: while it has a relatively well-defined geographic border and place in time, its people, laws, philosophies, and principles, while typically very similar, can vary and change over time. What it is can be different for everyone both within it as well as outside of it. It can be different things to different people based on their place, time, and even mood. In the end maybe it’s just an idea.
A basic definition of IndieWeb
In broadest terms I would define being part of the IndieWeb as owning your own domain name and hosting some sort of website as a means of identifying yourself and attempting to communicate with others on the internet.
At its simplest, one could say they have an IndieWeb site by buying their own domain name (in my case: boffosocko.com) and connecting it to a free and flexible service like Tumblr.com or WordPress.com. Because you’ve got the ability to export your data from these services and move it to a new host or new content management system, you have a lot more freedom of choice and flexibility in what you’re doing with your content and identity and how you can interact online. By owning your domain and the ability to map your URLs, when you move, you can see and feel the benefits for yourself, but your content can still be found at the same web addresses you’ve set up instead of disappearing from the web.
If you wished, you could even purchase a new domain name and very inexpensively keep the old domain name and have it automatically forward people from your old links to all the appropriate links on your new one.
By comparison, owning your own domain name and redirecting it to your Facebook page doesn’t quite make you IndieWeb because if you moved to a different service your content might be able to go with you by export, but all of the URLs that used to point to it are now all dead and broken because they were under the control of another company that is trying to lock you into their service.
Some more nuanced definition
Going back to the analogy of America, the proverbial constitution for the IndieWeb is generally laid out on its principles page. If you like, the pre-amble to this “constitution” is declared on the IndieWeb wiki’s front page and on its why page.
Some people may choose to host the business card equivalent of a website with simply their name and contact information. Others may choose to use it as the central hub of their entire online presence and identity. In the end, what you do with your website and how you choose to use it should be up to you. What if you wanted to use your website like Twitter for short status updates or sharing links? What if you wanted to use it like Facebook to share content and photos with your friends and family? What if you want to host audio or video like Soundcloud, YouTube, or Vimeo allow?
The corporate social media revolution was a lovely and useful evolution of what the blogosphere was already doing. Thousands of companies made it incredibly easy for billions of people to be on the internet and interact with each other. But why let a corporation own and monetize your data and your ability to interact with others? More importantly, why allow them to limit what you can do? Maybe I want to post status updates of more than 280 characters? Maybe I want the ability to edit or update a post? Maybe I want more privacy? Maybe I don’t want advertising? Why should I be stuck with only the functionality that Twitter, Facebook, Instagram, Google+, LinkedIn and thousands of others allow me to have? Why should I be limited in communicating with people who are stuck on a particular service? (Would you use your phone to only call friends who use AT&T?) Why should I have hundreds of social accounts and an online identity shattered like just so many horcruxes when I could have one that I can fully control?
By decentralizing things to the level of owning a domain and having a simple website with control of my URLs, I can move to cheaper or more innovative web hosts or service providers. I can move to more innovative content manage systems that allow me to do more and communicate better or more broadly with others online. As a side effect of empowering myself, I can help create more competition and innovation in the space to do things I might not otherwise be capable of doing solely by myself.
Almost all of the people behind the IndieWeb movement believe in using some basic web standards as a central building block. Standards help provide some sort of guidance to allow sites to be easier to build and provide a simpler way for them to communicate and interact with each other.
Of course, because you have control of your own site, you can do anything you wish with it. (In our America analogy we could consider standards to be like speech. Then how might we define free speech in the IndieWeb?) Perhaps a group of people who want some sort of new functionality will agree on a limited set of new standards or protocols? They can build and iterate and gradually create new standards that others can follow so that the infrastructure advances and new capabilities emerge. Generally the simpler and easier these standards are to implement, the more adoption they will typically garner. Often simple standards are easier to innovate on and allow people to come up with new ways of using them that weren’t originally intended.
This type of growth can be seen in the relatively new W3C recommendation for the Webmention specification which grew out of the IndieWeb movement. Services like Facebook and Twitter have a functionality called @mentions, but they only work within their own walled gardens; they definitely don’t interoperate–you can’t @mention someone on Facebook with your Twitter account. Why not?! Why not have a simple standard that will allow one website to @mention another–not only across domain names but across multiple web servers and even content management systems? This is precisely what the Webmention standard allows. I can @mention you from my domain running WordPress and you can still receive it using your own domain running Drupal (or whatever software you choose). People within the IndieWeb community realized there was a need for such functionality, and so, over the span of several years, they slowly evolved it and turned it into a web standard that anyone (including Facebook and Twitter) could use. While it may have been initially meant as a simple notifications protocol, people have combined it with another set of web standards known as Microformats to enable cross-site conversations and a variety of other wonderous functionalities.
Some people in the IndieWeb might define it as all of the previous ideas we’ve discussed as well as the ability to support conversations via Webmentions. Some might also define an IndieWeb site as one that has the ability to support Micropub, which is a standard that allows websites to be able to accept data from a growing variety of applications that will allow you to more easily post different types of content to your site from articles and photos to what you’re drinking or reading.
Still others might want their own definition of IndieWeb to support the functionality of WebSub, MicroSub, IndieAuth, or even all of the above. Each small, free-standing piece expands the capabilities of what your personal website can do and how you can interact online. But since it’s your website and under your control, you have the power to pick and choose what and how you would like it to be able to do.
So what is the IndieWeb really?
Perhaps after exploring the concept a bit, most may not necessarily be able to define it concretely. Instead they might say–to quote United States Supreme Court Justice Potter Stewart—“But I know it when I see it […]”.
The IndieWeb can be many different things. It is:
- a website;
- an independent network of websites;
- an idea;
- a concept;
- a set of broad-based web standards;
- a set of principles;
- a philosophy;
- a group of people;
- a support network;
- an organization;
- an inclusive community;
- a movement;
- a Utopian dream of what the decentralized, open Internet could be.
In some sense it is all of these things and many more.
In the end though, the real question is:
What do you want the IndieWeb to be?
Come help us all define it.
Taking Back The Internet One Page At A Time.
Not a half bad little commercial.
The web needs a better business model — and we believe the technology is finally here to do it.
I like the general idea behind this and Julien Genestoux is certainly someone to take seriously… but blockchain?! really?? I can’t wait to see what comes of it.
Social media and kids, Google fiber fail, 5G dreams, and more. Surprise: young people use social more than the oldsters. Some of them even use Vero. Samsung Galaxy S9 takes top marks for display and camera. Google Fiber didn't go quite as planned. Feds in your iPhone? It's more likely than you think. Amazon buys Ring, can now see and hear everything. US vs Microsoft II: The Revenge of the Irish. GitHub gets gotten by the biggest DDoS EVER.
There’s a great conversation in this episode about open platforms and why they’re important. The basic conversation starts around 12m19s, but really gets going at 16 minutes in and continues through to about 26:30. It includes some great examples of text messaging, social media companies, reservation systems and how they work either for the good or the bad based on how open or closed they are. It becomes a textbook set of cases for why the IndieWeb movement is important.
For those interested in just this short 10 minute section you can listen below on this bookmarked version of the audio:
Another interesting sub-segment is at 17:13 where Dwight Silverman comments that he knows many people who’ve removed social apps from their cell phones, including Leo Laporte. I’ve done this nearly a year ago and recently Dries Buytaert mentioned he’s done it as well. There’s also a recent article by Farhad Manjoo in the New York Times that he’s done something similar with solid results. For a list of people who’ve gone further, check out this list of silo-quits.
I consider myself a member of the open web community and very friendly with the goals of the IndieWeb community. I too wish for a world where web giants have less power and where the user is in control of more of their data. Yet, I now work for a large (the largest?) publishing platform. It is not often easy to reconcile, but one thing that I can tell you for a fact is that your data is, on average, safer on large hosting provider than it is on your small indie site.
I’d be curious to see more concrete numbers on these statistics, though I suspect that for “mature” sites, it may actually be the case. Some of the small, middling platforms however… The other side of the coin though is that when airplanes do crash, the death toll is seemingly large, and this is also the case with major silos.
While he mentions personal sites disappearing, it’s typically something that the site owner can often at least make a conscious choice to do and they can also mothball the data for later use. With a silo death, they really have no choice and often can’t get any data at all.
This just goes to point out that we need better solutions for both openness and longevity. How much of what I write on line will survive the next 500+ years? More or less than what Copernicus or Newton wrote? (Of course, who will care is an entirely different question…)
I hope that perhaps Medium opens up in the future to do some of the functionality that he mentions.
Introduction to what one would consider basic web communication
A few days ago I had written a post on my website and a colleague had written a reply on his own website. Because we were both using the W3C Webmention specification on our websites, my site received the notification of his response and displayed it in the comments section of my website. (This in and of itself is really magic enough–cross website @mentions!)
To reply back to him I previously would have written a separate second post on my site in turn to reply to his, thereby fragmenting the conversation across multiple posts and making it harder to follow the conversation. (This is somewhat similar to what Medium.com does with their commenting system as each reply/comment is its own standalone page.)
Instead, I’ve now been able to configure my website to allow me to write a reply directly to a response within my comments section admin UI (or even in the comments section of the original page itself), publish it, and have the comment be sent to his reply and display it there. Two copies for the price of one!
This means that now, WordPress-based websites (at least self-hosted versions running the WordPress.org code) can easily and simply allow multiple parties to write posts on their own sites and participate in multi-sided conversations back and forth while all parties maintain copies of all sides of the conversation on their own websites in a way that maintains all of the context. As a result, if one site should be shut down or disappear, the remaining websites will still have a fully archived copy of the entire conversation thread. (Let’s hear it for the resilience of the web!)
What is happening?
This functionality is seemingly so simple that one is left wondering:
- “Why wasn’t this baked into WordPress (and the rest of the web) from the start?”
- “Why wasn’t this built after the rise of Twitter, Facebook, or other websites which do this as a basic function?”
- “How can I get it tout suite?!” (aka gimme, gimme, gimme, and right now!!!)
While seeming simple, the technical hurdles aren’t necessarily because there had previously never been a universal protocol for the web to allow it. (The Webmentions spec now makes it possible.) Sites like Facebook, Twitter, and others enable it because they’ve got a highly closed and highly customized environment that makes it a simpler problem to solve. In fact, even old-school web-based bulletin boards allowed this!
But even within social media one will immediately notice that you can’t use your Facebook account to reply to a Twitter account. And why not?! (While the web would be far better if one website or page could talk to another, these sites don’t for the simple economic reason that they want you using only their site and not others, and not enabling this functionality keeps you locked into what they’re selling.)
I’ll detail the basic set up below, but thought that it would be highly illustrative to have a diagram of what’s physically happening in case the description above seems a bit confusing to picture properly. I’ll depict two websites, each in their own column and color-coded so that content from site A is one color while content from site B is another color.
It really seems nearly incomprehensible to me how this hasn’t been built into the core functionality of the web from the beginning of at least the blogosphere. Yet here we are, and somehow I’m demonstrating how to do this from one WordPress site to another via the open web in 2017. To me this is the entire difference between a true Internet and just using someone else’s intranet.
While this general functionality is doable on any website, I’ll stick to enabling it specifically on WordPress, a content management system that is powering roughly 30% of all websites on the internet. You’ll naturally need your own self-hosted WordPress-based website with a few custom plugins and a modern semantic-based theme. (Those interested in setting it up on other platforms are more than welcome to explore the resources of the IndieWeb wiki and their chat which has a wealth of resources.)
As a minimum set you’ll want to have the following list of plugins enabled and configured:
Other instructions and help for setting these up and configuring them can be found on the IndieWeb wiki, though not all of the steps there are necessarily required for this functionality.
Ideally this all should function regardless of the theme you have chosen, but WordPress only provides the most basic support for microformats version 1 and doesn’t support the more modern version 2 out of the box. As a result, the display of comments from site to site may be a bit wonky depending on how supportive your particular theme is of the microformats standards. As you can see I’m using a relatively standard version of the TwentySixteen theme without a lot of customization and getting some reasonable results. If you have a choice, I’d recommend one of the following specific themes which have solid semantic markup:
The final plugin that enables sending comments from one comment section to another is the WordPress Webmention for Comments plugin. As it is still somewhat experimental and is not available in the WordPress repository, you’ll need to download it from GitHub and activate it. That’s it! There aren’t any settings or anything else to configure.
With the plugin installed, you should now be able to send comments and replies to replies directly within your comments admin UI (or directly within your comments section in individual pages, though this can not require additional clicks to get there, but you also don’t have the benefit of the admin editor either).
There is one current caveat however. For the plugin to actually send the webmention properly, it will need to have a URL in your reply that includes the microformats
u-in-reply-to class. Currently you’ll need to do this manually until the plugin can properly parse and target the fragmentions for the comments properly. I hope the functionality can be added to the plugin to make the experience seamless in the future.
So what does this
u-in-reply-to part actually look like? Here’s an example of the one I used to send my reply:
<a class="u-in-reply-to" href="https://islandinthenet.com/manually-adding-microfomats-markup/">Khürt</a>
The class tells the receiving site that the webmention is a reply and to display it as such and the URL is necessary for your webmention plugin to know where to send the notification. You’d simply need to change the URL and the word (or words) that appear between the anchor tags.
If you want to have a hidden link and still send a webmention you could potentially add your link to a zero width space as well. This would look like the following:
<a class="u-in-reply-to" href="http://www.example.com">​</a>
Based on my experiments, using a
<link> via HTML will work, but it will send it as a plain webmention to the site and it won’t show up natively as a reply.
Sadly, a plain text reply doesn’t work (yet), but hopefully some simple changes could be made to force it to using the common fragmentions pattern that WordPress uses for replies.
Interestingly this capability has been around for a while, it just hasn’t been well documented or described. I hope now that those with WordPress sites that already support Webmentions will have a better idea what this plugin is doing and how works.
Eventually one might expect that all the bugs in the system get worked out and the sub-plugin for sending comment Webmentions will be rolled up into the main Webmentions plugin, which incidentally handles fragmentions already.
In addition to the notes above, I will say that this is still technically experimental code not running on many websites, so its functionality may not be exact or perfect in actual use, though in experimenting with it I have found it to be very stable. I would recommend checking that the replies actually post to the receiving site, which incidentally must be able to accept webmentions. If the receiving website doesn’t have webmention support, one will need to manually cut and paste the content there (and likely check the receive notification of replies via email, so you can stay apprised of future replies).
You can check the receiving site’s webmention support in most browsers by right clicking and viewing the pages source. Within the source one should see code in the <head> section of the page which indicates there is a webmention endpoint. Here is an example of the code typically injected into WordPress websites that you’d be looking for:
<link rel="webmention" href="http://example.com/wp-json/webmention/1.0/endpoint" />
<link rel="http://webmention.org/" href="http://example.com/wp-json/webmention/1.0/endpoint" />
Also keep in mind that some users moderate their comments, so that even though your mention was sent, they may need to approve it prior to it displaying on the page.
If you do notice problems or issues or have quirks, please file the issue with as full a description of what you did and what resulted as you can so that it can be troubleshot and made to work not only for you, but hopefully work better for everyone else.
Give it a try
So you’ve implemented everything above? Go ahead and write a reply on your own WordPress website and send me a webmention! I’ll do my best to reply directly to you so you can send another reply to make sure you’ve got things working properly.
Once you’re set, go forward and continue helping to make the web a better place.
I wanted to take a moment to give special thanks to Aaron Parecki, Matthias Pfefferle, and David Shanske who have done most of the Herculean work to get this and related functionality working. And thanks also to all who make up the IndieWeb community that are pushing the boundaries of what the web is and what it can accomplish. And finally, thanks to Khürt Williams who became the unwitting guinea pig for my first attempt at this. Thank you all!