evanprodromou

@evanprodromou@evanp.me

Director of Open Technology at Open Earth Foundation (OEF).

Past founder of Wikitravel, StatusNet, identi.ca, Fuzzy.ai. CTO of Breather, TRU LUV and MTTR.

Co-creator of GNU Social, creator of pump.io.

Co-chair of the Social Web Working Group at W3C. Co-author of ActivityStreams 2.0. Co-author of ActivityPub. Co-author of OStatus.

In Montreal, from San Francisco. Greek, Arab, American, Canadian. Husband, father, cook, gardener.

This profile is from a federated server and may be incomplete. Browse more on the original instance.

evanprodromou, to fediverse

I’m excited to say that I turned in my manuscript for the ActivityPub book for O’Reilly Media today. I started working on it in September of 2023, with a lot of interim checkpoints and deadlines since. In April 2024, I finished the first draft of the manuscript. Over the month of May, I’ve been working on improvements suggested by the technical reviewers who agreed to look over the book, and from my own re-read.

In total, my TODO file for this month has about 250 changes to be made. Some are small — just changing a word or two — but one required adding a whole new chapter, and many required multi-paragraph sections.

I took the last week of May off from my work at Open Earth Foundation to concentrate on making changes. My team was really supportive, which I deeply appreciated. I went to our country house in the Eastern Townships of Quebec, and I spent the week writing, editing, drawing and thinking.

Now, the next stage of book making starts: production. The production team at O’Reilly will be copyediting, indexing, and laying out the book. Their designers will be taking my UML diagrams and turning them into professional-looking illustrations. We have two rounds of quality control on code samples and fact checking on content.

In September 2024, the final e-book will be available for sale. I’ll have a link here for the pre-sale version when it comes out. If you’re eager to read the book, I highly recommend reviewing the early release version.

Thanks so much to my friends, family and colleagues who’ve made space and time for me to do this work. It has meant a lot to me. I hope the final product helps more developers create cool projects using ActivityPub.

https://evanp.me/2024/06/03/i-turned-in-my-manuscript/

evanprodromou, to fediverse

So, Richard McManus asked me about how ActivityPub supports cross-server usage. As an example use case, let’s say a user with the account eric@social.example wants to comment on a photo by dionne@photos.example. In this scenario, Eric would go to the page https://photos.example/users/dionne/photos/1 and enter a comment. How would that work? I can talk about how it would work using the ActivityPub API. But I’m going to have to explain a lot about the API first!

ActivityPub’s API is how client applications interact with the data on a user’s main account server. It lets the user read data on the same or other servers, and it lets them create activities and other kinds of objects on that server that get shared (under the user’s control) with the rest of the world.

https://evanp.me/wp-content/uploads/2024/04/activitypub-api.pngWe can all kind of imagine this working for the general-purpose social apps we use — things like an Android social app. But what if we think about more special-purpose apps — applications that provide particular functionality not found in most general-purpose social clients? Let’s consider an ActivityPub enabled photo-editing tool that lets you change lighting, add cartoon characters, change your appearance, or other modifications that are often seen in “filters” on Instagram or Snap:

https://evanp.me/wp-content/uploads/2024/04/activitypub-api-page-2.pngTwo neat things to note: first, yes, there are control mechanisms so that remote apps can’t do just anything they want behind your back; you get control. The other thing that’s neat is that because ActivityPub is very extensible, you can have all kinds of cool apps interacting with your ActivityPub account. Games, dating, ecommerce, all kinds of stuff.

Now, what does all this have to do with cross-server interactions? Here’s the idea: when a user from social.example is browsing the web site for photos.example and wants to interact with the people or the photos, they log in and treat that remote server as if it was an ActivityPub client. Then, the ActivityPub server reports the activities back to the remote server using the ActivityPub federation protocol.

https://evanp.me/wp-content/uploads/2024/04/activitypub-api-page-3.pngThis is actually a good model that works fairly well. It makes your own ActivityPub server your real home on the Web, where all your activities go through. It’s still in development and unfolding in the ActivityPub world — not everyone supports the ActivityPub API fully, so it’s hard to see these benefits today.

This is a topic I cover in my book ActivityPub: Programming for the Social Web, so if you’re interested in more detail, please check out the book.

https://evanp.me/2024/04/22/cross-server-interactions-in-activitypub/

#activitypub

image/png
image/png

evanprodromou, to random

Bytedance yesterday launched a social app called Tiktok Notes in Canada and Australia. I tried it out, since I live in Canada.

I was able to log in using my Tiktok account to log in.

https://evanp.me/wp-content/uploads/2024/04/screenshot_20240419-1208238510097944262510258.pngThe user interface has preview blocks.

https://evanp.me/wp-content/uploads/2024/04/screenshot_20240419-1202136073570818131029080.pngIt was pretty easy to upload a couple of photos and add some text.

https://evanp.me/wp-content/uploads/2024/04/screenshot_20240419-1205421715106638455769667.pngMy profile has all my posts.

https://evanp.me/wp-content/uploads/2024/04/screenshot_20240419-1210126385139381526334397.pngThey have a pretty good explanation of how the service works.

