
Show HN: WriteFreely – minimalist, federated blogging platform - thebaer
https://writefreely.org
======
thebaer
To explain a little more behind this project: this started out as a simple,
privacy-focused blogging platform called Write.as.

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.

~~~
ryacko
It looks like the fediverse is very close to becoming an interactive usenet.

All that’s needed next is feed aggregators as a subscription service, then
content creators won’t have to worry about bandwidth costs.

~~~
velcrovan
Just have to say. I've been writing and publishing on the web for more than 20
years now. I've had a couple of high-traffic posts, been slashdotted (once),
and was once featured in a blog post on The Atlantic. I had a podcast for four
years with a moderate number of subscribers. All of this was self-hosted. I
have NEVER had to worry about bandwidth costs. The bandwidth included with the
hosting/VPS plans I've used over the years has always been more than
sufficient.

~~~
TrevorJ
This makes me think that bandwidth 'insurance' plans should be a thing. Pay a
nominal cost each month to ensure that if something on your site becomes a
massive viral hit you get a few weeks of bandwidth cost defrayment to weather
the storm and allow you to find a longer term solution if needed.

~~~
TylerE
Bandwidth is SO cheap though. Even bulk "overage" usually runs about $1/100GB.
That's nothing.

When servers got slashdotted it was almost, even way back then, running out of
CPU/Database connections, not bandwidth.

~~~
voltagex_
It's cheap unless:

a) you're a hobbyist/minor (effective budget of $0)

b) you're on cloud hosting and go over without a budget set

~~~
TylerE
Define A.

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.

~~~
voltagex_
I guess I'm more familiar with AWS but I thought the free tier was only for
the first 12 months.

------
arendtio
Sounds nice, but from a technical point of view... Why does it require a MySQL
server?

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
:-)

~~~
thebaer
Thanks :) You're exactly right, which is why it'll support SQLite by v1.0.
Again this came out of our hosted platform, so there's still plenty to do to
make it easy for self-hosting. But the goal is an entirely self-contained
binary -- upload it, run, and you're online.

~~~
zmix
Why SQL at all? Are there so many relations in the database, that a relational
model is a need? Since it has a "social" component, it may be, but I just
wanted to place a quick question, without analyzing the project.

Thank you.

~~~
h1d
What other data storage do you suggest in place?

~~~
zmix
Since I do not know the data he stores, and in which way (model), I can not
comment on this. This is why I asked.

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.

------
salvar
Have you done any research into how likely it is that a visitor from your
demographic understands what "federated" means in this context? I ask because
it's part of the tagline, so if you don't understand a key word in the product
description you're probably less likely to show interest in it.

~~~
maybeiambatman
What DOES "federated" mean in this context?

~~~
jdormit
In this context, it means that content from this service is shared with other
servers. This is different from decentralized - in a decentralized network,
every client communicates directly with other clients, whereas in a federated
network, clients communicate with central servers but the servers can
interoperate . Email is a good example of a federated network - mail clients
communicate with centralized mail servers, but mail servers can send messages
to other mail servers. To extend that analogy, when you write an article on
Write.as your browser sends that data to the Write.as server, but the server
federates that data to various other servers - Mastodon instances, Pleroma
instances, etc. This is what enables Mastodon et. al users to like, follow,
and share content posted to Write.as.

~~~
huangc10
Thanks for the explanation :) This comment should be higher up for people to
read...

------
rhn_mk1
I like this idea, and I'm eagerly waiting for this to catch on. Following up
from this, I have 2 questions that keep me from entering the ecosystem:

\- 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.

