Write Freely

Painless, federated, self-hosted blogging platform.

Today's #bugfix release is a non-critical update for anyone currently running WriteFreely — you can skip it if you haven't been affected by any of the issues below.

You'll want to upgrade to this version if you're running WriteFreely on Windows, as it fixes a server error that prevents a blog's customize page from rendering (#61). With this fix, WF should be stable enough to run on Windows.

You'll also want to upgrade if you weren't able to successfully configure a single-user blog, whether backed by MySQL or SQLite, due to a database error (#59).

Fixes

  • Fix blog customize page not rendering on Windows (#61)
  • Initialize database during config step for single-user instance (#59)

Upgrading from v0.7.0

Download the latest release for your operating system. Stop running your writefreely service, replace all files in your installation with the ones in the archive, and then start your writefreely service again.

No additional steps are needed to upgrade from v0.7.0. Follow the instructions in each previous #release if you're upgrading from an earlier version.

#WriteFreely

Happy New Year! We took some time over the holiday season to relax a bit, slow down, and pause the weekly updates. But our first release of 2019 is here, featuring plenty of bug fixes (especially for SQLite users) and more admin tools as we prepare for our v1.0 launch.

Speaking of which — if you run your own instance, we're looking for your feedback on what features should make it into v1.0! We want to make sure we include everything you need to run your personal blog or writing community, so let us know over on the forums. Now for the updates:

Features

User Management

  • Admin user creation. Admins can now create a normal user from the command-line with: writefreely --create-user username:password
  • Users List (T553). Get an overview of all the users in your community with the new user list for admins. This is the foundation for future moderation features.

Changes

  • Use an en dash in the title of posts that are written in German, instead of em dash (#1)
  • Now you can build writefreely without SQLite support. To include support, compile with the sqlite build tag (this is the default with all make commands)
  • Blog names starting with a number now have an ActivityPub avatar

Fixes

  • Prevent creating users with invalid usernames via command-line (#49)
  • Fix metadata update for draft posts on single-user instances (#50)
  • Fix “Database user or password not set.” error when starting SQLite-backed instances (#54)
  • Fix user creation process hanging on SQLite-backed instances (#53)
  • Fix tagged post query on SQLite-backed instances (#55)
  • Fix ActivityPub follows on SQLite-backed instances (#56)

Upgrading from v0.6.0

Download the latest release for your operating system. Stop running your writefreely service, replace all files in your installation with the ones in the archive, and then start your writefreely service again.

No additional steps are needed to upgrade from v0.6.0. Follow the instructions in each previous #release if you're upgrading from an earlier version.

Developers

Some style changes were made in this version. If you are running a custom build / fork, run make ui to generate the latest stylesheets.

Contributors

Thanks for contributing to this release!

@geekgonecrazy

#WriteFreely

Today we're excited to launch our new service, WriteFreely.host! This is a fully-managed hosting service for anyone who wants to start their own writing community, powered by our software.

Instead of going through the technical work of installing WriteFreely yourself, with this new service we set up and host your site for you — that means we take care of maintenance, backups, and constant upgrades — all for one low monthly cost. To get started, all you need is a domain name.

Once you're up and running, you can choose what your community is about. Write your own about page and privacy policy through the admin control panel; Choose how many lightweight blogs everyone in your community gets; Enable federation to let your writers share their posts to the fediverse; Turn on the Reader to showcase everyone's work in one place.

You can also try out a demo to see what a WriteFreely community looks like!

To get this service off the ground, we're taking 50% off the normal rate for our first several customers. There are only a few spots left, so if you've ever wanted to start your own blogging community, now is a great time to get started!

#WriteFreely

Today's release features two major additions, one to make installation easier, and the other to make discovery easier. Let's jump in.

Features

SQLite support (T529)

You no longer need MySQL / MariaDB to store data for your instance! Just select SQLite during the configuration process to use it instead of the MySQL driver.

Reader / local timeline (T554)

Take a break from writing to see what others on your instance have written! Admins can now turn on the Local timeline option in the Admin panel ([app] local_timeline in config.ini) to enable this for both writers on your instance and the wider public. The local timeline functions just like Read Write.as — it includes an RSS feed, and is opt-in. Writers can start publishing their work on the feed by going into their blog settings and choosing the Public visibility option.

More changes

  • Ability to create admin user from the command-line with: --create-admin username:password (T544)
  • Specify non-default configuration file to use with various commands via new -c [filename] flag
  • Host highlight.js and MathJax locally, instead of on CloudFlare (T551)

Upgrading from v0.5.x

Download the latest release for your operating system. Stop running your writefreely service, replace all files in your installation with the ones in the archive, and then start your writefreely service again.

No additional steps are needed to upgrade from v0.5.x. Follow the instructions in each previous #release if you're upgrading from an earlier version.

Contributors

Thanks to everyone who contributed to this release!

@BenOvermyer @kaiyou

#WriteFreely

This week's release brings more admin control via the web UI and new ways to configure the application. It also finishes up support for syntax highlighting.

Features

  • Configure bind address with new bind configuration value (#38, #5)
  • Syntax highlighting support for all programming languages supported in highlight.js (#39)
  • Modify NodeInfo description with new site_description config value
  • Change admin values via the web admin UI (T541)

Fixes

  • Fix metadata editing in single-user mode (#40)
  • Always show stats on About page if public_stats enabled

Upgrading from v0.4.x

Download the latest release for your operating system. Stop running your writefreely service, replace all files in your installation with the ones in the archive, and then start your writefreely service again.

No additional steps are needed to upgrade from v0.4.x. Follow the instructions in each previous #release if you're upgrading from an earlier version.

Contributors

Thanks for contributing!

@mrvdb

This week's release features a few minor improvements, one of which removes the need for a reverse proxy in front of your WriteFreely installation.

Features

  • Work as a standalone server, with TLS (T537)
  • Code syntax highlighting (#31)

Functional Fixes

  • Fix About page link in Admin dashboard
  • Include About/Privacy page content in page description

Upgrading from v0.3.x

Download the latest release for your operating system. Stop running your writefreely service, replace all files in your installation with the ones in the archive, and then start your writefreely service again.

No additional steps are needed to upgrade from v0.3.x. Follow the instructions in each previous #release if you're upgrading from an earlier version.

Contributors

Thanks to everyone who contributed!

@mrvdb @koehn

Welcome to WriteFreely Release Monday! Yep, this is a thing now — a new major release every Monday. Let's get into this one, which brings a ton of stability improvements and new features like an admin dashboard!

Features

Admin panel

Dashboard

Now you can get a basic overview of your application on the admin dashboard. It shows you the app's resource utilization and provides helpful admin commands.

Currently, the first registered user is always an admin.

Page editing (T533)

Make your instance your own by updating your site's About and Privacy pages — now possible directly from the web. The editor accepts Markdown.

Other Features

  • Add --init-db flag to create schema in app (T530)
  • Add --reset-pass <username> option for resetting passwords (#25, T534)
  • Federate draft when published to a blog (#9, T526)
  • Support setting created date on new posts (T532)

Functional Fixes

  • Fix “view blog” links on customize page in single-user mode (#21)
  • Fix “Scheduled” badge appearing when application and database timezones are different (#23)
  • Prevent fatal errors when no ActivityPub response is returned
  • Change Accept activity ID to use blog's origin (#16)
  • Fix MathJax setting not sticking (#28)
  • Fix wrong collection data loaded in RSS feeds on multi-user instances
  • Fix feed and outbox post order in RSS feeds and ActivityPub outboxes
  • Fix em dashes and some glyphs by upgrading Lora

Others

  • Add -v flag for outputting version

Upgrading from v0.2.x

Download the latest release for your operating system. Stop running your writefreely service, replace all files in your installation with the ones in the archive, and then start your writefreely service again.

Important: you'll want to keep config.ini and the files in your keys directory across all upgrades — don't delete or replace these manually.

You'll need to manually migrate your database for now. To upgrade, connect to your database and run:

CREATE TABLE IF NOT EXISTS `appcontent` (
  `id` varchar(36) NOT NULL,
  `content` mediumtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `updated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Optionally, run these queries to clean up bad data that might've shown up due to previous bugs, now fixed in this version.

-- Erroneous values inserted if you tried to enable MathJax on your blog (fixed in #28)
DELETE FROM `collectionattributes` WHERE collection_id = 0;

Development

This update contains some style changes. Run make ui to regenerate CSS after pulling in the latest changes.

Contributors

Thanks to our contributors!

@TheJF @BenOvermyer

#release

This #bugfix release includes a fix for following via ActivityPub, adds a login link to single-user instances, and fixes the database schema to work more often.

Application Fixes

  • Fix Accept activity IDs (#16)
  • Add login link to single-user blogs (#15)

Installation Fixes

  • Fix more schema issues (#18)

#release

We've just released version 0.2! This includes a ton of basic fixes, especially around installation, and some bigger things like federation with Pleroma.

New Features

  • See how many fediverse followers your blogs have
  • WriteFreely now works with Pleroma

Application Fixes

  • Fix individual post ActivityStreams data fetching, so boosting works (#4)
  • Use WriteFreely avatars in social media image preview, instead of Write.as logo

Installation Fixes

  • Fix template loading on Windows (#2)
  • Fix database errors around default values (#3, #7)
  • Don't unnecessarily connect to DB after configuring multi-user instance
  • Show any errors when server start fails
  • Fix encryption key loading on Windows
  • Move encryption key generation from keys.sh to writefreely --gen-keys

Upgrading from v0.1

Download the latest release for your operating system. Stop running your writefreely service, replace all files in your installation with the ones in the archive, and then start your writefreely service again.

Important: always keep config.ini and the files in your keys directory across all upgrades — don't delete or replace these manually.

Database migrations are manual for now! Fun! To upgrade, connect to your database and run:

ALTER TABLE `remoteusers` DROP `followers`;

#release

It's been several months since we launched ActivityPub support on Write.as and entered the fediverse. That was an exciting month, where we saw a ton of energy around what we're building, as well as plenty of people wishing we were open source.

As we said then, going open source for us wasn't going to be as simple as slapping a free license on our code and then distributing it. We care about doing this right from the start, and creating a self-hosted product people actually want to use. We also wanted to build a self-hosted blogging platform for everyone, including those outside the fediverse.

So we promised it'd be done by the end of the year, but it looks like New Year's is coming early this year. Today we're officially launching v0.1 of WriteFreely, our free, self-hosted version of Write.as.

WriteFreely lets you start your own community of writers, optionally with ActivityPub enabled, so you can join the larger fediverse and spread your writing on the decentralized social web. You'll be able to set up a space for your small gathering of writers, who can all create multiple blogs under one account, save drafts, and even customize their blogs with CSS. You can also use WriteFreely to host your own minimalist blog with the same distraction-free writing experience you love on Write.as.

This is just the beginning, and we're excited to finally get this out to the world. We'll be quickly moving toward version 1.0, but to get started with your own instance today, check out our guide.

#release