https://evanp.me/wp-content/uploads/2024/04/screenshot_20240419-1206184768898095077231432.pnghttps://evanp.me/wp-content/uploads/2024/04/screenshot_20240419-1206298601975299910607789.pngSo, why do I care? Well, I think that Tiktok Notes has a basic data structure — a gallery of images with text — that’s very compatible with ActivityPub and the Fediverse. It uses a follow graph, similar to most other social networks. Enabling remote follow — following people from other services, like Instagram stories or Snap — would be pretty easy to incorporate. Comments, likes and re-shares could work pretty reasonably too.

New social services need a good justification for why they are launching in siloed mode in 2024. We don’t need any more walled gardens; we already have a lot. This app can be an important part of the developing social web of interconnected networks.

I hope that Bytedance considers this as a high-priority feature. I think connecting to the fediverse is a good business move for a company experiencing the kind of political pressure Tiktok is. I’m glad to see that Threads is continuing its integration of ActivityPub, and I hope it sets a good model for other new apps.

https://evanp.me/2024/04/19/bytedance-add-activitypub-to-tiktok-notes/

image/png
image/png

evanprodromou, to fediverse

My friend Evan Henshaw-Plath wrote recently about some concerns with ActivityPub. I want to go over his concerns one by one and give some assessment of how accurate and important I think they are. Rabble’s words in italics; my responses in just normal text.

  • User identities are tied to a server. This is only partially true; your user identity is tied to a domain, not a server. But most servers only handle one domain, and most people don’t move their domains between servers. We have a section on domain portability between servers on the ActivityPub Data Portability report.
    Using domains is also how much of the Internet works. Email addresses are tied to a domain; Web sites are tied to a domain. You can move the domain between different implementations transparently. It’s a really robust architecture that has stood the test of time for almost 50 years.
  • Users can’t migrate between servers. Partially true. Rabble covers the essentials; you can move followers and not much else. It’s also possible to move your “stuff” between identities; that’s most of what our Data Portability task force is working on.
  • On a single server, it is impossible to change your username! Somewhat true. ActivityPub identities are URLs like https://social.example/user/vtles1XgZkPUEulBsFmRX . That identity URL is immutable; you can’t change it. Some implementations include a username in that url, like https://other.example/user/evanp. With that kind of server software, it’s true, you can’t change the username.
    Also, we use a standard called Webfinger that maps an identity string like username@domain to an URL. You can read about it in the ActivityPub Webfinger report. Some servers use that string, instead of the ActivityPub ID, as the unique ID for a remote user. That’s discouraged, but if someone does that, changing your user ID will make you no longer findable for those other servers. I think as we stabilize our use of WebFinger, some of these usages are going to get better.
  • Fediverse servers have total control over your account and data. True. This is the “federation” part of the fediverse. It’s how Web sites and email work. Don’t use a fediverse server without a good trust relationship with your server admin; ideally someone you have a business relationship with, or your employer, or your university. Same goes for email!
    It also means that if you control your own server, you have total control over your account and data. That’s a feature, not a bug.
    Another option is using a cooperative server, like cosocial.ca or social.coop. A cooperative is a legal structure in which members pay for and manage their own service. I think cooperatives are awesome.
  • The fediverse is a network of fiefdoms, each server admin having total control over their users. This seems about the same as the previous statement, but OK. I think the key strength of the fediverse here is that we can have dozens of different models for server governance — coops, enterprises, city libraries, family servers, individual servers. That level of experimentation is a feature, not a bug. Governance is not baked into the protocol.
  • Each kind of fediverse server is isolated. This one is just plain wrong. ActivityPub is based on an open data standard called Activity Streams 2.0 (AS2) which models social data. There is an extensive standard vocabulary that can represent Web content like text, images, video and audio, and the social graph, but also well-known social interactions like check-ins, events, and groups. More importantly, Activity Streams 2.0 is extensible, meaning you can add properties to existing types, or whole new types of objects or interactions. And every ActivityPub server is built to handle AS2.
    What is true is that we have had a lot of servers that only handle a subset of the AS2 vocabulary, and reject content they don’t know how to handle. This is mostly due to mimicking the siloed social networks; we’ve gotten used to thinking of different social networks for different kinds of content. I think this is changing, especially as new kinds of content hit the network. Developers are just learning how to effectively handle extension content with fallback representations. I look forward to this improving over time.
  • The fediverse has no privacy; there is no system of end-to-end encrypted messaging. The first part is false; you can mark your posts as followers-only, or directed to a single person, or a group of people. Servers enforce this privacy. You can also mark that you don’t want your public posts to be indexable or your public account to be discoverable.
    However, the second part is true; we don’t have end-to-end encryption. So, if you send a private message to someone on another server, you message can be read by both your admin and their admin. It’s stored in the clear on both servers. This is also how email works, as well as most direct messages on commercial social networks. However, it’s something worth working on. I’ve sketched out an architecture for end-to-end encryption over ActivityPub, and I’ve got a proposal out to work on it for Summer of Protocols. I think it will be good to level this up!
  • The fediverse has no system for micropayments. This is true. The fediverse is also first and foremost for social networking — connecting to friends, family, colleagues and neighbours. Most of these interactions are not mediated by payment; in fact, payment cheapens those interactions.
    However, there are other relationship types on the fediverse — supporting creators, journalists, or publishers. The main way to do this today is with paid subscriptions; for example, you can subscribe to evanplus@prodromou.pub to get access to premium content I publish. You have to send me US$5 out-of-band or I won’t approve the follow; that’s the state of play right now on the fediverse.
    I think in-band payments are kind of cool for this kind of work, as well as for marketplaces — buying and selling services or goods over the fediverse. I think the easiest structure is adding payment URLs like a PayPal account, or blockchain wallets like a Bitcoin Lightning address.
  • Lastly, and most importantly for me, the culture of fediverse server admins and developers is vindictive. I don’t think this is the case; I love the culture of the fediverse, which is playful, conversational, and collaborative.