~~~
fweespeech
> \- 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](https://whalebird.org/en/desktop/contents)

[https://thedesk.top/en/](https://thedesk.top/en/)

> \- 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".

------
porkloin
Very cool to see more action in the ActivityPub space – one of the nice
aspects of the federated model is that more users of the protocol have a
function of accumulative user bases, not directly competing with one another.

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!

------
SamWhited
Here's an arch package, let me know (on the AUR, not here) if you notice
anything wrong:
[https://aur.archlinux.org/packages/writefreely/](https://aur.archlinux.org/packages/writefreely/)

~~~
thebaer
Awesome! Thank you!

------
innocentoldguy
I like that there aren't any "likes" or "claps" in WriteFreely. These always
feel like argumentum ad populum mechanisms, designed to give a false sense of
legitimacy to the content.

~~~
tomcam
Great point. I upvoted your post to give it more legitimacy…

------
jerrre
What does federated mean is this context?

(from a non-native English speaker)

~~~
StavrosK
It means your blog can communicate with other software that supports
ActivityPub, so you aren't locked in to one community. For example, I can
follow your blog from my Mastodon (a Twitter-like project) as if it were a
Mastodon account.

~~~
jerrre
Ah, thanks! So it's not non-nativeness at fault :) Just that I'm some-one with
out the knowledge you assumed.

------
reitanqild
Super awesome! I love the combo of actual open source + option of paid hosting
(so those who wants can sponsor development AND avoid the hassle of running
their own instance.)

(AGPL still scares me, but for a anything that doesn't need API access it
should be OK I guess?)

------
bovermyer
I've been looking for something to fill the void left by WordPress and Ghost
in the self-hosted blog engine space.

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.

~~~
e12e
In what sense did wp and ghost leave a hole? They became unfashionable?

~~~
bovermyer
In my case, WordPress and Ghost left my toolbox for two separate reasons. Note
that these reasons are my own, and should not be taken as a wider denunciation
of these products.

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.

------
amelius
I think the main problem to be solved for your audience is "discoverability".

How (well) does this project solve it?

~~~
thebaer
Today I solve this on Write.as with a site called Read Write.as [0], which has
a modest, but regular group of readers -- that's my model.

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.

[0] [https://read.write.as](https://read.write.as)

[1] [https://read.as](https://read.as)

------
andrew_
Write.as looks like a great platform. Just started exploring it. Would be
great if there was a free plan for open source organizations and authors, so
we could make use of the Snap.as service as well. That'd be enough to get me
off of Medium.

~~~
thebaer
We do have discounts for open source projects [0], but send me an email (hello
at write.as) -- I'd be happy to talk about a bigger discount for what you're
doing.

[0] [https://write.as/pricing/opensource](https://write.as/pricing/opensource)

------
alliecat
This is probably exactly what I've been looking for as a blogging platform.

Definitely giving this a go.

------
Tepix
The markup is documented at
[https://guides.write.as/writing/](https://guides.write.as/writing/)

That page was a bit hard to find.

~~~
stevekemp
At first glance that just looks like markdown ..?

~~~
wild_preference
Look again. For example, it has a #tag feature.

------
localhost
I've been on the lookout for a lightweight blog engine for a while. This looks
really nice!

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.

~~~
dangom
For folks who don't know how to embed images into blog posts, how do you do
that?!

~~~
thebaer
We'll eventually build in image uploads, but for now, you need to upload them
somewhere and then use a little Markdown to insert the image:

    
    
        ![the earth](https://i.snap.as/6NFG7Tj.jpg)
    

Here's a guide: [https://guides.write.as/writing/#adding-images-to-
posts](https://guides.write.as/writing/#adding-images-to-posts)

------
skiman10
I just realized that you are the creator of the extension "Make Medium
Readable Again" and would like to thank you so much for doing just that!

~~~
thebaer
Hah, indeed. Happy to help make the web better in many ways :)

------
koehn
I set up a [docker image for
writefreely]([https://gitlab.koehn.com/docker/writefreely](https://gitlab.koehn.com/docker/writefreely))
and I love the clean and minimal-yet-everything-I-want UI. Any chance you'll
open source snap.as so I can self-host my images?

~~~
thebaer
Nice!

I'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).

------
fmoralesc
This is really neat! Will it be possible to use mastodon clients to post to
the blog? That would be really awesome.

~~~
thebaer
Possibly! If someone wants to implement the Client-to-Server side of
ActivityPub I'll be happy to merge it in. But I'd personally like to build
support for protocols like Micropub [0] into the backend and our first-party
clients [1], as I think that's more suited for regular blogging.

[0] [https://indieweb.org/Micropub](https://indieweb.org/Micropub) [1]
[https://write.as/apps](https://write.as/apps)

~~~
fmoralesc
Sounds good. Thanks for the links!

------
XorNot
So is there somewhere I can see what exactly I'd be buying? $1 a month is well
within my "definitely worth convenience" margin for migrating my static blog
off Github pages, but I can't tell what I'd actually be buying / what the
final product would look like?

~~~
thebaer
That lowest plan lets you connect a custom domain and publish to Read.Write.as
-- there isn't much more to it that isn't already included in the free plan.

If you want to try out everything on Pro, though, let me know your username
[0] and I'll get you on a trial.

[0] [https://write.as/contact](https://write.as/contact)

------
alan_wade
This looks awesome!

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.

~~~
strunz
Check out Wagtail, Mezzanine, and Pico.

~~~
alan_wade
I'm looking specifically for ActivityPub examples.

~~~
ahreflink
I was looking through the other ActivityPub examples OP mentioned and
funkwhale seems to be written in Python
([https://code.eliotberriot.com/funkwhale/funkwhale](https://code.eliotberriot.com/funkwhale/funkwhale))

Edit: I recommend going through
[https://github.com/topics/activitypub](https://github.com/topics/activitypub),
have quite a few written in Python.

------
skybrian
ActivityPub is nice, but I would also like to see support for RSS and/or Atom.
Is that coming?

More generally, linking to a feature list might be useful. I can read the
source, but not everyone can.

~~~
jboynyc
Syndication is already there; this example from the demo instance might not
survive for long, but it works right now:
[https://pencil.writefree.ly/foo/feed/](https://pencil.writefree.ly/foo/feed/)

------
dteiml
Is there an easy way to write Latex (e.g. with MathJax or Katex)? That is for
me the most wanted feature of Medium (my intuition is they won't be adding it
any time soon).

~~~
vanderZwan
If it supports inline HTML (not entirely clear to me), then you could try
using markdeep[0] to render HTML offline, then copy the output to the editor.

EDIT: just tried, does not work without KaTex being loaded

[0] [https://casual-effects.com/markdeep/](https://casual-
effects.com/markdeep/)

------
dreamdu5t
Do you support microformats? I much prefer static content to ActivityPub, and
honestly a lot of AP sites are less accessible than ones with RSS or micro
formats.

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.

~~~
thebaer
Yep, it supports microformats and RSS -- and I'd like to integrate more
IndieWeb stuff, like Micropub.

You can also configure the server to not federate your posts if you prefer.

------
TekMol
This totally confuses me.

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.

~~~
rajekas
It's not $10 bucks a month but $1 or $6. I am a paying customer myself and
very happy with the service.

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.

~~~
fouc
[https://writefreely.org/hosting](https://writefreely.org/hosting) shows
$10/mo and up. I guess the OP would have to find the write.as site instead.

~~~
rajekas
You're right - I interpreted the OP as wanting a single blog. The $10 a month
or more is for hosting 250 blogs or more. I would say that's a pretty good
deal.

