Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ActivityPub / Mastadon #459

Open
cognitivegears opened this issue Dec 29, 2022 · 18 comments
Open

ActivityPub / Mastadon #459

cognitivegears opened this issue Dec 29, 2022 · 18 comments

Comments

@cognitivegears
Copy link
Collaborator

Is your feature request related to a problem? Please describe.

I know this would be a pretty major undertaking and kind of a crazy idea but I really think that ActivityPub integration for Enigma 1/2 would be amazing. That way an Enigma BBS could be a part of the Fediverse and interoperate with other ActivityPub systems like Mastodon. Mastodon strikes me as having many similarities with the BBS world - messages are distributed, sorta similar to FidoNet etc, while also split into local instances grouped by shared interests, similar to local BBSes.

Describe the solution you'd like

Implement the ActivityPub API on GitHub.

One possible implementation of this is to use express-activitypub as a reference, potentially using some of the code if the licensing etc is compatible.

Each user could map directly with their username, private email could be mapped to DMs, new menu options added to display feeds (following, local, federated) and search. One question could be how to map local boards into ActivityPub - I think we could use a strategy similar to this project:

Guppe Groups - Github

Using this approach, Mastadon users could follow a generic "user" for each board to see messages, and @ mention them to post something to the board.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

I did consider creating a Mastadon client or full ActivityPub system as a Door, but:

  1. for all the functionality needed for this, it would probably make sense to start with a fork of Enigma 1/2 anyway, and at that point better just to integrate the functionality
  2. besides opening up the Fediverse to BBS users, by integrating it would also provide a new interface to the BBS itself if the client interface is implemented, which would be great to make a quick easy interface for the BBS when you are on mobile etc.
  3. wouldn't it be great to have Enigma 1/2 listed alongside Mastodon, Diaspora, Pixelfed etc? Might bring some people back to the BBS.

Additional context

@cognitivegears
Copy link
Collaborator Author

By the way, if you agree I'd be happy to help with development any way I can - the idea was way too large for me to just put in a PR out of the blue (if even I could manage to figure it out by myself) but if you agree I'd be happy to take on parts of the integration as well with your direction.

@NuSkooler
Copy link
Owner

@cognitivegears I love this idea -- I've been pondering it a bit myself. The protocol is fairly simple in general I believe, and enig already has a web server built in that should be leverageable.

Funny, I opened a tab to look at closer just this morning: https://github.com/jakelazaroff/dumbo

Let me play some of this back to make sure I understand some of your proposals:

  • Map user directly to a particular BBS and server, e.g. @NuSkooler@xibalba.l33t.codes
  • Direct replies to said users would result in a inbox entry
    • We may even be able to allow them to then reply from the inbox; enig has a concept of foreign addresses for this purpose

I'm not fully following the @ mention in connection with 'local boards' though?

Anyway, I'd love to collaborate on this!

Additional refs:

@cognitivegears
Copy link
Collaborator Author

@cognitivegears I love this idea -- I've been pondering it a bit myself. The protocol is fairly simple in general I believe, and enig already has a web server built in that should be leverageable.

Awesome! And I was thinking the exact same thing about the web server. Actually a lot of the design choices (for example UTF-8 internally) play into this really well also.

Funny, I opened a tab to look at closer just this morning: https://github.com/jakelazaroff/dumbo

Let me play some of this back to make sure I understand some of your proposals:

  • Map user directly to a particular BBS and server, e.g. @NuSkooler@xibalba.l33t.codes

Right exactly

  • Direct replies to said users would result in a inbox entry

    • We may even be able to allow them to then reply from the inbox; enig has a concept of foreign addresses for this purpose

Exactly, and that's great news as well, that's one area I was wondering about.

I'm not fully following the @ mention in connection with 'local boards' though?

So, I probably shouldn't have said board here - I meant each "message area".

For example, say I follow you "@NuSkooler@xibalba.l33t.codes" from my account "@cognitivegears@mastodon.social" and you posted in the General message area then I could see that on my feed. But say another person then replies directly on the BBS to that post. Since I don't follow that person though, I wouldn't see the reply at all. It would be great to be able to follow the message area itself and see everything posted on it.

So, to do that, we give each message area a "user" as well. So for General for example it could be something like "@xibalba-general@xibalba.l33t.codes" (probably configurable per message area or something.) Then if I follow that from "@cognitivegears@mastodon.social" then I would see all the posts on that message area no matter who they are from. The original poster can be tagged in the message as well.

To take that a step further, we could even allow (probably optional via setting) other people on Mastodon or other servers to post to that message area by tagging "@xibalba-general@xibalba.l33t.codes" in their message.