I think there are a plenty of good points in Rabble’s critique, but there’s one way that I think he’s extremely wrong. There is still a lot to do in the ActivityPub ecosystem, but we have the architecture and extension mechanisms to make them possible. It’s totally not required to go start a whole new social protocol to build those things in from scratch. In fact, it’s a real mistake; it’s far better to work from the existing standard and build on it. Open standards like ActivityPub have a legitimacy that ad hoc systems like Nostr can never have, and it’s the reason that there is so much interesting development going on in the ActivityPub world.

https://evanp.me/2024/04/14/responses-to-rabble-on-activitypub/

#activitypub

evanprodromou, to random

One of the first things people ask you when you say you’re writing a book for O’Reilly Media is: “What animal is going to be on the cover?” O’Reilly books are famous for their lovely animal drawings, in rich detail, either in black-or-white or colour. Books are sometimes referred to by their cover animal, like the famous Camel Book by Larry Wall and Randal Schwartz.

As an author, you don’t get to choose the animal on the cover. This is a fiercely-guarded prerogative of the O’Reilly Media design department. Authors and editors can make suggestions, but there’s no guarantee they’ll be followed.

Today, I got the design for the cover of the ActivityPub book I’m writing. I have to admit, I haven’t been thinking about it too much, so it was a surprise to see it, and I wasn’t really emotionally prepared. All I can say is that I’m overwhelmed and I absolutely love it.

https://evanprodromou.files.wordpress.com/2024/03/screenshot-2024-03-15-at-12.48.01e280afpm.pngThe bird on the cover is a Nanday Conure, a South American parakeet. They are extremely intelligent; in captivity they can talk, and are prized as pets. The birds live in central South America. They breed and raise their young in separate, private nesting holes, but when breeding season is over they join into large roosts with many, many birds, connecting their small family units into a bigger flock network.

I couldn’t think of a better description of what ActivityPub is and does.

We’re going to be pushing two new chapters — Activity Streams 2.0 and ActivityPub federation protocol — to the Early Release program this week. (The early release version still has the baby bird on the cover.) If you want to read the ActivityPub book today, that’s the place to look.

https://evanp.me/2024/03/15/cover-animal-for-activitypub-book/

evanprodromou, to random

Today, the United States House of Representatives voted to require the Chinese company Bytedance to sell its stake in the popular service Tiktok. If the company does not comply, the bill would ban the use of Tiktok in the US. The bill still needs to pass the Senate and get delivered to President Biden’s desk, but there are a lot of really interesting parts of this decision that I want to unpack.

Foreign companies own shares in all kinds of entities in the United States. There are some interesting restrictions on domestic transportation (listen all of y’all: it’s cabotage), financial services, atomic energy, and real estate. All of them have pretty strong justifications in terms of domestic security — that some level of domestic independence would be lost if all our railroads were owned by Chilean investors, for example.

But we don’t have restrictions on selling foreign-owned magazines or newspapers or movies, or serving foreign-owned Web sites, in the US. You can read Pravda or Al-Jazeera or China Daily on an iPad in the comfort of your lovely American home. It’s not universal — copyrighted information illegally shared and terrorist recruitment content are often blocked or the domains are just plain taken over. But for the most part, the US is pretty OK with you reading or watching content from other countries, even if it has a strong editorial slant against the US government’s current policies.

So, why is Tiktok different here? Realistically, most American viewers aren’t watching Chinese-made content on their Tiktok apps. They’re watching short videos made in the US, Canada, the UK, Australia or other, y’know, “western” countries. But the videos are curated by an algorithm provided by Tiktok, which if it is partially-owned by Bytedance, is somehow entangled with China’s interests.

The House bill, then, is an acknowledgment that algorithmic curation of feeds is a powerful feature that can have a major influence on individuals and society. It at least makes the point that allowing a foreign company, under its own government’s influence, to have some level of control of the algorithm, is a potential danger for domestic security.

This raises a few really important questions. First, for everyone outside of America, it raises the question of algorithmic feeds created outside their own countries. Is the Internet a nice, friendly post-national free-trade free-speech zone, or is domestic control of this technology important in France, Guyana and New Zealand, too?

