Session: Portability of content in the Fediverse


Convener: Lisa Dusseault (@lisarue@mastodon.geekery.org)

Participants who chose to record their names here:

  • Darius Dunlap (@dariusdunlap@indieweb.social)

  • Chris Riley (@mchris@techpolicy.social)

  • Jim White (@jimwhite@mas.to)

  • James Marshall (@jamesmarshall@sfba.social)

  • mhoye (@mhoye@mastodon.social)

  • Christel van der Boom (@xtel@flipboard.social)

  • Ryan Barrett (@snarfed.org@snarfed.org)

  • Edward L. Platt (@elplatt@greatjustice.net)

  • Chris Messina (chrismessina@mastodon.xyz)

  • Les Orchard (lmorchard@mozilla.social)

  • Johannes Ernst (@j12t@social.coop)

  • Manton Reece (@manton@manton.org)


Note - there’s a developers’ conference on data transfer specifically in the fediverse running next week - see https://dtinit.org/events and contact mhoye@dtinit.org for info.

Note also that the W3C SocialWeb Community Group is discussing a new Working Group and its charter. Portability is out of scope according to very early proposals, which is appropriate if we believe that the WG should first work on tasks that are further along like auth.

Data Transfer Initiative: https://dtinit.org/

Lisa is newly CTO. Recent post on goals: https://dtinit.org/2023/09/12/goals-lenses

Categories Lisa started with, now extended:

  • Users porting their own posts (content) and images in those posts to other platforms

  • Follow list - recreating at a new home - Already works!

  • Moderation related data , porting from somebody who’s carefully built up moderation data

  • From server admin perspective - porting a whole server

  • We note that identity portability is also important! Specifically that individual servers are currently baked into both WebFinger ids (user@server) and AP ids (URLs). You can try to move your identity, but humans will still know you as user@server at your old server

Resources and Prior Work

Evan Prodromou (https://evanp.me/) on https://www.theverge.com/2023/4/20/23689570/activitypub-protocol-standard-social-network

W3C Data Portability in ActivityPub: https://w3c.github.io/activitypub/data-portability-report.html SocialWeb data portability - TPAC 2023: https://www.w3.org/2023/09/13-social-minutes.html

https://tantek.com/2023/112/t2/account-migration-post-blog-archive-format Manton’s Blog Archive Format: https://www.manton.org/2017/11/24/blog-archive-format.html Mastodon’s export facility (ActivityStream JSON-LD with media files) https://docs.joinmastodon.org/user/moving/#export

JWZ’s argument that replies to posts on mastodon should be treated similarly to comments on blogs on https://www.jwz.org/blog/2023/08/mastodons-mastodonts/

WXR: WordPress export to RSS (XML): https://wordpress.com/support/export/ Images/media are exported separately into a .tar file (of course the WXR file be put into or otherwise aggregated with that archive).


  • What can we do when the old server is not around or cooperating? Digitally signing data can help us unilaterally provie who we are in a new location.

  • Where is data portable TO? bringing a bucket full of random content to a new location, involves the moderators and hsots of the new location who have choices and ought to have agency

  • Defining the “Unit of Portability” itself carries great import for work in this area.

    • If you define the unit of content as a post AND its comments and likes, that supports some use cases and not others.

    • If you define the unit of content as a post OR any of its comments, that has different affordances.

  • The content people most want to share is sometimes the content we least want, and the inverse

Solutions, partial or greater

Mastodon can export a user’s content. Other servers can import that content

ActivityPub feeds themselves can be used to grab masses of data

  • but in many ways it’s more data than is needed.

WordPress: Users can export content but not images

  • 3rd party softwre does exist to import wordpress content, and that software tends to go hunting online for those images.

Dazzle: allows import into a personal data warehouse with a semantic graph structure (Johannes’ project). All kinds of personal data, not just social. https://dazzle.town/

X/Twitter: https://github.com/tweetback/tweetback

Meta/Facebook/Threads: https://www.instagram.com/transfer_your_information (you’ll get a Page not Found but it should load a screen in the native Instagram app)

  • These platforms often do support export but that doesn’t mean interoperability

Bluesky: https://atproto.com/guides/data-repos

Solid: https://solidproject.org/about

Permanent URIs: Insofar as these exist, using them can help a lot with remoderation. Every bit of content that was originally on one server, and then gets posted on a new server, now gets to be remoderated.

User needs/stories

As a social media content creator*, I participated in a server but it turned bad and I need to move.

  • I want to be able to move my content

  • I also want to be able to keep what my “likes” were.

  • I also want to keep Date stamp - more contextual than the date that the posts were ported to a new system

  • I ideally want to copy comments over too!

  • Define the “minimum viable” for each step of this exercise - minviable export, and what promises are made there, min viable import and what happens.

  • Define threat modelling and plans for importing filters up front - site owners/admins need to be able to play defense up front.

  • What does minimum viable accountability look like, and two and for who?

  • I want to move to my own super easy to deploy server

  • https://github.com/superseriousbusiness/gotosocial

  • https://codeberg.org/Vocata/vocata

  • UBOS single command Mastodon deploy on Linux running on Docker or cloud: https://ubos.net/

  • Deduping attachments (also necessary for moderation metadata portability) could be achieved by content-addressing (IPFS CIDs for example) or perceptual hashing (ISCC.codes); this would make backing up a huge video account, peertube/pixelfed, etc a lot easier

As a social media commenter, when some content I’ve commented on is being ported…

  • What if I don’t want those comments copied and distributed?

As a user of Threads and Instagram*

  • When I export my data, I can do so, but the export format is “shit” [sic]

  • Pace Nate at TPAC, Meta/Threads team is working on some recently upgraded export formats, so threads might even have better exports than Instagram

As a user on a server that blocked another server, I can’t move to that blocked server

  • (hope I got this right)

  • this is defintiely going to happen when communities split

As a social media creator with a large following

  • I want to be able to move my following to a new platform.

As an admin of a fediverse server, I want a say in content ported in.

  • If a user brings in 5 years of content, some of it may not meet our community guidelines. How can I even review it all?

  • Can I approve or pause a big incoming migration?

    • this will DEFINITELY happen (over and over again) , each time some shitposter is going to get kicked off their instance and try to port their shitposting to a new location.

    • In fact this is a known trolling mechanism.

Out of scope (probably)

Ryan notes that porting (or exporting and importing) data right out of the fediverse is a lot harder than just working within the fediverse, and we should start with the smaller problem first