The best way to support Wikipedia is with your time

The Wikimedia Foundation, the non-profit that hosts and provides other support for Wikipedia and its sibling projects, has been under fire recently for the messaging it uses in the infamous donation banners and the disconnect with how that funding is used. These criticisms are not particularly new, but the tension rose to a new level last month with a "Request for comment" on the English Wikipedia on whether the planned fundraising campaign banners were appropriate.

I didn't end up participating in the RfC because it coincided with a heavy travel period for me and I just didn't have time to read through it all. I also don't find arguing about random parts of the WMF's fundraising strategy to be super useful, I think it's all part of a larger picture on how the WMF allocates resources, and whether those goals and projects are inline with what editors want. (There is also the question of whether editors solely should be deciding what the WMF works on, or whether someone needs to speak up for the silent readers. So like I said, much larger picture.) I used to work at the WMF, and I'd like to think that most of the work I did was valuable and that my compensation was appropriate. A bunch of my former coworkers and friends still work there and I do think that the work they do is also valuable, and they should be compensated appropriately for it.

Anyways, there is one point I want to make, and that's the title of this post: the best way to support Wikipedia is with your time. Yes, if you give $5 or whatever to the Wikimedia Foundation, it's a reasonable investment in humanity's collective future...and there are way worse ways to spend $5. But if you give 30 minutes of your time to Wikipedia by contributing to articles, that's worth significantly more than any cash donation!

You can look through the English Wikipedia's backlog for yourself. There are currently 442,000+ articles tagged as needing more references, 98,000+ that need geographic coordinates, etc. This doesn't even include articles that have fallen out of date and need someone to update them. Over the weekend I was looking up demographics on various U.S. cities and noticed that the majority of articles I looked at were still using 2010 census data instead of the newer 2020 dataset! It was frustrating.

One major criticism of the fundraising banners tends to be that they say your money is going to supporting Wikipedia, when it's actually going to a non-profit that does support Wikipedia[1], in addition to doing some other things.

So if you want to be sure your contribution is going directly to Wikipedia, donate your time. You will see firsthand where your efforts go, and it'll be way more valuable than any financial donation.

P.S. Editing Wikipedia can become addicting; you've been warned.

[1] Critics tend to downplay how much money is actually needed to support Wikipedia on a regular basis. And the WMF has done itself no favors by being less and less transparent over the years on what it's up to!

Current thoughts on Mastodon

The majority of posts on Mastodon right now are about how to get started, discussions about various features or making fun of the dumpster fire that is the birdsite. This is mostly unavoidable as new people sign up, but I've tried to keep using Mastodon as an actual social network by not posting about "meta" things unless necessary. That said, I have enough thoughts though that I should say something, so here it is.

I first wrote about Mastodon in February 2020 in "Twitter's tools help online harassers" (I was probably one of the first people to ever get their Mastodon handle in newsprint!), examining the flaws of Twitter that Mastodon has attempted to fix. I think this framing, "a better Twitter", is a good first introduction but misses the bigger picture.

In 2005, Wikipedia co-founder Jimmy Wales gave a talk in which he outlined 10 areas for us to free.

His final item was "Free the Communities!":


(His slide concludes by promoting Wikicities, later renamed Wikia, later renamed Fandom. Given that communities had to escape Wikia, I'd say that didn't end up freeing them. A topic for another day...)

I've been unable to find a working video of his talk, but the general point is clear: people should be in charge of their communities, not companies. We should dictate the terms of who we include and exclude, what we find acceptable for people to say in our spaces, and most importantly, how we make those decisions. We shouldn't need to report trolls to opaque content moderators who can't make correct decisions because they lack sufficient context; we should just boot them ourselves. It's incredibly empowering to be in communities that have agency to make these decisions for themselves.

(Tangent: this is a good time to plug Mako's 2018 LibrePlanet keynote, "How markets coopted free software’s most powerful weapon", discussing how companies monetized "peer production" features. In this case Twitter is monetizing our posts, thoughts, experiences, commentary, etc., relying on the masses for content and curation.)

Mastodon kind of gets us to running our own communities, though it's far from perfect. I think it's a much better representation of how online communities have historically worked, you have groups of people who are tied together by some common interest (some project, geographic location, etc.) but have open doors so you can easily be in multiple communities at the same time. Shoving everyone into one space... I don't think it really worked out that well.

It will take some time for people to unlearn the bad habits that Twitter continually reinforced. There's some meta discussion happening on how journalists should engage on Mastodon (some instances have already started blocking the new I attribute this friction to switching from using social media to drive up engagement to the established culture on Mastodon to actually engage with people! I think it's entirely doable, in the past I reported on Googleville developments, Elsevier negotations, and a bunch of other things on Mastodon without getting a single complaint.

The hardest part of Mastodon is finding the "right" server (read: community) to join. There's probably a good chance the server doesn't even exist yet! Given that you hit this problem as you try to signup and don't actually know how anything works yet, the UX is baaaaaad. (No, I don't have any proposals to fix this, I just think it's important to acknowledge that this is a significant hurdle to onboard new people.)

Like most other community-based projects, I expect the UX will improve gradually over time through careful refinement and feedback from a large and diverse group of users. Getting through the poor UX now is merely an investment in the future. Many servers have also been struggling on the rapid increase in people signing up and posting, so some performance/scaling improvements are in order hopefully.

Is Mastodon ready for the masses? Probably not yet, but now is a great time to try.

On Twitter

It's very easy to bash on Twitter these days, but I will certainly miss it once it's gone. I have a lot of fun memories associated with conversations I had with people on the site (the time I got "expelled" from Debian) or cool things that I posted there (being featured in the Computer History Museum)! One of my heroes, Dr. Harry Edwards, once tweeted out an editorial I co-wrote. Oh and the time we reported on a Tesla hitting someone riding a Lime Scooter and it briefly went viral as "the most Silicon Valley thing ever". That said, these are all because of the people, not because of any unique feature of the platform.

Techdirt covered how Twitter previously had a very strong free speech stance, especially when it came to protecting users' anonymity. One of the downsides of having small community-run instances is that they have much less legal infrastructure and protection. How many Mastodon server administrators would have simply given in when faced with state demands for private user data? Or been able to assemble a legal team to put up a winning defense?

I sometimes forget how ingrained Twitter is in our current society and infrastructure. I went to look up the Caltrain timetable yesterday and to get service alerts if a train will be more than 5 minutes late you have to check @CaltrainAlerts on Twitter. Or get updates on whether you should evacuate because of a fire, you check Twitter.

Because of its federated nature, I don't think Mastodon can (currently) replace something that's so dependent on real-time updates. And I doubt most organizations/sites that are currently using Twitter can implement their own website or app or whatever to provide instant notifications in a manner that was as usable as Twitter.

Back to Mastodon

I'm very excited to see where Mastodon goes next. More than the software, I have thrived in free communities for years now and hope even more people can experience the liberation that comes from joining one.

I'm putting my money and time where my mouth is by co-adminning a Mastodon server for wiki enthusiasts. We're growing rather slowly (about 1 new account per day), which I hope will help build a real community instead of just importing one from somewhere else. If you need help, contact me by whatever means we normally use, I'm very happy to help.

Announcing Wikis World, a Mastodon server for wiki enthusiasts

Recently announced it was shutting down at the end of the year. It's been a great home for my postings and a bunch of people I follow. My handle was even printed in my college newspaper (normally reporters' Twitter handles were used).