In addition, for Americans, it should probably give us pause in thinking about our domestically-controlled networks. Does Congress think that algorithmic feeds under domestic control are equally powerful? If so, who’s making the decisions on how they’re used, and what connection is there between different factions who want to influence opinions or behaviour through curation?

I think the Fediverse provides some interesting answers here. The Fediverse is a federated network of social networks — a social internet or social web — connected by the ActivityPub social standard. The networks can be owned by all kinds of different entities — governments, private companies, community groups or individuals. Each network has its own local control mechanisms, but users on one network can follow, reply to, and otherwise communicate with people on any other network. Content created on one network gets published out to all the other networks depending on how many followers are there. Mastodon is a common example of software on the Fediverse, but new platforms are joining all the time.

For the international question, countries can consider implementing domestic social networks that federate with ones in other countries. This allows content to be received and sent across borders, but algorithmic feeds to be managed locally. If there is concern about algorithms being manipulated by foreign governments, using fediverse-enabled domestic software prevents the problem.

Within a country, it raises one potential solution for people concerned about the influence of algorithmic feeds, namely, running social network services under your own control, and following users from other networks. The home feed you read can be curated by an algorithm built into the server, or built into the client, or you can even leave it uncurated — just in chronological order. The Fediverse allows pushing the control of algorithmic feeds closer to users, who can make their own decisions about how content is prioritized.

Federation provides the possibility of some interesting changes in the locus of control in social networks. If we are starting to acknowledge how powerful this curational control is, we should start structuring our social network infrastructure to allow experimentation in whose hands are on the levers.

https://evanp.me/2024/03/13/tiktok-and-the-fediverse/

evanprodromou, to random

So, I’ve had two good pieces of news for the ActivityPub book from O’Reilly Media. The first one is that I finished the 6th of 7 chapters this week (on using and creating ActivityPub extensions). It was a gruelling chapter that I had to reorganise a couple of times to clarify, but I’m so happy that it’s in the can.

The second big piece of news is that the first two chapters of the ActivityPub book are up for early access review on O’Reilly Media’s Learning Platform. This is a big deal for me — people have started reading and interacting with the book in the real world. Mind blown!

If you are interested in ActivityPub, and you have access to the O’Reilly Media Learning Platform, I would take it as a big favour if you would read what’s available now (Introduction, ActivityPub API) and give me your feedback.

Two more chapters should be available soon — Activity Stream 2.0, and the federation protocol — I’ll post here when I’ve got more news.

Thanks to everyone who’s been helpful or supportive in this process. I’m looking forward to the full availability of this book in the coming months.

https://evanp.me/2024/03/07/early-access-to-oreilly-media-activitypub-book/

evanprodromou, to random

On October 7, 2023, fighters from Hamas invaded Israel and killed around 400 soldiers and around 800 civilians. They raped, injured and kidnapped hundreds of others.

By October 13, the Intelligence Ministry of Israel had produced a plan for how to deal with these attacks. Led by the Likud Party member Gila Gamliel, the document described how to evacuate all Palestinians into the Sinai desert, permanently depopulating the Gaza Strip and opening it up to Israeli settlement.

Gamliel repeated the plan in an op-ed for the Jerusalem Post. Further proposals followed. Different wings of the Netanyahu coalition have supported similar plans. In January, a plan was floated to send Palestinians to the Congo.

This is a classic case of ethnic cleansing — removing the “wrong” people from the land they live on so that the “right” people can move in. It is a crime against humanity. The term “voluntary migration” is used, as if people who have been bombed, starved, and driven from place to place in Gaza could make reasonable choices about leaving.

The Gamliel plan is not the official policy of the Israeli government. However, much of the effects of the last 4 months have lined up with the plan: making Gaza unliveable, destroying civil infrastructure, continuously evacuating Palestinians farther and farther south, towards the Egyptian border, and disallowing return to the North.

Today, about 1.9M of Gaza’s 2.3M Palestinians are crammed into Rafah, a town at the Egyptian border. Last week, Benjamin Netanyahu rejected a ceasefire proposal, saying that victory was near. The Israeli military has declared its plan to attack Rafah, including plans for an evacuation. Egypt has refused repeatedly to allow a mass deportation into the Sinai.

I am hopeful that “evacuations” might mean return to Gaza, Khan Younis, and other towns and villages north of Rafah. But I am also afraid that we are heading into an ugly endgame, where thousands of displaced people will be brutalized until the Egyptian government and Western nations agree to help with “voluntary” evacuations into the Sinai and elsewhere.

I hope that the US and other Western countries have enough sway in Israel to counter the more extreme factions in the Netanyahu coalition who want a Gaza Strip empty of Palestinians.

https://evanp.me/2024/02/10/the-gamliel-plan/

evanprodromou, to random

Just a few minutes ago I sent my development editor Sarah the news that I’d finished another chapter of the ActivityPub book I’m writing for O’Reilly Media. This was the hardest one so far — the one on the ActivityPub federation protocol that connects different servers on the fediverse.

I’m now at 5 out of 7 chapters, but I’ve got some more deadlines staring me down over the coming months, so I’m not going to be slowing down any time soon.

