Show HN: WriteFreely – minimalist, federated blogging platform
writefreely.org
writefreely.org
We've been running a Mastodon instance for a while and keeping up with the fediverse, so over the summer as it got much easier to implement, we added support for ActivityPub (the protocol behind Mastodon, PixelFed, Funkwhale, etc.) The fediverse has a strong FOSS culture, so after releasing AP support, I got to work on opening up the source for Write.as, and this is that final result.
Write.as has existed for 4 years, so the application code is very stable. But right now I'm getting the code to a place that works great in any configuration, installs easily, etc.
Seriously impressive work by the way, and I'm really happy to see such a well-developed project use Go+ActivityPub.
It's kind of like a single-owner LLC. The structure limits the liability by detaching responsibility from the owner and attaching it to the corporation, even though the corporation is in reality just the one person. It's a very abstract concept that just implies a product can be separate from the individual who created it.
As for the code, yep I built everything myself (and wrote about it here [0]). But I've also had the help of people translating the app, giving feedback, and making suggestions along the way. Listening to people and filtering ideas through my own vision has really made the product what it is today.
Thanks, though! I'm just excited to keep pushing the AP ecosystem forward and making the platforms on it more usable.
All that’s needed next is feed aggregators as a subscription service, then content creators won’t have to worry about bandwidth costs.
Not very “next YouTube” in nature.
When servers got slashdotted it was almost, even way back then, running out of CPU/Database connections, not bandwidth.
a) you're a hobbyist/minor (effective budget of $0)
b) you're on cloud hosting and go over without a budget set
A $5/mo digital ocean instance comes with 1TB of transfer. That's a lot unless you're doing something like self-hosting video.
Heroku free tier includes up to 2TB/month.
Even the free tier of AWS comes with 15GB/month.
That being said, I do pay for a monthly plan, because relying on free handouts for anything that matters is never a reasonable approach.
Simply being sensible about what kind of files you're asking people to download solves 99.9% of this problem and makes your site more enjoyable (faster) for users (especially mobile ones).
Like I said above, I did all the stuff I did with nothing more than $5/$10 month cloud hosting plans. Almost no one is going to hit any kind of bandwidth limits these days unless they are trying to run SaaS or just pirating full BluRays in the dumbest ways possible. But we're not talking about those people, we're talking about hobbyist content creators.
But all that aside, this product exists already, it's called a CDN.
Well obviously you aren't using the right JS framework then. Modern technology will fix this problem for you. Especially if your pages are loading too fast.
And what are you missing on the current aggregator features? do you have in mind anything more then the normal action of following other users?
[1] https://www.w3.org/TR/activitypub/#shared-inbox-delivery
Will PRs for WriteFreely generally make it into Write.as?
Really glad you're liking it though :)
There are certain features that I've been looking for: mathjax/latex, data visualization (though, this could be using pre-generated images), jupyter notebook compatibility, image facilities...
I know that goes beyond the slick simplicity you've got here, but for the work I do, I want to be able to speak in more than one way.
Is there an opportunity for contributing these features?
OT, but how did "Mastodon" turn out to be the best name anybody could come up with?
I didn't know they did that. That is decidedly not-metal.
It's a simple rating by the posting user (e.g. 7 out of 10, you could even just post it with the text like so: [7/10] But that's a little confusing.)
The one other question: If I had this rating, could I sort all posts from the last year by rating? Or is the efficient look-up of posts tied to time and it's hard to scan for ratings through a year worth of posts?
I mean, yes, in general, MySQL has a higher performance than let's say SQLite, but for most users, a properly handled SQLite file should deliver enough performance and the setup would be a lot easier and the overhead for small blogs would be much less.
But hey, it is still a young project and the general concept is looking great :-)
It's a shame it's MySQL (I'm in the Postgres camp these days) but MariaDB isn't awful and for such a tiny project it doesn't matter.
Right now, the common solution is to have some query-builder library which is able to build up a SQL string for a given database based on higher level descriptions of what you want. See ActiveRecord, SQLAlchemy, etc.
This lets the query-builder library hide differences between different sql languages as part of its internals.
These query-builder libraries typically come as part of an ORM, which means you define your data as an object in your language (e.g. a ruby class).
From what it looks like, avro would only be useful for replacing the definition of an object (the programming language class), but that's not a sticking point right now, and defining classes in your chosen language is easier than pulling in a different schema language... and replacing that portion still doesn't help with the true problem, which is that a SQL string for MySQL may not work on sqlite.
I don't see how avro could help in regards to the different wire format different SQL databases have, nor could it help build queries as far as I can tell (e.g. knowing that 'ON DUPLICATE KEY ...' in mysql is kinda like 'ON CONFLICT ...' in sqlite). Even if it could store these differences, the query-builder library already stores them quite efficiently in their language, and such libraries exist for almost every language.
I do not see how Avro helps anything in this area. If you could describe in more specific detail where you think Avro might be relevant, I'd be happy to consider it from that angle. Your comment above is a bunch of words which talk about avro, but not about how it might apply to this specific problem. (Also, paragraph breaks help readability)
I just looked through the other repositories and found the vim script [1] which kinda fits my personal workflow :-D
I really like what you are building.
Thank you.
If I'd be to do something similar (actually, I do) I'd use an XML (document) backend, like eXist or BaseX along with XSLT, XQuery and REST.
Instead, multiple servers run by different parties share data with each other. End users can use the system without running their own server.
- I don't want to host complicated platforms, all I need is a statically generated blog. ActivityPub could be the way to let people comment on my posts without forfeiting the staticness. Is there any static blog system that integrates with ActivityPub?
- Are there any native desktop clients supporting ActivityPub (micro)blogging? I've set up a Mastodon account, and the only way I interact with it is posting via a command-line tool. It's write-only for me because I can't be hassled to use the browser, and it would be nice to change that.
https://whalebird.org/en/desktop/contents
> - I don't want to host complicated platforms, all I need is a statically generated blog. ActivityPub could be the way to let people comment on my posts without forfeiting the staticness. Is there any static blog system that integrates with ActivityPub?
I'm 90% sure this doesn't exist right now in a usable form, closest is just something to ping Mastodon when you run your upload.
If you link a comment system in the way you suggest, someone would need to host it for you a la Disqus which is where you'd likely come full circle to "hosted blog platform".
https://fed.brid.gy/ and https://webmention.io/ can be duct taped together to provide roughly this. I use webmention.io and brid.gy on my blog with Twitter and (until Cambridge Analytica) Facebook comments, but haven't got around to using the federated aspects of bridgy yet.
So in the future when Plume (a W3C sponsored ActivityPub blogging platform) eventually launches, there's no reason for WriteFreely and/or Plume readers to really worry about which platform a given author uses!
(from a non-native English speaker)
I have heard it used to mean there is no one central server but a lot of people put their servers together. I don't understand it in this blogging context because you can always put up your own blog on your server.
How is running your blog or blogging platform on your own server different from other blogs or platforms?
It directly speaks to Mastodon and other Fediverse software.
A non-federated system would be a “walled garden” like Facebook or Twitter.
(AGPL still scares me, but for a anything that doesn't need API access it should be OK I guess?)
This feels like it could do the job. I'll look at it a little closer and see if it has good answers to my remaining questions.
WordPress went away because I got tired of all the little fixes and tweaks I had to make to get it to be "just right." Even then, the way the code is structured leaves a bad taste in my mouth.
Ghost went away because I just don't like Node.js, and because some of the promised features still haven't materialized.
How (well) does this project solve it?
So for the WriteFreely project, I'm also building a federated reader app [1] that'll connect to your blog(s), interoperate with other ActivityPub platforms, and be a similar destination for people looking to read, rather than write. You could imagine people hosting the two platforms together to create mini-Mediums across the web, which also communicate with each other.
Otherwise, as things are today, enabling people to follow your blog from the fediverse means they can read your posts right in their social media streams and share them with their followers by clicking one button.
[1] https://read.as
Definitely giving this a go.
That page was a bit hard to find.
Some suggestions for you:
- You might want to include a direct link to your sample editing experience from the page linked to above. I found it on your Github.
- I think it's really important to support "import image from clipboard" - much like what Twitter does, for example. This is huge for usability, especially for folks who don't want to / don't understand how to embed images into blog posts.
Otherwise let me know if I can help with anything as you get set up.

Here's a guide: https://guides.write.as/writing/#adding-images-to-postsI'm going to follow a similar path for Snap.as and the rest: getting the product right as a hosted platform (only worrying about a single configuration, not doing additional project management, moving faster, etc.), and then go open source when it's essentially "finished," like Write.as is.
Especially while the company is still working toward sustainability, I think this is the best way to keep our focus on building a great product, ensure we continue growing, and build for our primary users (non-techy folks).
If you want to try out everything on Pro, though, let me know your username [0] and I'll get you on a trial.
Does anybody know if there's something similar written in node or python? I'd love to build a similar project, but I'm confused by ActivityPub, and having some source code I can understand as an example would be really helpful.
No seriously, spend an evening on doing the tour [1] and you won't regret it (all you need is a browser). Actually, the syntax is kinda clean and easy to read. Python might look cleaner at first glance, but it has a lot more tricks you need to learn to understand someone else's code.
Writing Go on the other side is more complicated as you have to learn how to design interfaces properly and there are a lot of common mistakes everybody does in the beginning.
Edit: I recommend going through https://github.com/topics/activitypub, have quite a few written in Python.
More generally, linking to a feature list might be useful. I can read the source, but not everyone can.
EDIT: just tried, does not work without KaTex being loaded
The indie web approach to blogging (h-feed, webmentions, etc.) seems so much better than ActivityPub because it’s static content, web friendly, control of user identity, etc.
You can also configure the server to not federate your posts if you prefer.
So I am supposed to either sign up for $10 per month or trust somebody from the internet and run their executable on my machine?
Is there anybody here on HN that sees this as viable ways to get into blogging?
We totally need more and better ways to communicate online. But I just cannot see how this has any chance to take off.
If you want to "start blogging", you probably don't want to get a full instance, but more a blog on theirs: https://write.as/pricing
https://writefreely.org/hosting
Now I see that the prices you mention are linked on the bottom of that page.
As mentioned, it's an open source project.
It’s open source. You can read the source code and compile it yourself.
They are generous enough to say that if you don't want to pay them money or have a different idea of what a blog should be, then take their software and make it into whatever you want it to be after inspecting their code.
Don't like that either? You can always come to HN and impugn their motives. Never let a good deed go unpunished.