
Plume – WIP Federated Blog Engine with ActivityPub - lkurusa
https://github.com/Plume-org/Plume
======
TekMol
Federation is cool. I have the feeling it needs its "Ubuntu Moment".

Mastodon and Plume are interesting technology wise. But it seems there are no
instances with good design yet. I tried hard to like mastodon.social but the
interface drives me insane. It's even worse then Twitter.

Until Ubuntu arrived on the scene, Linux was for hardcore nerds. Now every
technically interested person has at least tried it.

I wonder what would happen if ActivityPub was used to build
Twitter/Instagram/FB alternatives with less aggressive advertising. But with
the same user friendly interfaces.

It wouldn't need much. Rather less. For example the choice of fonts and colors
on mastodon.social. Who thought it's a good idea to use tiny grey chars on a
black background? And then the idea to have multiple feeds on the screen that
constantly update without user interaction. This all screems '1337 Haxor
Dashboard!!!'. I have no idea whom I am supposed to impress with it. But I
know I get a headache from it.

Even using the browsers defaults would go a long way. White background, black
text, normal font, normal size. Plus a static feed in the middle of the
screen. And nothing much else.

~~~
jjrh
> Federation is cool. I have the feeling it needs its "Ubuntu Moment".

When federation is done 'right' you don't even notice it. Email for instance.

In my opinion social networks being in silos is as silly as something like
email being in a silo. Really what we need is user buy in and that probably
means figuring out how to interoperate with the various social networks like
facebook and twitter.

It would be cool if the big social networks started thinking about breaking
out of their silos and instead trying to be the gmail of federated social
networks.

~~~
TekMol
The big ones have no reason to break out of their silos. FB is worth $500B.
They want to build walls around that. Walls as high as possible.

It's a chance for small players. If there is a future where federated social
takes over the silos, then betting on it now would be a once in a lifetime
opportunity.

~~~
jjrh
You're not wrong, but if history is any indicator: tech companies need to
innovate or die. I'm not convinced facebook is here to stay.

------
grahamburger
Here's the thing I don't really get about Mastodon (and by reverse extension
ActivityPub):

Say I'm interested in Video Games, so I join a Mastodon instance all about
video games. Also, I'm interested in FPV Drone Racing. Should I join a second
Mastodon instance about FPV drone racing? If I do, then I have to switch back
and forth to use them (and for every other interest I might have). Which isn't
too difficult, but seems to defeat the purpose of federation. If I just follow
FPV drone racers from my Video Gaming account, then I am polluting the
federated timeline of the Gaming instance with stuff other people on it might
not be interested in. Also I have to follow each account on the FPV Drone
instance manually and don't get the local timeline of that instance.

It seems like federation would be more useful if accounts were federated as
well - like once I have an account on one instance I can use that account to
join other instances as well. Or if it were more like email where the server
you're on doesn't really make you part of that 'community' \- it's just a
place to store your stuff. Maybe I'm using it wrong?

~~~
edhelas
This is exactly how the XMPP network is made and how the social features that
we are building around are designed :) You use the same XMPP account to login
to different instances and everything is synchronized from the server your
account is on.

