Democratizing our Twitter Account

In early 2016 the Swiss Mozilla Community met up to discuss goals and community structure. During a discussion on the state of our Twitter account @MozillaCH I pitched the idea of having a tool to manage content like replies with contributors instead of just people with direct access to the account.

Finding a solution

I then took the task of investigating existing solutions. After not finding anything that really fit my vision of a system to manage tweets going through an editorial flow, I decided to build the tool myself. Hopefully with contributions from others, but given our community size I had no expectations.

I first wanted to automate adding Tweet drafts and then sending them with a Trello board. Just then GitHub released project boards. We already use GitHub for community organization, so managing tweets wasn’t unthinkable.

Moving to GitHub also has the advantage of reducing the barrier of entry for potential tweet writers. All you need is a GitHub account. This expanded the vision of the tool allow contributors to suggest content for the Twitter account.

How it works

The basic idea is that we have a card per planned tweet on a project board. We move that card through multiple stages on that board, until it is in a column for content that should be tweeted. Other columns can be sources for tweets that automatically generate a card when new content is available, like an ICAL feed from REMO or new Twitter mentions. Other columns may be for editorial management, like proof reading.

Every card has an issue attached to it, which has information like the tweet content, when it will be tweeted or what tweet it is a reply to. For the tool to understand the issue, it needs to follow a standardized format. To make interaction with the tool easier, it comments when content is not valid. Comments also serve as reminder for unfinished content that is scheduled to be tweeted soon.

Most of the content sources and management functionality is individually controllable, including if the tool should use them at all.

The tool is Node application that interacts with issues, project board and the twitter account. Configuration is a static JSON structure, or via the environment, since it can also be deployed via a Docker container.

Starting to use it

It took about a year until the tool was ready enough. And then breaking it a few times and fixing it before we finally deployed it for use with our Twitter account. And even after that we’ve found some bugs and fixed some. In short, the tool is still in its infancy.

We use a buffer-like system, where only one tweet is sent out every day for unscheduled content. We may need to tweet more than once a day. For the moment it seems our content gets spread out nicely thanks to this system, instead of compulsive tweets & retweets in the middle of the night.

You can now contribute content for the @MozillaCH Twitter account in the mozillach/tweets repo on GitHub. We have tweet curators that will then help you create a valid tweet and move it through the content queue.

The future

Meanwhile a test is running for the @MozillaReps Twitter account, and hopefully others will follow.

My goal is to finish test coverage for the tool, to improve its reliability. Eventually I want to add a web interface to make management of settings easier. Others have suggested making it possible to post to other services like Facebook or Telegram Channels.

Sadly the documentation is pretty basic currently, there is a README explaining the configuration, but actual functionality is only documented in our CONTRIBUTING.md for the @MozillaCH tweet board.