To fill the gap, Taavi and I have launched, a Mastodon server for wiki enthusiasts. Please reach out to one of us for an invite!

You can follow me as

Originally our plan was to self-host Mastodon and recruit a team of volunteers to share sysadmin duties, but we didn't get enough volunteers (pretty understandable!). Nemo suggested using a hosting service like, which is exactly what we ended up doing. Once we had the domain name, it was pretty straightforward to get set up and start customizing.

Our plan is to apply for a "Rapid" grant to cover the cost of the domain name and hosting.

Looking forward I'm expecting another influx of people joining the Fediverse as Elon Musk's acquisition of Twitter continues. Hopefully Wikis World can be a good starting point for all of our friends who are involved in wikis and need a place to start!

A short Scribunto sprint

I recently did a short sprint on Scribunto, the MediaWiki extension that powers templates written in Lua. It's a very stable extension that doesn't see very many changes but given how useful it is to making most wikis work, I thought it could use some love.

Patches written:

Revived patches:

Reviewed patches:

Bug triage and review:

This was definitely fun and has given me some ideas of other improvements that can be made. But I'm most likely going to switch focus to something else that needs some love.

Introducing mwseaql, a crate for MediaWiki SQL query building

I've published a new crate, mwseaql, which provides typed definitions of MediaWiki's SQL tables for use with the sea_query query builder.

It's a pretty simple implementation, there's a small Python script that parses MediaWiki's JSON schema file and outputs Rust structs.

Here's an example of it in use from my new rfa-voting-history tool:

use mwseaql::{Actor, Page, Revision};
use sea_query::{Expr, MysqlQueryBuilder, Order, Query};

let query = Query::select()
        Expr::tbl(Revision::Table, Revision::Page)
            .equals(Page::Table, Page::Id),
        Expr::tbl(Revision::Table, Revision::Actor)
            .equals(Actor::Table, Actor::Id),
    .order_by(Revision::Timestamp, Order::Desc)

In MySQL this translates to:

  DISTINCT `page_title`
  INNER JOIN `page` ON `revision`.`rev_page` = `page`.`page_id`
  INNER JOIN `actor` ON `revision`.`rev_actor` = `actor`.`actor_id`
  `page_namespace` = 4
  AND `page_title` LIKE 'Requests_for_adminship/%'
  AND `actor_name` = 'Legoktm'
  `rev_timestamp` DESC

It's really nice having type definitions for all the tables and columns. My initial impression was that the function calls were harder to read than plain SQL, but it's very quickly growing on me.

I'm also interested in what it means to have SQL queries in a more easily parsable format. Recently there was a schema change to the templatelinks table that basically required everyone (see Magnus's toot) to adjust their queries (example). What if we could have a macro/function that wraps each query and applies these types of migrations at compile/run time? Some let query = fix_my_query(query) type function that automatically adds the correct join and updates columns based on whatever schema changes were made in MediaWiki (as much as is technically possible to automate).

Lots of possibilities to consider! And mwseaql is just one of the components that make up the bigger mwbot-rs project.

If this works interests you, we're always looking for more contributors, please reach out, either on-wiki or in the room (Matrix or IRC).

Board Election results, next steps

Unfortunately, I didn't make it onto the Wikimedia Foundation board, you can see the full results. In the first round I was behind by ~280 votes, which is pretty close considering nearly 6,000 votes were cast!

I already said it, but I'm really thankful to everyone who supported me, whether you campaigned for me or just cast a vote. If there's anything I can do to help you out, you know how to find me :-)

What's next? First, it's time for me to get back to work, I only have a 4-month backlog of bugs and patches to get through. And then continuing to agitate for change to make the WMF and Wikimedia a better place.

P.S. I'm also planning to be much more involved with the awesome people in Wikimedia New York City in the coming year.