You can try it on [https://movim.eu/](https://movim.eu/), we propose several
instances across the world and you can login with the same account between
them (it's still better to pick the one that are geographically closer to you
to have a quicker load time).

------
Xeoncross
I'm really happy to see more applications published using Rust (and Go).
Without even looking, I know I'll be able to run Plume on commodity hardware.

PHP, Ruby, and Java programs seem so wasteful when it comes to memory.
Especially PHP and Ruby where re-using any of the codebase for a
mobile/desktop app is often close to impossible.

Consider the Plume install vs Mastodon (Ruby):

\- [https://github.com/Plume-
org/Plume/blob/master/DEVELOPMENT.m...](https://github.com/Plume-
org/Plume/blob/master/DEVELOPMENT.md)

\-
[https://github.com/tootsuite/documentation/blob/master/Runni...](https://github.com/tootsuite/documentation/blob/master/Running-
Mastodon/Production-guide.md)

~~~
TekMol
In my experience, PHP is super lean and fast.

You definitely can run PHP software on commodity hardware. The typical LAMP
application based on Laravel or Symfony runs just fine on a $5/month VM. And
will serve something like a million monthly users without breaking a sweat.

~~~
Xeoncross
I used to write a lot of PHP. My framework, MicroMVC was faster and lighter
than the original phalcon framework (written in C) according to the
techempower benchmarks. In fact, in round 3(?) it was the fastest PHP
framework period (and it included an ORM).

I still think PHP and Ruby need to be depreciated. I would never start a
product using either in this day and age.

~~~
juliend2
> I still think PHP and Ruby need to be depreciated. I would never start a
> product using either in this day and age.

Why? Only because they take more memory than Rust, Go, or C? Or is there
another reason?

~~~
Xeoncross
\- stdlib full of edge case problems causing you to second-guess and double-
check things. I had to write so many libraries to wrap core classes like
libxml.

\- No support for multiple CPU cores

\- UTF-8 is still a second-class citizen

\- Not strongly typed

\- High memory usage

\- Slow execution

PHP and Ruby can't even _serve themselves_ safely over HTTP and they are web
languages. They offer nothing that isn't better handled by Go and Rust. Even
Node is a better choice thanks to non-blocking I/O, the huge talent pool, and
the ability to reuse code on the frontend, desktop, and mobile.

~~~
juliend2
Thanks for the clarification. I think those are fair points.

BTW, do you think Rust would be a good replacement to Ruby for companies
trying create an MVP? Or do you think Go and Rust are more for the
optimization/scaling phase?

~~~
Xeoncross
Speaking for Ruby/PHP web apps. Go is not quite as fast as Rust, but much
easier to pickup since it has a simple syntax and manages memory for you. I
would save Rust (or C) for the optimization phase since finding developers is
harder.

Go is so good that huge companies like sendgrid, cloudflare and google never
move past it. Rust is great for hardware and embedded devices where memory
management really, really counts.

------
edhelas
On a similar way we already built a "Blog" solution on XMPP. This is relying
on the Pubsub extension and some others (like
[https://xmpp.org/extensions/xep-0277.html](https://xmpp.org/extensions/xep-0277.html)).

Two projects are already implementing it for several years Movim
([https://movim.eu/](https://movim.eu/)) and Salut à Toi ([https://salut-a-
toi.org/](https://salut-a-toi.org/)).

Here is the official blog of the Movim project
[https://nl.movim.eu/?node/pubsub.movim.eu/Movim](https://nl.movim.eu/?node/pubsub.movim.eu/Movim).
It already supports comments (and likes), edition, attached files and urls,
tags, richs texts and many other things. The posts are published and
distributed in real time across the XMPP network and you simply need a XMPP
account (and a recent server) to enable it :)

The big advantage to rely on XMPP is that this also allows us to use the many
other features provided by the protocol. If you subscribe to someone blog, you
can also chat in real-time with him, do video-conference, across lots of
different clients on lots of devices, invite him to chatroom… all those things
are not possible with ActivityPub and will require "another protocol" to do
that.

On the contrary, the "blog" feature is more seen as a little piece of XMPP
(that is also an IETF standard and implemented in several servers already used
by hundreds of services accross the world (see
[https://xmpp.org/uses/](https://xmpp.org/uses/) )).

One final thing, because XMPP is built on XML, the "blog" feature is simply
Atom elements published in Pubsub. No new standard, just some good old XML
things put together. Creating a simple HTTP-Atom feed from Pubsub is then
easy-peasy
([https://nl.movim.eu/?feed/pubsub.movim.eu/Movim](https://nl.movim.eu/?feed/pubsub.movim.eu/Movim)
and the other way around
[https://github.com/edhelas/atomtopubsub/](https://github.com/edhelas/atomtopubsub/))
:)

------
kodablah
Disappointed it requires postgres. We need to be focusing on running some of
these things at home with small, mostly self-contained desktop-style apps.
Many people have always on home machines (or this stuff could justify one).
NAT busting has been mostly solved, but you could use something like Tor onion
services otherwise.

~~~
kitotik
I had the exact same reaction. As much as I love postgres for monolithic
business systems, its a horrible choice for something that to see meaningful
adoption needs near-zero barrier of entry. if it can’t easily download and run
on an rpi it seems like a poor architecture for the use case.

~~~
TekMol
Why can't you run postgres on a rpi?

Isn't installing postgres as easy as mysql aka 'apt install mysql-server'?

------
evv
This makes it super easy to create a blog! So easy, I even managed to create
the following blog without even registering. (Yes, it seems that empty-
username:empty-password is a valid login on this service.)

[https://baptiste.gelez.xyz/~/MyLiveDemo](https://baptiste.gelez.xyz/~/MyLiveDemo)

Also it seems that the "new article" functionality is broken, which is pretty
important for a blogging service without any content.

------
zamalek
So this acts as an ActivityPub inbox (comments) and outbox (publications)?
Brilliant! I had been toying around with the same idea the past few weeks.

Go ahead and try searching for @BaptisteGelez@baptiste.gelez.xyz in Mastodon,
then toot-reply to one of the article toots (from Mastodon) - your toot will
show up on the blog post as a comment after a few seconds and a refresh.

Great work!

------
pat2man
Is there an ActivityPub aggregation service that lets me run Plume, Mastadon,
PeerTube, etc all on the same domain? Or will people always have to follow me
three times...

~~~
slipstream-
This can be done by, say, boosting the Plume/PeerTube content from Mastodon.

------
Geenirvana
Choice of name seems a bit unfortunate.

My immediate thought when looking at title was something to do with the
Android Twitter client Plume.

------
morganvachon
Not to be confused with Plume Creator, an open source tool for writing novels
and short stories:

[https://plume-creator.eu/](https://plume-creator.eu/)

------
bbimbop
This is awesome.

~~~
lkurusa
Indeed, can’t wait to get rid of the those “We’ve seen you here before” nag
screens Medium imposes.

~~~
okket
Safari -> "Use Reader automatically on 'medium.com'"

~~~
lkurusa
Wow, thanks for the tip!

------
ckluis
Not arguing, but Medium is more than the votes & articles. It's the totality
of the experience (from reading/metrics to emails & recommendations to
paywalls & payments). I'd hardly call this medium - its a distributed blogging
platform.

~~~
samschooler
I guess they might be thinking of the syndication. Medium allows anyone to
post, and suggests articles from different authors. This is similar. It
enables blogs (if they use activity pub) to be syndicated throughout the
blogosphere.