In other good news, I think we’ll have some of the early chapters up on O’Reilly Learning Platform coming soon. I’ve heard from the production team that it’s going forward. Go team!

https://evanp.me/2024/02/08/another-chapter-done/

evanprodromou, to random

During World War I, the Ottoman Empire collectively blamed the millions of Armenians in their territory for attacks by Armenian resistance fighters. Around 1M non-combatants were killed by the Ottoman military — in many cases, by forced marches through the Syrian desert without food and water.

Denouncing this genocide doesn’t make you an Armenian resistance fighter or an advocate for their views. It just means you’re against genocide.

In 1994, in the wake of the Rwandan civil war, the president of Rwanda was killed. Military and government officials suspected the Tutsi-aligned Rwandan Patriotic Front and blamed the Tutsi and Twa people collectively. They organized the mass killing of Tutsi people; between 500,000 and 1M people were killed in the following three months.

Abhoring this murder doesn’t make you a partisan of the Rwandan Patriotic Front. It just means you’re a human, opposed to the systematic slaughter of humans.

On October 7 2023, Hamas’s military wing attacked and killed about 550 Israeli soldiers and as many Israeli civilians. They kidnapped, tortured and raped hundreds more. In response, Israel has denied food, water and medical supplies to the 2.3M people of Gaza, driven them from their homes to a tiny sliver of land near the Egyptian border, destroyed half of all residential buildings, killed 30,000 people and seriously injured 60,000 more. The International Court of Justice (ICJ) has called this action a plausible genocide.

Wanting this genocide to end with an immediate ceasefire doesn’t mean you support Hamas or want Israel to be destroyed. It means you’re opposed to mass killing and expulsion of people from their homeland.

Is it exactly the same as these other examples? Absolutely not. Genocide never is. But you can be on the side of humanity against the destruction of the people of Gaza and it doesn’t make you an advocate for the views or actions of Hamas.

https://evanp.me/2024/02/04/taking-sides-in-a-genocide/

evanprodromou, to movies

I’ve been prompted by the Netflix algorithm pretty aggressively to watch Leave the World Behind, the 2023 apocalypse film — it said I was a 98% match for the movie. I’ve taken it in over the last couple of days, and I have to grudgingly admit that the algorithm was correct; I really liked it. Here are my impressions; spoilers ahead.

The film’s premise is straightforward — a middle-class Brooklyn couple played by Julia Roberts and Ethan Hawke take an impromptu family weekend trip to Long Island in a surprisingly posh rental house. Things start going wrong immediately — an oil tanker grounds itself on the beach where they are sunbathing; then Internet and mobile phone service go out.

That night, they’re awakened by the Black owners of the house, a father and daughter played by Mahershala Ali and Myha’la respectively. They’ve come from the city, where there is a severe blackout; they decided not to stay in their Park Avenue home, but instead come back to their country house. The renters, initially reluctant, even when offered a refund, relent when they see that all the television channels are on the emergency broadcast system.

Over the course of a few days, the families settle into an uneasy truce, as they realise that a serious attack on the United States has taken place. They endure sonic attacks, crashing airplanes and runaway self-driving cars, and increasingly strange animal behaviour. Ultimately, as the children suffer greater and greater hardship, they find a bunker in a nearby mansion to settle into, as mushroom clouds rise over the Manhattan skyline in the distance.

The underlying premise is fairly direct — that a foreign power, or a coalition of them, has used cyberattacks to weaken America’s resolve and spread terror. With a frayed social fabric, Americans may do the job for the attackers by turning on each other. What leadership there is in the country abdicates any responsibility, moves their investments electronically, and moves off to what we can expect is comfortable exile.

The acting was masterful. With only the faintest of brushstrokes, Roberts shows off the racist assumptions of white culture (she insists that the owners are really scammers, or maybe the handyman and housekeeper). Hawke’s character is easy-going and cavalier about his privilege. The gender dynamics in their relationship is roiling and unstable.

All the relationships are telling — between the renter dad and the owner’s daughter; between the owner and the mom; between the mom and the owner’s daughter. Probably the most difficult is the one between the renters’ older son and his younger sister, who dangles perilously at the margin of the social group. Her disconnection, and her resolve to start looking out for herself (inspired by an episode of West Wing), drives the story to its conclusion.

I was pretty deeply troubled by the story, in the shadow of the war currently underway in Gaza. I could not help but notice the parallels — absence of medical facilities, destroyed roads, information blackouts, bombings — between the experience of the TV characters and the real experience of the civilian population there. The characters’ absolute befuddlement that such attacks would happen to Americans, without understanding that they happen to people around the world every day, is richly ironic.

Most of all, I found the natural world’s disruption unsettling. Roberts’s character has a monologue at the end where she notes how little Americans actually care about the effects of their own actions on other people in the world or the animals and plants in it. It’s a little blunt and heavy-handed, but so well-written and delivered so expertly that it definitely broke through.

I’d recommend the movie if you’ve got Netflix (and sorry for the spoilers). It’s definitely given me a lot to think about.

https://evanp.me/2024/01/15/leave-the-world-behind/

#2023 #film #netflix

evanprodromou, to random

