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

Searching for a standalone server implementation with api #2

Open
pwFoo opened this issue Nov 3, 2018 · 10 comments
Open

Searching for a standalone server implementation with api #2

pwFoo opened this issue Nov 3, 2018 · 10 comments

Comments

@pwFoo
Copy link

pwFoo commented Nov 3, 2018

Maybe microstatus is what I'm searching for?
Looks like it's still under development. Is there a roadmap / ToDo and list of implemented features?

@pwFoo
Copy link
Author

pwFoo commented Dec 7, 2018

@Arkanosis
Project still maintained?

@Serkan-devel

This comment has been minimized.

@Arkanosis
Copy link
Owner

Arkanosis commented Dec 8, 2018

Hi @pwFoo ! :-)

Thank you for your interest and sorry for the late answer.

The project is only in the early phase of its development (mostly specification and trying alternatives to make sure I don't miss anything). Unfortunately, I haven't had much time to spend on it so far, nor on my own projects in general, hence my lack of activity on GitHub since October.

microstatus is not ready for any usage right now, and I won't commit to a roadmap as I have little control on how much free time I have to work on it (trust me, I'd love to).

Here's what I'm already 100% sure I want to make of it, though:

  • library which can be reused + packaged Linux daemon;
  • compliant server support of the ActivityPub protocol;
  • firstclass federation with Mastodon;
  • lightweight implementation that anybody can run on a low-cost VPS (that's my own use case) or even a Raspberry Pi;
  • easy deployment on Debian/Ubuntu and Arch (ie. no more difficult than apt install microstatus or pacman -S microstatus);
  • hackable storage format one can easily use with UNIX tools (my use cases include adding activities from shell scripts and displaying them on a website built with Hugo);
  • focus on instances with a low number of accounts (my use case is a single user with tens of accounts).

I'd also like the following — though it's only secondary to the list above:

  • compliant client support of the ActivityPub protocol;
  • compliant server support of the OStatus protocol;
  • firstclass federation with GNU Social, PeerTube, PixelFed and more;
  • easy deployment on other operating systems.

It might happen that microstatus provides the following, but that's not my primary focus at all (it'd happen by accident or because someone else made it so):

  • ability to scale to billions of users;
  • builtin UI.

I hope it somehow answers your questions. If not, feel free to ask for more details ;-)

@Arkanosis

This comment has been minimized.

@Serkan-devel

This comment has been minimized.

@pwFoo
Copy link
Author

pwFoo commented Dec 8, 2018

It should be docker friendly (entrypoint script, environment var configuration?) too 😁

Maybe you could add a roadmap with done and planned feature status?

@Arkanosis
Copy link
Owner

To be honest, I don't care much about Docker myself, but as easy deployment is one of the main goals, adding Docker support is something I'll probably do as soon as I have something users can rely on. The Dockerfile shouldn't be much more complicated than:

FROM stretch-slim:latest
RUN apt install microstatus
CMD microstatus

… and you'd have to run it with the storage directory bound to /var/microstatus — something like that.

I'm not sure how much this would be an improvement over simply copying the binary on the host (we're not talking about Mastodon here: there won't be any PostgreSQL, Redis, Ruby or Node.js to install and configure there — run the microstatus binary and you're done, that's the point).

But hey, it's almost 2019, so yes, it'll be Docker friendly ;-)

As for the roadmap, what I'll do is creating issues and associating them with milestones (ie. versions, not dates — again, I can't commit to any deadline), so that anyone can see how I prioritize features. That's how I've been working on other projects (eg. done / todo). Does it sound fair?

@pwFoo
Copy link
Author

pwFoo commented Dec 8, 2018

Open issues with milestones is fine 👍
Roadmap or milestones is just to see how much features should work or planned at the moment.

@pwFoo
Copy link
Author

pwFoo commented Dec 8, 2018

Is a notification endpoint planned?
Webpush api to support (closed) browser push notifications?

Tested Mastodon and misskey, but both Not perfect... That's why I searching for a standalond and lightweight server with api.

Maybe compatible to mastodon frontends like halcyon or pinafore. Or try to build a custom client...

Storage should be replaceable. I like mysql.

@Arkanosis
Copy link
Owner

Web Push is an interesting feature, but I think anything apart from the core ActivityPub implementation would be better implemented as another tool one would plug on top of microstatus' API. Therefore, I have no plan to provide support for Web Push (actually, no plan to provide an UI at all).

There will be some internal notification mechanism, though I've not designed anything about it for now. Anyway, it should make it quite easy to implement Web Push either on top of the API, or by re-using the microstatus ''library'' (as opposed to the microstatus ''daemon'').

As I wrote above, a secondary objective is to provide compliant client support of the ActivityPub protocol. I believe this would effectively make microstatus compatible with Mastodon frontends (including webapps and mobile apps), though there are probably a bunch of quirks that are necessary (but that's something I'd be willing to make work).

As for storage, I don't intend to implement anything other than files to begin with, but I'll make sure to make it a pluggable component in the microstatus library, so that if anyone wants to implement an alternative backend, it's just a matter of using the same traits.

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

No branches or pull requests

3 participants