Been thinking about [fediverse wiki] after @2chanhaeng@hackers

Been thinking about [fediverse wiki] after @2chanhaeng@hackers.pub mentioned it today. Some ideas:

  • Cross-instance page linking: [[Page Title@other-instance.wiki]]
  • Edit pages on other instances with your home account
  • Fork pages across instances: [[Page@instance-a.wiki]][[Page@instance-b.wiki]], sharing edit history up to the fork point
  • Merge forked pages later when needed

The fork/merge model feels natural for federated collaboration. Thoughts?

#fediverse #wiki #fedidev #ActivityPub

3
1

Log in to comment

3 Comments

Though, tbh, someone should probably create a ActivityStreams 2 type for “plain text with facets” where the facets are essentially byte offsets in the plain text, which would enable supporting formatting of course, but also links, mentions, etc.

The content could then still be rendered to HTML, but the source would still be there as an attachment with as plain text + facets + attachments for media.

If you’re doing Title@other-instance.wiki that seems to imply that you may be doing webfinger to find the article on the other server? I’d probably not recommend this, since article titles can and do change. You’d probably want to define a “search” endpoint on the instance, and then call that, and maybe you’d write it as: [[:other-instance.wiki:Page name#Section name|Displayed text]] where all you need to do is type [[:other-instance.wiki]] and it gives you UI to search for a page name on the other wiki, and automatically fetches the title to display. When you store the page in the database, you’d store the mapping of :other-instance.wiki:Page name#Section name to the Object URI for that page / section. (Since AP objects are only mapped to URIs)

For doing forks / merging, you’d likely want to keep a CRDT of the changes made, e.g., using AutoMerge: https://automerge.org/

Then the edit collection would contain an ActivityPub representation of the CRDT changes, e.g., some serialization of https://automerge.org/docs/reference/documents/rich-text/

That would allow serverA to merge in serverB’s edits, even if the article on serverA had been changed.

Insert image