I finished the Obelisk Gate today; it’s book 2 of NK Jamison’s Broken Earth series. I want to write some notes here about the book to cement them in my mind. Spoilers ahead.

I mentioned on Mastodon that the series had been pretty striking for me. It’s the story of a future (probably) world in which scientists have accidentally thrown the moon out of regular orbit by trying to tap power sources in the Earth’s core. The result has been millennia of unstable geography, devastating weather, and repeated civilizational collapse.

As I said, “The questions raised are so relevant for today; the changing of the world, the question of whether destroying an old and unjust order is worth the destruction of so much more; the value of traditional wisdom; what place people of the present have in the long line of time and what we owe to others in other places on that line; what obligations persecuted people have to the rest of the world.”

This book struck me well in some ways, and also interlaced generational struggle, as a mother and daughter find themselves on opposite sides of a factional battle.

But other parts have been weak. The identities and motivations of those factions have been really unclear — who wants what and why. Side characters who seem to be on one side do things to favour another side. At least one character has turned traitor on his original faction, but it’s not clear who he’s defected to or who he started from.

As with a lot of apocalyptic fiction, the motivations of the characters is also hard to understand. Sometimes they seem to be doing things for the good of all humanity, to preserve some parts of civilization and life until the current crisis is over and the next livable period on the planet. At other times, they do horrendous harm in order to preserve their own small group — even though the group’s ability to survive will require collective support.

I’m going to take a break from the series and start another few books before I come back to the trilogy’s end. I’ll let you know if the threads come together for me, or if it continues to feel like a lot of overlapping paths not resolving to a single way forward.

https://evanp.me/2024/01/07/the-obelisk-gate/

evanprodromou, to random

I finished two more chapters this week in my book about ActivityPub. Chapter 2 is about Activity Streams 2.0, the social network data standard we use for ActivityPub. Appendix 1 is a reference for all the types in Activity Streams.

Next up is Chapter 4, federation protocol, and Chapter 5, extensions. I’m on a tight schedule for both.

First, though, I have to go over edits for the first 4 chapters so they can go out on the Early Release program. Can’t wait to get the text in front of real readers and start getting feedback.

https://evanp.me/2024/01/05/two-more-chapters/

evanprodromou, to fediverse

As I often do, I made a poll on the fediverse about two concepts I am interested in: Big Fedi versus Small Fedi. Although I think these are interesting topics, I couldn’t come up with exact summations of what the “Big Fedi” and “Small Fedi” positions are. So, I wanted to write down what I could here.

The fediverse, in this case, is an internetwork of social networks. It works a lot like email; you can have an account on one network and follow, message, and react to people (or bots) on other networks. The biggest software tool for making fediverse networks is Mastodon; there are a lot of other Open Source servers for setting up nodes. There are also some proprietary nodes — Meta Threads and Flipboard are two of the biggest.

The following are some clusters of ideas that I think coalesce into “Big Fedi” and “Small Fedi”. I haven’t been able to tie them all back to some fundamental principle on either side.

Big Fedi

The “Big Fedi” position is a set of ideas that roughly cluster together. Not everyone who agrees with one or a few of these agrees with them all, but I think they tend to be related.

  • The fediverse should be big. Real big. Like, everyone on the planet should have an account on the fediverse. It will make the internet better and the world better.
  • We should make choices that help bring the fediverse to new people. Because the fediverse should be big, we should be doing things to make it bigger; in particular, to bring it to more people.
  • There should be a lot of different account servers. (I’m using “account servers” instead of “instances” or “servers”.) It’s good to have a lot of choice, with a lot of different parameters: software interfaces, financial structure, what have you.
  • Commercial account servers are welcome. This variety includes commercial services. If they provide the right mix of features and trade-offs that certain people want, it’s good to have them, especially if they have a lot of users.
  • Moderation can be automated. Shared blocklists, machine learning, and other tools can be used to catch most of the problematic interactions on the fediverse.
  • Account servers can be big. It doesn’t matter how big they are: 1M, 10M, 100M, 1B people is fine.
  • The fediverse should have secondary services. In order to grow, we need secondary services, like people-finders, onboarding tools, global search, bridges, and so on.
  • The individual is central. People should be able to set up their environment how they like, including their social environment. They have the tools to do that. The account server may set some parameters around content or software usage, but otherwise it’s mostly a dumb pipe.
  • Connections should be person-to-person. The main social connection is through following someone. Building up this follow graph is important.
  • People I care about should be on the fediverse. I have a life outside the fediverse — friends, family, colleagues, neighbours. My governments, media, celebrities, sports figures, leaders in my industry. It would be good to have more of those people on the fediverse, so I can connect to them.
  • People should get to make choices about their account server. Everybody has different priorities: privacy, open source, moderation, cost, stability, features. We can all make our own choices about the account server we prefer.
  • It should be possible to have ad-free account servers. Technically and culturally, we should be able to set these up.
  • It should be possible to have Open Source account servers. People who prefer free network services should be able to run them and use them.
  • It should be possible to have algorithm-free account servers. You should be able to just follow things reverse chronologically.
  • It should be possible to have individually-run account servers. A normal technically-minded person should be able to run their own account server for themself, friends, their household, or even for a larger communty.
  • Harms that are mostly kept to account servers are up to people on those servers to solve. Good fences make good neighbours. If things become unbearable, people can move servers somewhat frictionlessly.
  • Affinity groups should stretch beyond account server boundaries. Groups, lists, and other social network features are important and should be fully federated. They should provide a lot of features.
  • There may be some harm that comes with growth; we can fix it later. We’re going to find problems as we go along. We can deal with them as we come to them.
  • The fediverse is going to look very different over time. The way things work now are not how they’re going to be 1, 3, 5, 10 years from now. Especially as the fediverse grows, different structures and ways of working are going to develop.
  • Open standards are important. By having public, open standards available through big standards organizations, we gain the buy-in from different account network operators to join the network. We definitely don’t have time to negotiate bilateral agreements; we need solid standards.
  • Variety in types of account server operators is good. Different people have different needs and tolerances. If we want to have more people, we need to cater to those different needs with different account servers.
  • Existing organizations can and should provide account servers. Not just existing tech companies; also businesses providing servers for their employees, universities for students, cities or other governments for their citizens.
  • Existing services, even if they’re bad, will become somewhat better if they have fediverse features. People on those services will get to connect with a variety of new people. They’ll find out about the fediverse, and might move to another account server, or try something else new.
  • It’s more important to bring good people to the fediverse than keep bad people off it. More people is good, and the people I care about on other networks are also good. There may be some bad people, too, but we’ll manage them.

Small Fedi

Here is a rough cluster of ideas that I’d call “Small Fedi”. Again, not everyone who agrees with one or two of these agrees with all of them.

  • The fediverse should be safe. Safe from harassment, safe from privacy violations.
  • Growth is not important. We’ve gotten along this long with a small fediverse. It’s OK how it is, so growth is not important. Growth is a capitalist mindset.
  • People who aren’t on the fediverse don’t matter as much as people who are. Their needs, at least. When discussing the future of the fediverse, we don’t need to talk about people on other networks much at all.
  • If people want to get on the fediverse, they can join an existing account server. We don’t need to bring new account servers to the fediverse; there are a lot already. People who really care about getting on the fediverse can join an existing account server, or set up their own. If they’re not willing to do this, they’re probably not that interested in the fediverse, so why should we bother trying to connect to them?
  • If growth could cause harm, we either should fix the problem before growing, or we shouldn’t grow. We should examine opportunities carefully, but by default we should say no.
  • Commercial account servers are discouraged. Most commercial services do harm. Even if they’re on the fediverse, they’re going to try to do harm to make more money. So, they should be avoided as much as possible.
  • Secondary services can cause harm and should be severely limited if allowed at all. People search and content search can be used for privacy invasion or harassment. Shared blocklists can be manipulated to cause echo chambers. Machine learning can be biased. Onboarding services favour big account servers. They should be discouraged or, preferably, closed.
  • The account server is central. Moderation decisions, cultural decisions, account decisions, most social decisions should happen at the account server level.
  • Account servers are the primary affinity group. You should find an account server that feels like home. Any other groups are less important.
  • Feeds like “fediverse” and “local” are important. There is a public community of account servers that your account server connects to, and the public feed from that community is important. You might use it more often than your home feed. Your local feed is also important, because your account server is a group you belong to.
  • Moderation should be primarily by hand. The courage and wisdom necessary to make most moderation decisions can only be managed by hand. Automated tools can be manipulated.
  • Account servers must be small. Human moderators can only do so much work, so the account servers they moderate can only be so big.
  • The fediverse works just about right right now, and shouldn’t change. There’s a good reason for how everything works, and it’s fine. People who want to change the way things work just don’t get it.
  • It’s not important that people from my real life are on the fediverse, and it’s kind of discouraged. The account server is the most important affinity group, then the larger “fediverse”. That’s enough; other people are needed or welcome. People who I know who aren’t on the fediverse don’t care about fediverse stuff, so they’d get bored here, anyway.
  • It is highly discouraged to have ad-supported account servers. Even if they only show ads to their own users, they are causing harm. In particular, they’re showing our content next to ads, or using our content to develop ad algorithms. Either way, harm goes beyond the server border.
  • It is highly discouraged to have proprietary account servers. They just can’t be trusted with their own users’ data. Also, they’re going to get some of our data, just through federation, and who knows what they’ll do with it.
  • It is highly discouraged to have algorithmic timelines. Anyone having these causes problems. If you want one, you just don’t get it.
  • Open standards are less important than making things work the way we want them. In particular, fiddling with standards to keep people safe, and to discourage particular account server structure, is an OK thing to do.
  • Most existing institutions have proved themselves untrustworthy and should not provide account servers. Name any particular part of civil society, and I can come up with an example of at least one bad practice they have.
  • Harms that happen on one account server are a problem for every account server. Server blocks, personal blocks, and protocol boundaries aren’t enough to isolate problems to their account server of origin. Secondary or tertiary effects can happen and cause harm.
  • Existing services, if they’re bad, will make the fediverse worse. Bad practices, bad content, bad members will cause problems for everyone on the fediverse.
  • It’s more important to keep bad people off the fediverse than to bring good people to it. Bad people can be really horrible. There aren’t actually that many good people on bad services, and if they really wanted to connect with us, they’d find another way.

