Skip to content

ActivityPub Integration

Nathan Byrd edited this page Dec 31, 2022 · 30 revisions

Overview

Discussion and design of ActivityPub / Mastodon with ENiGMA½.

GitHub Issues

Desired Integrations

  • Act as both a server and a client
    • On behalf of users
    • As the BBS itself (bot)
  • Feed views
    • Local
    • Federated
    • Following
  • Inbox
    • Direct replies also land in user's inbox
    • User can again reply, or directly post to ActivityPub addresses
    • Similar to EchoMail
  • Message Areas
    • Ability to map a message area to a ActivityPub 'group'
    • Read and reply in message base
    • Similar to EchoMail
    • Bridged message areas, such as FTN (non-Mastodon node) <-> Local (Mastodon) <-> Fediverse

Misc

  • Add additional info/debug/warn/error logging to web.js to help track down issues and to (long term) help identify abuse by logging IP, maybe correlation id, etc etc.
  • Looks like Mastodon is adding some Group functionality that might make my suggested workaround for message areas unnecessary (depends on timing, I see anything about when it will be released though it does look like it is funded work): https://github.com/mastodon/mastodon/pull/19059

Questions

  • Should we create a more generalized ActivityPub support/module/classes that Mastodon then extends?
  • Is the web part of this big enough that we should look into using something like express.js and a module like activitypub-express instead of rolling our own implementation

References

Implementations

Approach for web components

  • Build our own (maybe using https://github.com/jakelazaroff/dumbo as a guide)
    • Advantages

      No rework required, extending what we already have

      Can build it up a little at a time

    • Disadvantages

      We are totally on the hook for interoperability

      Maybe more work overall when some of it has already been done for us

  • Use existing activitypub-express module - https://github.com/immers-space/activitypub-express
    • Advantages

      Very complete

      Popular

      Interchangeable storage (that we would have to swap out)

      Active (last update Nov 11)

    • Disadvantages

      The completeness might lead to additional time to understand the full codebase

      Although storage is interchangeable, it is centered around ActivityPub, decent amount of work there to interface

Clone this wiki locally