This is pretty deep into design here and definitely not a first step, but if we could get here then it would be super powerful. It would mean people could follow and contribute from anywhere with both users and message areas. Of course we'd then also need to support controls on this too like blocked servers or users etc.

Anyway, I'd love to collaborate on this!

Awesome I would love to help! I'll read up on some of these refs to get a better handle on the spec. I assume you'd start a long lived branch for this like you did with admin console? Just let me know and if there is some particular area you'd like me to help with. This sounds exciting 🙂

Additional refs:

@NuSkooler
Copy link
Owner

NuSkooler commented Dec 30, 2022

@cognitivegears OK yep, this all make sense, thanks!

Yep, feature branch works well here. We can devise a light spec then break up the work pretty easily I'd think. That will help me point out where various pieces of code live as well.

Mastodon has it's own extensions and information as well.

IRC/Discord/Whatever would help as well

@cognitivegears
Copy link
Collaborator Author

@cognitivegears OK yep, this all make sense, thanks!

Yep, feature branch works well here. We can devise a light spec then break up the work pretty easily I'd think. That will help me point out where various pieces of code live as well.

Mastodon has it's own extensions and information as well.

IRC/Discord/Whatever would help as well

Great - I'm cognitivegears#2645 on Discord. Happy to use something else if you prefer as well, lmk. I like the idea of coming up with a light spec - want to throw something in google docs or somewhere and we can just start throwing stuff against the wall?

@NuSkooler
Copy link
Owner

@stlalpha
Copy link

This is very cool. I think the abstraction of message bases/bbs covers the gap well and leaves room for you to add text into the message payload identifying the local user (that doesnt have a mastodon account)?

@tracker1
Copy link

tracker1 commented Jan 2, 2023

Wouldn't being a user of the BBS intrinsically mean there's a mastadon account @username@bbsname ?

@cognitivegears
Copy link
Collaborator Author

Wouldn't being a user of the BBS intrinsically mean there's a mastadon account @username@bbsname ?

Correct, that's the idea. It is expanding the bbs itself into the Fediverse. Technically they have an ActivityPub account, not specifically a Mastadon one, though we are aiming for Mastadon compatibility so practically it's pretty much the same thing.

@cognitivegears
Copy link
Collaborator Author

This is very cool. I think the abstraction of message bases/bbs covers the gap well and leaves room for you to add text into the message payload identifying the local user (that doesnt have a mastodon account)?

As I mentioned for the other comment, they actually do have an account (or more specifically an ActivityPub account, but it should be compatible with Mastodon so pretty much the same thing.) You are totally correct though that I am hoping we can add additional data that is BBS specific so that other people on BBSes can have an even richer experience when interacting via ActivityPub.

@tracker1
Copy link

tracker1 commented Jan 2, 2023

Also, realized after my prior comment that networked message bases would have non-local users, so that reference would be different.

@cognitivegears
Copy link
Collaborator Author

Also, realized after my prior comment that networked message bases would have non-local users, so that reference would be different.

Grew point - we haven't talked about what to do about networked message bases. Thoughts on what the best way to handle this is? Not sure if it should just be local only, or if there is actually a case for federating what is already a network. On the other hand, kinda reminds me of the old school Fidonet to internet gateways in the past.

@NuSkooler
Copy link
Owner

I am hoping we can add additional data that is BBS specific so that other people on BBSes can have an even richer experience when interacting via ActivityPub.

We can certainly add all the rel values we want. For example, imagine something like this:

{
  "rel": "ftn-address-list:v1",
  "type": "application/json",
  "href": "https://.../SOMEUSER/ftn-address-list"
}

Where fetching may yield:

{
  "ftn-address-list": {
    "fsxnet": "NuSkooler@21:1/121"
  }
}

@NuSkooler
Copy link
Owner

I have a list of bug fixes, minor improvements, etc. to finish up in the alpha, then this can go to main. Features can then be contributed.

If anyone else wants to test: https://xibalba.l33t.codes (ask NuSkooler for beta access)

@snan
Copy link

snan commented Aug 26, 2023

One question could be how to map local boards into ActivityPub

For boards, something compatible with kbin's "magazines" or lemmy's "communities" would kick! ♥

@NuSkooler
Copy link
Owner

Lemmy's communities follow a FEP proposal for groups - https://codeberg.org/fediverse/fep/src/branch/main/fep/1b12/fep-1b12.md

I"m not yet sure how kbin does it, but sticking to a FEP, which a lot of AP authors have started working together on would be good.

@snan
Copy link

snan commented Sep 4, 2023

Kbin also uses that FEP, I think

@christiansacks
Copy link

Has this been implemented for other people to use/try? I would love to get my enigma into the fediverse to join xibalba.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants