All right, I think it's going to be in our interest to kick off nice and sharp.
So, welcome for, possibly the third time, to those of you that have been in the room for
over an hour, to the social web devrim. It's Fossdom. Fossdom, 25th anniversary. It's
first social web devrim. Exciting to be here. We had so many folks submitting content.
It was a really difficult choice to arrange a really great track for everybody.
And we're really excited about the speakers we've got this afternoon.
We've also got a third of a feather session tomorrow afternoon.
I believe it's tomorrow afternoon. And then a social web, after hours tomorrow evening at
the Russell's Hack Space, that you're welcome to join us as well.
Which, of course, you'll hear me talking even more. Anyway, I'm excited to hear from Matt
from White Freely. I'll leave it to you, Matt.
Come Sandy. This is on, right? Yep.
And thank you guys for having me, excited to present this.
So, yeah, I'm Matt Bear, the lead developer.
Pretty much the only developer of Right Freely, which is a self-hostable,
federated blogging platform. So, today, I'm going to tell you a little bit about
the software, the project, and how you can use it to publish your writing,
whether you're doing a personal blog, and poetry, kind of really anything you want to write,
and how you can get that out to the Fediverse and the web in many different forms.
Then I'm going to talk about the kind of particular ways that we implemented activity pub,
because this is kind of more simplified and meant to be, especially for writing.
So, we've taken certain parts and chosen to deal with other social interactions in interesting ways.
So, I hope, ultimately, you'll kind of take away some new ideas, bring them into your own projects,
for getting software onto this social web.
So, just a quick overview. Right Freely is, like I said, the kind of this minimalist distraction-free blogging platform.
It's especially for writing. Let's focus on multimedia, even though it is capable of it.
It's license of the HEPL and written and go, which makes it easy to install and distribute,
because it's just a single static binary. So, as long as you're not on, like shared hosting,
you can upload this to a cheap VPS or something and get a nice little blog up and running.
Needs very limited resources. We're great on Raspberry Pi, stuff like that.
And again, keeping in line with this simplicity, it's built around plain text. It does formatting with Markdown.
There are ways you can kind of make that easier if you're not familiar with it. You obviously don't have to use it.
But that makes it easy to do these other things. I can make it available in all these forms.
So, obviously, on the web or RSS, you can send up poses, emails, of course, activity pub,
and even go for, if you want to use that.
So, yeah, there you go. All right.
I want a couple of people who will be using that. That's great.
And then on the back end, you can save everything in SQLite, which is easy or connected to my SQL database.
So, it can be configured as a single user blog. So, if you're just writing for yourself,
and you can start this up and kind of get this. This is an example of one, obviously, where it's just kind of a simple place to post your writing.
You can also publish, as it configure it for our multiple users.
So, if you want to create a community of writers, make a space for your friends.
Here's the Linux kernel team who use it at people.com.org.
So, you know, posting like more technical topics, it's great for that as well.
And you'll see some of the ways that you can configure it to make it work, and all these, depending on what you're trying to accomplish with it.
So, just to kind of show you how easy it is to get set up.
These are the full set up instructions from brightfreely.org.
You download the binary for whatever platform you're on, and run these three commands.
The first one is just a quick interactive configuration process.
Just basic stuff. It just kind of generates the config.ini file.
You can also do this program.
This is just meant to be as simple as possible.
And then the last one just runs it.
So, this is what a default site would look like when you're running it for multiple users and you have open registration.
This can all be customized, depending on what you're trying to do.
You can see as any type in your username, it'll show you what your Fediver's handle is, things like that.
And in this case, again, since it's configured for multiple users, you get this right reader view, which is like a local timeline.
I'm asked it on, things like that.
And then, again, here's kind of the editor.
So, it's very simple.
Point text, as I mentioned, but it does have other options for example, a rich text editor, which will give you, you know,
a toolbar kind of shows the formatting what it looks like.
Behind the scenes, it's still storing it as marked down, but you can switch between the two, depending on what your users prefer or what you prefer.
You can actually allow users to, this is mostly for multiple user instances, but you can allow users to have multiple blogs on their account.
So, for example, if you want a more personal one, if you want one for, you know, more technical deep dives, you can create multiple blogs and easily move posts between them.
Each one is its own unique identity and site.
I use like 30 on one of my head counts for just all kinds of stuff.
So, it's really flexible.
You can also choose to send out posts as notes instead of articles.
So, we've actually been talking about this.
Of course, rightfully, it was one of the original platforms to send out articles.
Of course, that's had limited support over the years.
I'll talk more about this later, but so there are all kinds of workarounds, for example, sending out notes instead, just to make sure that content shows up on other platforms.
Here we offer the option, but by default, it's an article, and hopefully we will see more support for that.
So, of course, you can configure email provider right now.
It's Mailgun.
We're about to merge support for generic SMTP, so you can use whatever provider you want.
You can configure your signups, what you might be used to open.
We do get a lot of bots when you leave your instance open.
You know, so I'd recommend kind of watching that.
If you do that, you can do invite only our closed, and you can also configure OAuth providers.
Like Slack, GitLab, GitT, or generic provider.
You can even set up MasterDone to do this, and we've actually seen people do this a lot where you already have a MasterDone community.
If you're an instance admin, and then you can give them a long-form space to write that's also federated with write-freely.
And then, as long as they're in that MasterDone community, they could easily start a blog up here, and you don't have to worry about the bots.
You can also configure it to be completely private, so what that would do is, for example, I use this with some of the developers I work with.
So if we want to kind of post a deep dive into things, we have our own separate right-freely instance where you can log in and post about it.
That's only available to us, anyone who can log in.
So here's how it works in the Fediverse.
As I said, each blog, whether it's, whether you have multiple blogs under your user or just a single one,
shows up like any other actor, and for example, here's what it looks like on MasterDone.
People can follow, do everything that you would expect to do with any other activity pub account.
And then, of course, once you're following, all those posts will show up in your feed right along with everyone else you are subscribed to.
This is what a post might look like right now. Again, this is being sent out as an article.
So the way MasterDone works right now is you see the title and you see the URL to the post.
Again, hopefully in the future, this can either look different.
Maybe we have fallbacks to kind of show an excerpt.
You know, we're working together with other platforms to kind of see what we can do with that.
Here's what that same post looks like on right freely on the web.
You can see a few things here. I've mentioned a MasterDone account.
That's mine, right in exchange.
And that actually sent me a notification on MasterDone.
So you can do this with any activity pub actor.
Right freely also uses hashtags for organizing posts or categories.
But those hashtags also get propagated out to the Fediverse.
So when you search for a post, it will show up like this.
You can even see the introduction hashtag there.
Yeah. Let's get back.
So yeah, they'll show up when you search.
If you've hashtagged your posts, we also send along any images.
If you've included those, right freely doesn't do hosting of it right now.
But if it lives on the web, you can include it with Markdown.
You can mention people as I mentioned.
Readers can interact with your posts as they would anywhere else.
So originally, it helps us to have a little history because this all kind of started as just a very simple platform to just get your words out there.
It's almost like just if you want to shout into the void, here you go.
So once we added activity pub support, we've kind of been slow about what or more precise about what features we're trying to add in.
So it took a little bit, but we added supports for likes, so you can actually see the number of likes in there.
But you can't see the number of boosts.
So if you're not, if you're just worried about writing and I'm worried about the metrics, then this will keep you focused on that.
So yeah, as I mentioned in 2018, we joined the Fediverse.
But it started as this project right as in 2015.
It was that focus on just write something, get it out there, and that served as the foundation for what you see today in the right-freely software.
So this was close source of the time, and it's now our flagship instance of right-freely, basically.
So I mentioned 2018, we implemented activity pub and open source software as right-freely.
And back then, it was a little painful.
We had to, of course, dig through the spec, kind of figure out things, more importantly, figure out how to talk to the mass that on in the room,
and because that is what most people were using.
And, you know, especially if you've been written and go, statically type language, you have to worry about all the properties can be any type.
But luckily at the time, there was this GoFed library written by a great developer who kind of made it, I believe, procedurally generated this library.
So it has a call for every single property for every single type.
And we are still using this old 2018 version because it works, and, but today there are, there are many more options.
And, you know, I would love to move to something like that in the future, especially to make it a little more resilient and interoperable.
There's also this helpful blog post back then that talked about interacting with mass that on, and I kind of kicked everything off those from you again in 2018.
So we got things working and talking, but it wasn't quite that simple, especially once we put it into this platform with a bunch of users already.
Today, these are current figures over 500,000 users, 5 million posts.
But at the time, obviously, it was smaller, and still even then, especially with a blog that had a lot of followers, they have managed to take down the entire platform.
And it, before, with interacting with the Fediverse.
So what we had to do was, I'm basically, and this is not something that most users would face, but on our particular instance, we had to do things like adding caching on certain endpoints that were particularly heavy for on the database.
So I just added, like, Barnish in front of it on these, and that really helped, especially when, you know, you've sent out a post and someone boosted it from the Fediverse, then you get all these different servers, all details in here, your own server.
So this helped a lot.
Of course, there's the standard issue, you know, problem of, different times of different servers, some are slower than others.
You know, they come and they go.
Ultimately, a long-term solution, which is not there yet, would be to have some kind of queue and retry mechanism in all this.
But for now, it's kind of, we're just doing longer timeouts, parallel requests, and that helps pretty much get everything where it needs to go.
I haven't heard too many complaints so far.
And then, of course, interoperability.
And this is less so technical, more social, stalking the other developers and the Fediverse about what exactly we need to do to make them talk to each other.
There might be slight differences, again, with that.
Something's a string here, something is an object there.
We need to figure out how what each one expects to do.
And it's kind of been, instead of just being able to do it all, as the spec might say, we have kind of just really kind of played lack of mold.
And I believe we're compatible with most popular software out there right now.
So, what's next for rightfully?
The biggest one is full two-way communication with the Fediverse.
Like I said, this all kind of started off as just publishing out there pretty much one way, gradually adding these more social layers.
And this is something that not everyone wants, but a lot of people, more people certainly have been asking for.
And so, we want to build it in.
I have built, privately, the capability to receive replies in there, especially when we got likes.
But moderation safety is obviously the huge component here.
So, I don't want to unleash this on everyone without having some kind of control to deal with bad actors, spam, abuse, all of this.
So, that is something that, especially talking to some people about just to try and figure out,
at least what the basic layer that you need to kind of prevent the base amount of abuse, because every platform handles it differently.
And, you know, here obviously people aren't just replying in kind of an offemoral message, but it's a long-lived, long-form article.
So, their comments are living on your blog.
But once that is in place, I hope to allow not only kind of the normal blog short-form comments, but also long-form comments through articles.
And that will probably rely on a lot of coordination among platforms to, you know, be able to do that.
But I think it will be interesting to actually allow you to post on your own blog that's reply and connect it in the Fediverse to other posts, even if it's a short-form post.
I think that's kind of one of the interesting things that we can do with the Fediverse.
And, yes, that comes back to again, better as long-form articles support.
So, actually when, after implementing activity pub and right-freely, I started a little project called ReadAs and took a stab at article support from a reader perspective,
and wanted to do RSS and all of that, eventually I decided to leave that to the professionals.
And years later, the professionals are taking over with great teams from Lake Ghost and Flipboard, who are really working on nice support for long-form content in the Fediverse.
Of course, we would mention Darius's fork of Macedon hometown, which has had article support for a very long time, right in your Macedon feed.
So, you should definitely check that out.
And then again, hoping for more support from major Fediverse platforms, like Macedon, anyone else, and, you know, to kind of really see what we can do with one form.
Because that could take all kinds of forms.
It could, you know, doesn't make sense to have it in a feed where you're kind of scrolling through.
It doesn't make sense to pop out, you know, this will be up to kind of all the platforms to decide how they want display and further users.
And beyond that, just slow steady improvements.
So, actually, I believe tomorrow will have been ten years since I started right as.
And it's kind of remained the same in a lot of ways.
And it's just been slowly adding on, you know, from starting as that simple editor to eventually gaining all these social features.
And that's really what I'm trying to do with this project is to make it a reliable place where you can always go to.
It doesn't change on you in any bad ways.
And you can kind of rely on it to still be there to keep your words online.
Whether you're hosting it yourself or using another provider, something like right as or, you know, your friends instance.
So, as I mentioned, I am the only developer of pretty much full time.
So, if always looking for contributors, if you are interested in the project at all, you can always go to discuss.right.as.
And that's where we do all, talk about all kinds of things, but you can always start the conversation.
And if you want to work on anything in particular, you can go to.rightfreely.org slash contribute to see kind of the different things.
We have, there's documentation code, you know, reviews, anything that you would love to help with.
Be more than happy to have your help.
And we have the roadmap there.rightfreely.org slash tasks.
So, you can kind of see what's next in the pipeline for getting developed.
And, yep, that's right for you.
Thank you.
So, so Evan would like to ask the first question.
Alright.
What?
Yeah.
Matt.
I think when people talk about right as and right through freely, what they are almost always talk about is the really clean design and user experience.
Could you talk a little bit about your approach to user experience and design?
Yeah.
So, actually, this all kind of started when the original idea was a, I'll start with this.
I noticed back then in 2014 that people were using pacepin.com to write little articles and poetry and stuff like this.
And if you've ever been to that site, you would know how it looks like a site from the year 2000.
So, I was like, well, why don't we take that same idea and just apply something that looks nicer.
Like, medium, which was popular at the time, especially.
So, that was kind of the inception for the reading experience.
And then for the writing experience, I just got tired of going someplace.
You log into WordPress, or you log into no shade to WordPress or anything, but you log into most sites and you got to click the red dashboard or whatever.
So, in this case, with right freely, you open it up and you see the editor first.
And so, that's so that nothing's in your way.
So, if you have a thought, you can go straight here and just start typing right away.
And that was kind of everything's built around that basically.
So, then from there, you can do all the management. You can worry about customizing and all that.
But the whole point is just right, get it out there.
Don't fuss with the terminal or anything, just, you know, start writing.
So, that's really what drives everything else.
Great.
Thank you.
Anybody else got questions?
We've got about five minutes or so more of the questions.
We've got Darius's first hand I saw, and then I'll leave it around.
Honestly, I just wanted to say it really is that easy to help.
It's a good idea.
Just great job.
That's all I want to say.
It's not, it's not, not it.
I'm coming over there in a second.
This one first.
I want to ask, like, which part was the most painful,
of implementing off activity per when you were starting?
Yeah.
I would say, well, really it was the whole following flow.
And because it's not just, you got to send the follow.
Take the accept.
And yeah, the post being sent out was pretty easy.
Kind of just, again, really just mess around.
And I finally got it out there.
But the exchange of following and all that was really probably the toughest part.
And signing, yes, at that time there wasn't so much required around it.
But yeah, then once authorized fetch got in there and everything.
Then it became, yeah, there's more to deal with.
Yeah, short question concerning sector types.
Do you support only person or, for example,
also organization or something like that as an actor?
Sorry, organization as an actor.
When you're creating an activity proposed,
of course you can send us different things that you could send us to organization.
Oh, yes.
What ever stuff?
Yeah.
So they're just individual, I forgot the exact person right now.
But yeah, so actually something that I've tested out and haven't carried over to,
right, freely yet, is kind of multiple user blogs.
And so that would probably be like an organization or something like that.
That's, again, not in right, freely yet.
It's used by like one user on, on right us and kind of testing it out before we bring it out to everyone.
So.
Timor at the front and then, okay.
Thank you very much.
I use also what freely.
It's very text oriented with images a little bit tricky.
Is there any plans to.
Yes.
Yeah.
Yeah, it both for images and kind of static files.
Of course, with our hosted stuff, it's already there,
but that it'll all be built into right, freely.
It's just more, especially for multi user instances.
You know, it's like you want to restrict.
Make sure it's, you servers aren't getting overloaded.
And I want to be able to support like content delivery networks and all that stuff.
Yeah.
I think.
Looks great.
If I wanted to ruin this hostess in a Docker container, how to brief look.
While you were talking, I was still listening.
It made me think that they still some work to do there,
or could I just stick it in a Docker container and go.
Yeah, it's a, yeah, it can work, it works in a Docker container.
Yeah.
There's some support.
I'm not fully versed with it, but they're planning people working on it too.
That's already.
Yeah.
Okay, I'm going to exercise and expect it on a Saturday afternoon.
But in the beginning, when you mentioned all of, you highlighted a use case,
a particular one, and then you said, you don't have to worry about the button.
Can you explain it once more again?
Sure.
Yeah.
So, like I said, if you're in mass done admin,
so like I run writing exchange as well.
And if, and it's closed registration,
so it's kind of a smaller community about 1,000 users.
Now, if I want to give them their own space to have like more long form articles.
So, you know, they're posting shorter stuff on mass done,
but they want to write something longer,
and then maybe even share it with their mass done followers.
Then I might set up a right-freely instance.
I would close registrations and then configure it for a lot with mass done,
basically.
So, then only users with a mass done account could log in to right-freely.
So, that's the whole idea of just like kind of limiting who it is,
or providing another way if it's just easier to log in than using an ambassador.
But, but people with a mass done account do you mean people with a writing exchange account?
Yes.
Yes, in that case.
Yeah.
Like we all here for the social web for different words,
can we just all move here and come closer so people on the entrance can enter
because to be inclusive, thank you.
I think, come close that with that.
And then thanks, Matt.
They can.
Thank you.
Thank you very much for being the debut speaker on our new social web track ads.
Fuzz them.