mudkipme / MoeMemos

An app to help you capture thoughts and ideas
http://memos.moe
Mozilla Public License 2.0
441 stars 40 forks source link

ActivityPub support #141

Open opk12 opened 11 months ago

opk12 commented 11 months ago

I like the UX of the app, but I'd like a more standard and future-proof backend. What about supporting the ActivityPub client to server API for a self-hosted, single-user instance?

mudkipme commented 11 months ago

As a resident of the fediverse, I'm thinking about adding multi accounts feature and supporting some kind of ActivityPub servers too (But without social features). And many elements of Memos (Such as memo visibility, pinned memo) can be found in ActivityPub. Thanks for coming up with the same idea! 😊

However I don't remember any ActivityPub implementations actually supporting the ActivityPub Client-Server API (I hope there are any). Some server software (such as GoToSocial) implemented a subset of Mastodon API, which is supported by many clients.

I'd like to know the server software you wish to use and your use cases if it be supported by Moe Memos. :)

opk12 commented 11 months ago

Thank you for considering the idea and for mentioning GoToSocial; my first concern about Mastodon is that it can (rightfully) break its API. If this thread is still current, GoToSocial is the only maintained and lightweight impl; one nasty bug, however rare, and I must switch to AP, because I cannot afford the time to learn / maintain a Ruby and Mastodon setup and because I'm told they use large amounts of RAM.

About AP client-to-server, I was pointed to this support matrix and this FAQ from the forum. I have not researched the servers yet, but if microblogging.pub is Python + SQLite, it will be my first try.

From a purely API standpoint, I don't know how these APIs compare and which one is better.

My goal is to self-host at home. The ideal server is no-maintainance, lightweight (HTTPS wrapper for SQLite or Postgres) with no dependencies (Ubuntu desktop without Docker and server-side languages). When (as opposed to "if") it goes bloated or unmaintained, I replace it and do not need to research and relearn the clients.

I am actually looking for an improvement over my current Synapse setup. I am using a self-hosted Matrix Synapse since a few years now. The spec is very featureful; the Android clients do not yet have full offline support; there is only one viable server impl, and upgrades take some time to review, as it is not mature yet to have a long-term branch. I used Dovecot previously, it was easy to set up, but IMAP has no concept of editing, so drafts are not really safe as memos.