Working full time on the Social Web
In January 2026, I will begin working full time in my role as Director at the Social Web Foundation. I am looking forward to the challenge of growing this young non-profit and fulfilling our mission to make a bigger, better Fediverse.
As a refresher: I have been working in the area of federated social networks since starting Identi.ca in 2008. Federated social networks are social platforms that let users on one platform connect to and interact with users on another platform. Linked up with open standard protocols, these platforms together form a Social Web that puts people first.
In 2018, I was a co-author of the ActivityPub standard for social network interoperability. I currently maintain the spec for the W3C and develop extensions for it. In 2024, I wrote ActivityPub: Programming for the Social Web for O’Reilly Media. And I co-founded the Social Web Foundation to further encourage the use of ActivityPub in social networks.
For the last year, I’ve been working nights, lunchtimes and weekends on SWF while holding down my full-time role as Director of Open Technology at the Open Earth Foundation. I love working at OEF; the organization build Open Source software to help cities fight climate change. I have felt very fulfilled in my work there, and I’ve made really strong friendships with the team. It’s been a very special place to work that has changed how I think teams can be.
But over the last year, SWF has had some really amazing opportunities, and in 2026 we’ll be making some big steps forward for the Social Web. I can’t keep doing both jobs, and I feel like, after 4 years at OEF, I’ve done what I can to build up that organization, and I am ready to start on this next one.
It will feel good to have my full attention focused on the Social Web. I’m looking forward to seeing my Open Source friends at FOSDEM 2026 in Brussels at the end of January where I’m helping to organize the Social Web track. I’m speaking at Princeton mid-February, and I’ll be in the Bay Area at the beginning of March. All this time, I’ll be working hard to get the next version of ActivityPub released and to push out several software projects to make the Social Web more fun and interesting.
Thanks to everyone who’s put time, effort and help into the SWF. Thanks to my coworkers at OEF for encouraging me on my next steps in my career. Thanks to my wife and family for tolerating yet another leap into the void.
I hope you have as exciting a New Year as I will.
#activitypub #career #job #socialweb #swf
@michael @haraldkliems @organicmaps @openstreetmap @mangroveReviews @sudoer777 @CoMaps @Dorothea
These are great #ideas, and also typical candidates to file an #ideation issue for at the #fediverse ideas repository, at..
https://codeberg.org/fediverse/fediverse-ideas/issues
As long-time #fedi advocate and #FOSS passionado I've seen countless times #people #come #together on nifty #ActivityPub ideas, only for it to fade out, and be forgotten again, until the next person throws it into ephemeral #microblog timeline voids.
#activitypub wizards, what happens if you set up a redundant relay between a gaggle of #Mastodon servers? Nothing, I assume, apart from wasting traffic and CPU cycles?
While I often use #openstreetmap and especially the excellent @organicmaps app, I wonder if there is an alternative to reviews on #googlemaps?
Is there any #opensource solution - ideally even #federated?
Having a solution based on #activitypub that allows reviews for POIs on @openstreetmap might be very interesting and open a lot of opportunities.
Mastodon and Bluesky are better than the centralized status quo. But between the two, I predict that Mastodon's ActivityPub will outlast Bluesky's AT Proto. More thoughts here: https://evanhahn.com/prediction-mastodon-will-outlive-bluesky/
#mastodon #bluesky #ActivityPub #ATProto #decentralization #tech
Wäre es nicht an der Zeit, dass die #WordPress Foundation Meetup gegen https://mobilizon.org/ eintauscht?
#activitypub #kalender cc @simon @nullbytes @pfefferle
@pjotrs72 @emaechler sie wollen anstelle #peertube weiterhin voc benutzen, aber ans #ActivityPub Protokoll anbinden.
https://github.com/voc/voctoweb/issues/853
I've had Honk, a light hearted activitypub platform, installed for quite awhile now. Updating and installing were simple enough that I could do it, but I honestly have no idea how to use it!
It's fun to say I've honked something tho. 🦆
Are there any other Honkers out there?
I'll write up my notes on the install process (has been stored away in my journal for over a year) before I uninstall.
https://humungus.tedunangst.com/r/honk