Where do I land?

I’m mostly a Big Fedi person; I did the work on the fediverse that I’ve done in order to bring it to everyone on the planet. I don’t think people should have to pass a test to be allowed on the fediverse.

That said, I respect that harm can come from new technical decisions and new network connections. As someone deeply involved in the standards around ActivityPub and the fediverse, I’d like to make sure that we give people the tools they need to avoid harm — and stay out of the way when they use them. I very much like the Small Fedi suspicion of new services and account servers, and careful consideration of the possibilities.

I’d like to find ways to mitigate the problems of so many people on proprietary social networks being unconnected to the fediverse, but still centre the safety of existing fedizens. I don’t have an easy answer to how this can work, though.

Anyway, thanks for reading this far. Also, an acknowledgment: I borrowed the term “Small Fedi” without permission from Erin Kissane’s great piece on Untangling Threads. I’m also using it differently, stretching it out, which admittedly is an ingrateful thing with something you borrow. I hope it is not ruined by the time I return it.

https://evanp.me/2023/12/26/big-fedi-small-fedi/

evanprodromou, to random

I have some strong feelings about the social web (aka “the fediverse”) right now. I don’t aways communicate them well, because they feel so essential to me, which can be frustrating for my friends, colleagues and allies. I want to set out some steps for my reasoning.

  • I think the social web is very important. Distributing the locus of control on social computing from monolithic services to individuals, families, clubs, civic groups, universities, coops, and a competitive market is important for everyone.
  • We are at the cusp of exponential growth of the social web. The current time is like no other we’ve ever had.
  • We get exponential growth based on having one protocol, not a half dozen. I think Blue Sky, Nostr, and others are a threat to ActivityPub breaking out and becoming ubiquitous. There can’t be multiple winners. I often reference Metcalfe’s Law in this regard; one big connected internetwork is much better than 3 or 4 disconnected ones.
  • ActivityPub has a claim to being The Social Network Protocol, because it was standardized by the W3C. Protocols are not a meritocracy; it’s not like the best protocols always win. Usually, just the opposite. Protocols with a claim to official sanction, and wide adoption, win.
  • Keeping a clean line of legitimacy for AP, and a good relationship with the W3C, is key. The SocialCG is the designated steward of the spec. People know to come to the CG to participate in the spec. That’s good. We want that to keep happening.
  • Any proposals that talk about taking AP away from the CG, or forking it, or making experimental versions, are really, really bad for the fediverse. There is no improvement you could make to ActivityPub that justifies breaking backwards compatibility, undercutting the protocol’s legitimacy, and splitting the network. Everything needs to be incremental, backwards compatible, W3C- and SocialCG-led, and support rather than inhibit growth.

A lot of people don’t agree with me on these. They may think that it’s great to have lots of protocols competing, in the same way it’s great to have lots of vendors competing in a market; that competition makes protocols better. But that’s not the case; standards aren’t about competition. They’re about cooperation. A compatible, connected internetwork makes all implementations more popular and better used; see the aforementioned Metcalfe’s Law. We need to agree on standards, and compete on implementations.

Some people also think that changing the way a Collection is represented in ActivityPub will make the whole thing “better” because if you are reading the JSON-LD on the wire, it will be more elegant and conceptually sound. This is a bad definition of “better”. “Better” for ActivityPub should mean, it helps more people connect to more other people they care about. And sometimes that means using the existing, well-implemented methods, even if they’re not as beautiful to you when you’re writing code as your own ideas are.

Others think that there’s still time for incompatible changes to AP — hitting the big “reset” button and getting the dozens of implementations on the fediverse today to rewrite their federation code to reject Note objects and only accept Microblog ones, or something similar. There is not, in fact, time for that.

Finally, some people think that a casual specification, without a standards organisation behind it, will be more responsive to developers and users. I definitely think there is room to develop experimental protocols on top of AP, but we have an extension mechanism for that. We can have a stable, dependable core, and have cool, new, fast-moving extensions. They’re not incompatible.

I want to see ActivityPub win, so we can have a great social web. I’m going to keep trying to make AP, the SocialCG, and the social web stable, dependable, and iteratively developing. I hope others agree and will do the same.

https://evanp.me/2023/10/06/activitypub-the-socialcg-and-the-social-web/

  • All
  • Subscribed
  • Moderated
  • Favorites
  • megavids
  • mdbf
  • magazineikmin
  • tacticalgear
  • thenastyranch
  • ethstaker
  • rosin
  • love
  • Youngstown
  • slotface
  • ngwrru68w68
  • kavyap
  • osvaldo12
  • DreamBathrooms
  • anitta
  • everett
  • InstantRegret
  • cubers
  • modclub
  • tester
  • khanakhh
  • GTA5RPClips
  • cisconetworking
  • Durango
  • normalnudes
  • provamag3
  • Leos
  • JUstTest
  • All magazines