ActivityPub 서버에서 YouTube 추적 링크 방지하기
به نظرتون میشه با داشتن آیپی استاتیک و سیستمهای خانگی، توسط راهاندازی و استفادهی گسترده از #فدیورس و پروتکل #activitypub و یا بقیه، به صورت مثلا موازی، با قطع اینترنت توی دوران سخت مبارزه کرد؟
هرکسی سرویسی رو روی کامپیوتر #شخصی میزبانی کنه و با چند نفر به اشتراک بذاره. اینطور گرههای زیادی توی #ایران تشکیل میشن و بالاخره یکی راهی به بیرون پیدا میکنه!
جز اینکه خاموشی کامل باشه.
آیا همچین سناریویی قابل اجراست؟
Let's stress test the Fediverse on new year's.
Let's all make a nice "happy new year!" post (add media for bonus) and see if our beautiful decentralised network can handle it.
Boost for increased load. 😎
#Fediverse #Mastodon #ActivityPub #NYE #NYE2025
Anatomy of an E2EE ActivityPub Note in Enigmatick
Over the break I spent some time revamping my structs and enums for handling #E2EE #ActivityPub exchanges. This is what I have at the moment for the initial Create from the client (this is subject to change).
{
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://purl.archive.org/socialweb/mls"
],
"type": "Create",
"actor": "https://enigmatick.social/user/jdt",
"to": [
"https://enigmatick.social/user/mls-tester"
],
"cc": [],
"object": {
"mediaType": "message/mls",
"encoding": "base64",
"published": "2025-12-29T21:11:17Z",
"type": "Note",
"to": [
"https://enigmatick.social/user/mls-tester"
],
"cc": [],
"attributedTo": "https://enigmatick.social/user/jdt",
"content": "AAEAAhDIkTdahK5U3s1SQBbA2fIvAAAAAAAAAAEBABzHJj3+WZDE3Hw6H5W9YNhE3bhDSyExL4tnn0E5QOvPUeOgYdo/2n+rGUI1M8wupeK2bt919jAs8yTj2awvBAsprxAInHm8qWgq2FER2xjcpAx9f42ncAL8Xehfy3v6vonGuAPkYteAzdFCC8mGWxg3slpI+VoPrSWThSKqjMNxttZSfvbnhEFYw0jUFmJwxOecDS8n3UVjuLDt14V0Fw9YMv+XXUgKj9bWaCPi0qhuatcgxCqXwXzpevJBhY0trbPZgjB8LlhC/zcx5NNLI9WJtCF9zq3RPkG6ByPdH6IWTH5drOJyvefILElybP4eGMSoGWZATmGUQm/k3iKG6tRyzMM/fHxpIz34",
"tag": [
{
"type": "Mention",
"name": "[at]mls-tester@enigmatick.social",
"href": "https://enigmatick.social/user/mls-tester"
}
],
"attachment": []
},
"published": "2025-12-29T21:11:17Z",
"instrument": [
{
"type": "VaultItem",
"content": "oAjN0c2+q5gCtrFlauGU1kbKGizm5a5pH+iY5cObdihVBjjsSiSbkeu6XQ7/RR4lcn0OIqS9O+MVJ0QyympRxt7JI9qzCGlkCFcAyp4oe8nhh/YG7WHoLWL272vPqlq8A/Yf0YFprhIBlU48sJF6A1iRlU4fEBaRwnwV4gniSCQr55jpDe++M/HD3bSFJNcvpmf5BH9G4Z3VBaB8HMnDECGzFrB8zFycAR0w1SNYbGJuXFsopfMb4EfPkZoHT28="
},
{
"type": "Welcome",
"mediaType": "message/mls",
"encoding": "base64",
"content": "AAFAmCDd32lw8FF8QC6uFjAHr3mgvxBPjuGV1Pssxx+h5CNhcCAv4/tP+dWUbCq6L4A+aMr+L1uP3Xkusb4ea2H80EgFOUBUqHDCdGzjAhZdLCrjE0kM/aou36ZSZc0ahftKmE07chTiMUo8FgIj12deS4A0l3sXAR8x724HeigtyObI1GK7fxMGXU5oWemHGhS1unxK6XVyiuqvQriKP+VJPZa6JzN3Yb4r4l9B5jUfNUc5gX3XvzkzcO57Exj8SgpTTygo2zBTOPQ+6steYycUA70ed3LPKEfSCllIWeWAV+J+EFh7ywm90XFYzaPrXVudIx3orRzVMFnIldLax3oHUW5uXIrGQ06JWfgdOQ6DByb2iy/Dw4zJlbZP1oJptBTgO19IqUQaz58wrWDBSiYIT3h1jOXE3GvJgeeQIiW78noO5MF3xI3WRXB4C0cttyKm7Od2CBOk1USo+TDLCevnmExhlKlVTobTMMI4xZ1vVCdYpnb0k9rO7coVKPueBqVg2mE20GS/IoRG0v8+h0xUKIgsbYua41krjXoB5hctX4kH3lRO+qERkoXEcLVxRJuyeZEGsk4XrJ18AigU1a8gB6cZZ5LyvcV756yelu6F6MRQKba6zawDLOn4Takm3Lr3urfWo5Br7DBZcigMVjzGn8MhLSIEMhv6Ehmqajj9Vl6sTnpi90tVYWUtKO1buPrk3AiXrsbnEoNubqCs1sVmA93/Z0CcE8GQa1dO7NywofSV4/ax/tmBCZEoU6/uL7ygZHt8ZvSyd6wniPCR6sfd4ys4O8C7qW1KKFtEBbb1lMre494ZeXI5v0sG7MwbwFtI3d2uRHtWZ8v9khGr1ds4AFz3QnvoMSUtsR2kvq+C6H45kUs2ae957+txpKt5MDrcmK+CTTcX/FhlAtib4mlbs+Aj4WJFLOkXuB+MlHOMBlMz3ndJ5I3GDbo+VQvdJC2mCUOBWraihOV92mQQHi2gLXAA1NSsZIjXgnyVSYsrUvNJgTvw+AOVmJ7q5tXENPlZoOKUjSB3fEmKlywf90EQLUjDpphnYtvdFz8Oh8Vbgze+QAQp2VVYImI+1voBErK1EMKqEDFz1DC1CWUzqhl3k2pMgx00JhP3ZZpbX7YtjRmLjJM="
}
]
}
The mention of mls-tester has an [at] to avoid triggering my automatic webfinger resolution.
I've adopted the mediaType and encoding attributes from the draft ActivityPub specification. And I've standardized the Welcome message to incorporate those.
The Create includes the Welcome and a VaultItem as instruments rather than being sent as separate activities. The Welcome can include any number of recipients, so one within the activity should be sufficient.
The VaultItem is specific to the #Enigmatick client and isn't intended to be federated. That's how I'm handling ongoing access to the decrypted data; the VaultItem is a symmetrically encrypted representation of the original content that can be safely stored on the server for repeated use by the client. I'll need to eventually update the @context with that extension.