We Want to Pay for a Good, Functioning WordPress Microposting Plugin

Skip down to the plugin requirements section

We are deeply upset at Twitter, Facebook, YouTube, and all the rest. Blocking President Trump from these giant corporate networks was just the last straw. Most of us already loathed these corporations for their violations of our basic digital rights (laid out here: Declaration of Digital Independence), but this?

This crosses the line.

For many of us, banning Trump (and many of his defenders) means we refuse to participate on their networks anymore. We’re running for the exits. We have to replace them now.

It’s urgent.


There’s a problem with the alternatives. The problem of course, is that there are a lot of them, and more arriving all the time. You might think, “Sure, and one will eventually win out. So let’s just move out and may the best platform win.” This is a mistake. Look, think about what gave the Facebooks of the world their power. It was precisely the fact that people went to the biggest platform…because that’s where the biggest group of friends, or the biggest audience, or whatever, would be. They seemed OK because they talked a lot about how they stood for free speech. They didn’t mean it. And here we are.

Genuinely decentralized networks can’t by censored. Here’s how the Internet used to work until 2005-ish: you wanted to connect to a network like email, or the WWW (Web sites), Usenet, or FTP, or whatever. So, first, you downloaded a client, a piece of software that connects you to that network. The client speaks to the network through a special technical protocols. Nobody is in charge of the whole network. There is an organization that defines the protocol, sure, but they don’t rule the network. The network has no leader, no center.

The Internet still works that way in parts. We still use browsers to connect to the web; we can still use email clients to connect to email. But today, instead of a client using technical protocols to connect people together for microposting, everyone uses Twitter. Instead of a client running social media protocols, people use Facebook. And so forth. Websites that run their own proprietary networks are “platforms.” And you can be shut out of these platforms. This gives Twitter and Facebook massive power. They run what always should have been a neutral network. Absolutely nobody deserves that much power!

Questions and answers

So why replace censorious platforms with…new platforms? Why not replace them with good old-fashioned neutral, decentralized networks? There should be a microposting network, and a video network, and an image network, and a social media (Facebook-style) network. I would also add: an encyclopedia network.

Decentralization”…I’ve heard of that. This is just blockchain, right? Not necessarily. That’s what the blockchain crowd wants you to think, but blockchains are just one kind of decentralization. The problem with blockchains is that they mostly incorporate coins, which means whether content gets into them can usually be determined, in one way or another, by who owns some coins. That means that “whales,” or people with a lot of coins, can control the network. That’s not decentralized. That centralizes power in the hands of a few individuals. The whole idea of decentralization is to eliminate any control of the network.

What’s wrong with just using Parler and Rumble, again? If you’re still asking that, then you missed the point earlier. This is important: we should never trust proprietary platforms again. If Parler and Rumble become the new Twitter and YouTube, it doesn’t matter what they say about how open they are, or how committed they are to freedom of speech. You simply have to trust them. That is what got us into this mess in the first place, back in 2005. Let’s not repeat the mistake.

So…what do we do? Here’s the deal. A lot of people are now working on this problem. Massive amounts of money are going to be thrown at it. I’ve spoken to at least three billionaires in the last 24 hours about this stuff, and they’re all motivated to open their pocketbooks. And that’s all in addition to the existing networks, some of which are growing very fast. So if you ask, “What should we do?” my response is: “You mean, in addition to all these other things, that other people are doing?”

What do you want to do? Quite a few people have been asking me this, and generally, I point them to things I’ve written before, such as this, this, and this. Those document lay out some of the requirements and principles behind a properly decentralized social media network, one that preserves freedom in the way the rest of the Internet does (well—I fear we’ll soon be seeing just how well it stands up to concerted attack).

Naturally, most people with money look at censorship on the march as a big money-making opportunity. I look at it as an existential threat to my country and a brutal attack on my principles. I have never been involved in Internet projects for money alone; I always just wanted to do the right thing in the right way, money be damned.

Wait, so what is “the wrong thing” that people are doing? There are several things:

  • Blockchain: Some startups aren’t even seriously trying to be a good decentralized, free speech social network. A lot of blockchain “social media” projects are sold as “decentralized” (because they’re on a blockchain! That makes them decentralized, man!), but they aren’t really decentralized, because a few people are in control of the chain, there’s one client (a website and/or app), and basically it works like a regular website…built on a blockchain. Who cares? Minds.com is probably the closest we have to a fairly successful and growing site that is committed to free speech and open source, which does use blockchain; but I don’t think it’s quite fully decentralized yet.
  • Conservative social media: Some startups are devoted to free speech, but not decentralization. This is true of Parler and Rumble. They’re OK. But they’re platforms. They can and probably will eventually be compromised. We want to solve the problem, not just kick the can down the road. See “What’s wrong with just using Parler and Rumble, again?” above.
  • Federated networks: Some projects are pretty good at decentralization, but they are hard to use, or aren’t so keen on free speech. This is true of the Fediverse, meaning the projects built using the ActivityPub protocol, such as Mastodon, and also true of Diaspora. When Gab switched to ActivityPub, Mastodon and many others blocked them. This goes to show you that what we really need is not a federated network, but a genuine P2P network, so I can connect to the network to my own little client (which might be a website only I use, or a client app). There is also a big problem on some of these sorts of projects with child pornography and Nazis (or people impersonating them, which I personally think is just as likely). The latter has actually been Gab’s big problem.
  • Totally peer-to-peer networks: There is one small, hard-to-use app, Scuttlebutt, that is totally decentralized. There are others, and I’d like to know about them, but they seem to be small in adoption and in a very early stage of development (so, hard to use and not very good yet).

Can you just summarize what you want? Sure. I explained it before, but let me explain it again in another way. It isn’t that complicated:

  1. Client: I want an easy-to-use, well-designed, fast, modern client. Not an account on a website. No. A client. Not a website on which I make an account. The client could take the form of a browser plugin, a WordPress plugin, a stand-alone website, a hosted solution (where you save your own space, like on WordPress.com), a mobile client app, or even a desktop app.
  2. Similar UX to Twitter: The client allows me to publish to the network and view posts from the network. In other words, my experience as I use the client will be similar to my experience on Twitter: I can follow people, view my feed, like and share posts, etc.
  3. Direct or transparent connections to people: The client basically connects me to…other people. Or to their clients. Possibly with an aggregator intermediary, which stays out of the way. There is nobody who owns the whole network or has any special financial interest in the network. I am connected to people, not accounts on a website. It’s like email: I have a bunch of family, friends, and colleagues, and I have their email addresses, and I see the stuff they send me. Similarly, an unbranded social media network would let me specify the people I follow, and it goes and grabs their posts for me (somehow; see next point) and shows them to me all in a feed. Great.
  4. Aggregator: There are various different aggregators that prepare our feeds for us. If you’re following a thousand people, or if you have a million people following you, your client cannot by itself easily fetch, or send, all the necessary updates regularly for that many people. This is purely technical work that needs to be done as a service for you. So maybe you subscribe to a service. Maybe your university or corporation or ISP runs one. Maybe you just connect to one. It might cost a few dollars a month. It would be money well spent.

Here is the idea that inspires me, that I want to shout out to the world:

If you already have a standardized place—your blog or web space—then isn’t that where you should be able to do your microposting? After all, you should own your own data; so why not there? There’s no better place.

And then it is just a matter of figuring out how to syndicate it and display it in feeds of followers. Just using RSS to begin with would be absolutely fine. Then gradually add support for the other features such as sharing, upvoting, and threading, which Twitter offers, perhaps via a more strictly P2P extension of ActivityPub.

Requirements for a microblogging plugin

I’ve been in discussions with one particular investor and philanthropist, Futo.org, who wants to fund one or more OSS projects that will do 1-4 from the latter list. Basically, he’s willing to put up money for an open source client and also behind an open source aggregator service.

Something like $5,000 for the following is proposed. We’d like to hear from you first, about whether this is fair or not. Let’s talk before you start work. We want it to be very, very solid, beautifully designed, well-documented, easily maintainable, and 100% bug-free.

Let’s begin very simple, with a bare-bones microblogging plugin. And while it will be very simple, it will be 100% modern and awesome, with all the UX features users would expect.

Basic requirements:

  1. We want to build a (to begin with) simple WordPress plugin. It would be acceptable to fork the existing “Simple Microblogging” plugin, although that needs a lot of work. Have a look at https://startthis.org/ to get a notion of the general sort of thing I am after, but bear in mind I am not too excited about the idea of multiple columns. If that could be made optional (which implies an options page) without much trouble, that would be great.
  2. You must agree to release the code as open source only. The KSF can hold the code on Gitlab.
  3. The “new micropost” and the “author’s micropost archive” are both on the same page. They occupy a single column, as for example Twitter and Minds do. There is a clear visual distinction between the form for creating a new micropost and the list of old microposts, beneath the form.
  4. Let the blog’s admins create microposts in an easy-to-use interface:
    • For admins only, the new micropost form appears at the top of the page, always open, i.e., never collapsed (as on Twitter). No other user roles see this.
    • Input field should have a set width (never gets too wide, regardless of the window width), and which collapses down to something suitable.
    • Micropost text should be autosaved in the background (i.e., without the user having to do anything), and not in cookies but in the database.
    • When the micropost is submitted, it immediately (without page refresh) appears beneath the new post field.
    • Micropost character limit = 280. Include a nice, standard sort of interface for showing when the user is getting close to 0 characters, including a count of number of characters left.
    • On all platforms, the width + height of the form should support up to 280 characters (resizing the form should never be necessary).
    • On loading or refresh, the focus/cursor goes inside the form, at the end of any present text. Enter = submit. Shift+Enter = newline. Submit button available too, same action.
    • Small button for attaching images and video is just below the field. It calls the same WordPress “Select or Upload Media” interface, I guess (seems right).
    • After selecting media, they appear just below the new post box, in a preview.
    • Note: microposts don’t have titles.
  5. The rest of the page is devoted to displaying the author’s older microposts:
    • In this version, the following, older microposts are just those by the author (the author’s history). In the next versions, by micropost feeds followed.
    • Published micropost content design elements should include: small thumbnail of any media, linked user ID, micropost content, timestamp. For the layout of these items, please propose a few designs for me to choose from.
    • Each should appear in, or surrounded by, a box.
    • Single images and video thumbnails should appear in smallish thumbnail versions, not terribly full-sized versions, always landscaped. We want this looking like Twitter, not Instagram; so, there should not be no very tall posts. Of course, the full normal dimensions should appear when:
    • Clicking an image displays it in its own modal.
    • If there are two or more images, display the first two side-by-side. If this takes time, take the time to do it right. In a visual medium like this, this little detail will be hugely appreciated and will be important to building a user base.
    • A like button (show me a few acceptable designs, and give me your top choice too; something with an unsurprising, standard, up-to-date look and feel). Increments a local counter, that’s all. Either on or off for each user session. Don’t bother matching votes to users (or, not yet; we might later; this button is mostly experimental, so don’t take a long time on it).
    • Small delete button in a not-too-prominent place and color (don’t want it to stick out). Available only to admins, of course.
    • Desirement: handle Open Graph data in an intelligent way (like a Twitter card). The more full-featured, the better. Probably best saved for a later iteration, but whatever you can do now, grand. Nobody likes to see just a plain link without any preview. If you can do this, and simply want me to elaborate requirements, let me know. Or if you have any design decisions to make, let me have input on them. Generally, make it unsurprising and standard.
    • Desirement, please do if possible without much extra work: include a view counter. Increment the counter whenever the micropost is (locally, of course) loaded either as part of a page or on a list of posts (see below), or if the micropost’s unique URL (see below) is loaded. I doubt this could be done without a lot of extra work, so, I won’t expect it.
  6. Each micropost has its own unique page and URL, probably that of the corresponding WordPress post (assuming each micropost = a WordPress post), but definitely not based on the title (as microposts must not have titles). I don’t especially care about the design of the micropost-only page yet, but there should be one. A modal, probably, but a regular WordPress post would be fine as well. It doesn’t matter quite yet, though it will (so if you are inspired to work more on this, let me know so I can give you requirements).
  7. Pagination: your choice, either a traditional 30-microposts-per-page pagination feature or else an infinite scroll feature. I personally prefer the traditional sort (doubles as a sort of crude archive). But you decide. In either case, the UX should be standard and work well.
  8. RSS:
    • Include a file describing how we propose to extend the RSS standard, if at all. At the very least (I’m just guessing though), as a child of the <channel> element, there should be a new blogtype element, where the two possibilities are blog and micro. Please see this. This would help blog readers to know which RSS feeds to represent as micropost feeds, which would require special handling.
    • Create RSS output on a subpage. If the human-readable micropost feed appears at mydomain.com/micro/ then the RSS for the feed should appear at mydomain.com/micro/rss . Maybe even better, because shorter: mydomain.com/m/rss .
  9. Nice-to-have, not required yet (requirements available on request):
    • Editing (in place; not in a modal, unless you think that’s actually more modern…? I wouldn’t think so). If this is particularly easy, please do it.
    • Basic search. Results page paginated as necessary. As I think this is built into WordPress, please do this if it isn’t too much trouble.
    • Add a sidebar (for wide screens)/hamburger menu (for narrow ones) containing monthly-sorted archive. Archive pagination = 30 per page. Is going to be high priority soon.
    • Twitter importer. Input: a Twitter archive file. Output: all your old tweets, available on your blog in this format. This would make the plugin into truly a killer app and would guarantee explosive growth. Might already exist.
    • Page reader. Another page…or maybe the same page…which allows you to subscribe to feeds. Ultimately the posts themselves should probably have @username functionality (see ActivityPub).
    • User profile page, linked from the microblog home page as well as each user post. Data drawn from the WordPress blog.

General design/presentation layer requirements:

  1. There are a lot of design-related requirements above, so have a look.
  2. A minimalistic sort of project branding exercise. It needs a name. I don’t care what it’s called or about colors (nothing surprising or garish) or fonts (default = sans serif of course). I leave that hard part up to real designers, but we do need to do a name and branding elements. We want to convey a feeling of fun, ease-of-use, and independence.
  3. Both light and dark themes/skins available, as on Twitter.
  4. Generally, the main landing page will have a look and feel like Twitter. It should not be identical, for the simple reason that we don’t want to run into legal issues.
  5. Header requirements:
    • When a user is not logged in, the front page of the website should have a banner image and circular icon, as on both Twitter and Facebook.
    • When logged in, do not display the banner image. Basically, I see little need for a header at all when you’re logged in.
    • Menu items go above Archive on the right side of the sidebar.

What else, folks? Comments, please.

Realistically, why think this will solve anything?

There is an interesting answer to this.

First of all, if we’re serious about people owning their own identity and data, we can do a lot worse than building on top of the personalized web presence they already own—either their own domain, or at least a blog or website, the data of which they own in a portable format. A lot of people have WordPress sites; for those who don’t, it is very easy to install a hosted blog that includes the ability to add plugins. Something like 35% of websites online are WordPress sites. Like 400 million websites. The “killer” feature of WordPress is its decent (if bewhiskered) server, the power of which is increased by a zillion plugins. Also, it’s free and open source. And you can easily move your data around. And lots of people know how to work with WordPress sites (whether they want to is another matter).

So here’s the deal. All those WordPress sites, every one of them, could become a social media account in which the user owns, controls, and syndicates his own data. How freaking cool is that? Speaking of syndication, that’s a feature of WordPress sites that’s a killer: RSS and Atom are built in. So you could build a social media protocol on top of those protocols. Why not? And there’s another killer relevant feature: that protocol is already massively in use, already supported by many feed and news readers, and already decentralized. All we have to do is build on top of it.

So…why not just use blogging, even as it is right now, in a new “short message, social media” sort of way? Because, of course, the medium drives how people use the tool. We need to make it more like social media:

  • Adding a new micropost needs to be dead simple. Even simpler than writing a new WordPress post. As simple as posting on Twitter.
  • Text has to be artificially limited. You can’t let them go on and on, or they’re not microblogging anymore.
  • The look-and-feel has to be just like “social media” (Twitter and its imitators), not like a blog.

And those are just what the above starts to work on.

Here’s the dream—because we don’t have an interesting dream, what’s the point? It goes like this.

People learn that there’s a new Twitter-like plugin for WordPress. They tell each other, “Did you know that you can just tweet from your blog…and then you own and control your own tweets? Why didn’t anybody ever think of this before?” (Never mind that they did, a long time ago, but it didn’t really catch on or develop because some people didn’t care enough about decentralization and owning your own data, while other people didn’t care enough about writing easy-to-use software for non-geeks.) So people start installing the plugin. They share the location of each other’s feeds, use feed readers, and have an experience that is actually a bit like Twitter…but one that is totally their own and totally decentralized.

At first, people just use Feedly to follow the micropost feeds of friends. But, because of the brisk adoption rate of the plugin, new features are rapidly added. The all-important “dedicated microfeed reader” feature is added, so now you can see not just your tweets, but the tweets of your friends. Someone creates a registry of all known WordPress Microblogs. So you can search through those and find old friends and new. You can also add your friends’ feeds directly. Someone else creates a chat feature, so that, while you can’t tweet in response, you can treat somebody else’s top-level thread as the first. The original poster is given the right to delete and instaban (from the tweet) anyone who is difficult. Another feature quickly added is the “quote retweet.”

Then someone decides to hook up WordPress microblogs with the Fediverse, and various blockchain networks, etc. Suddenly, this becomes the standard: when you offload your content from some other content into your microblog…that, being totally, 100% owned and controlled by you, becomes the “true home” of your social media content. And the RSS is the “true format” of your social media feed. People write exporters for Twitter…and all their tweets are added to their WordPress microblogs. There’s a mass movement to say get off Twitter now, follow me instead via WordPress!

Of course, that’s when we start “posting at” people via their Fediverse account addresses, or perhaps some contextualized shortened version thereof (the present blog happens to be located at @[email protected] in the Fediverse; you can confirm this for yourself on mastodon.social because this blog runs the ActivityPub plugin, which enables a few Fediverse sites like Mastodon to pick up my blog posts as feeds).

Many more developments come fast and furious as the world discovers the power of this concept, and starts rebuilding and connecting everything to simple RSS feeds of microposts. The new day, of a truly decentralized microposting world, has dawned.

Well, I think it’s a nice dream.

UPDATE (Feb. 2): development is underway. Since I was eager to start using word press to make a microblog, I went ahead and made one without any of the advanced functionality described above. Here it is: https://StartThis.org.




, ,


Please do dive in (politely). I want your reactions!

32 responses to “We Want to Pay for a Good, Functioning WordPress Microposting Plugin”

  1. Cynthia Wineburgh

    I don’t know you, but decentralization in most things is ALWAYS better. Thank you for all your work against this tech totalitarianism!

  2. Nice article. However, I think you may be forgetting something. If you look at email, you see clients and servers using an open protocol. Anyone can send an email to anyone else–in theory. In reality, email has been captured by the big companies. They did this by blocking all the smaller email servers, so that even if you have an email server running on your computer at home, no one can receive your email. This means everyone has been forced to move to the big email providers in order to be able to send email that can be read by annone else. This occured because most email users were not savy enough to see it coming. They allowed themselves to be corralled by the big companies. The same thing is likely to happen with any decentralized client/server system.

    1. Clearly, the architecture needs to allow us to easily follow whomever we want. There can be filtering services (these will be necessary) but we should be able to choose our filtering service, and also to use a whitelist that bypasses all blacklists.

      1. A whitelist is such an obvious, simple, and inexpensive-to-implement solution that one has to wonder why it is no longer available. Could it be that Google, Microsoft, an the other big email providers care more about blocking small email servers than they do about the needs of their “customers”?

  3. Decentralized host that makes $ selling advertising for a set rate and random(not data mined) access to users. Even a simple ux would be enough.

  4. this may be one of the most important developments for our democracy in our lifetime. Folks like myself have been asleep , but no more

  5. darenwelsh

    I’m trying to understand this from the end user’s perspective. Do you assume each user has to have a WordPress blog or some equivalent? I must be missing something because that’s a large gap for most people. That’s the appeal of easily creating a Twitter account using the website or app. It would also generally put users in the position of trying to find a host that won’t undercut them if they disagree with their content. Please walk me through a scenario of how Jane Doe does this.

    1. Sure, if you don’t have a WordPress blog, you couldn’t use this. But lots of people have WordPress blogs, and it’s very easy to set one up (just pay someone on Fiverr to do it).

      Ultimately, there would have to be microblog farms the same way there are blog farms (like WordPress.org).

      Or even standalone microblog apps that don’t incorporate regular blogging at all.

  6. ~salmus-master

    I didn’t see any mention of Urbit. It’s the most interesting project right now. It’s not only a social media platform but a networked computing system, built completely from the ground up. This is very important because we don’t need only good means of communication but all the possible services. Everything else will be censored too, sooner or later. We are already seeing this when non-leftists are kicked out from payment services and online store platforms.

    Although Urbit is an old project, it’s still far from being user-friendly for the masses. But because it’s designed very well for the future, it makes sense to invest in it right now.

    The userbase has been growing steadily and recently there have been much more new people coming in, thanks to the massive censorship campaigns. The UI is starting to be very nice for basic social media needs. It has built-in chat, notebook (for blogging) and link collection.

    You are welcome to check it out, I’ll give you a planet (user ID) if you need one!

    1. It’s just another abstraction layer built on the old ones, one that won’t appeal to non-geeks for a long time still, and one that certainly won’t enable people to do the sorts of things they do with Twitter anytime soon.

      We’re facing a practical problem here.

  7. I’ve been following this idea of yours for a while but I’m not convinced how this is a better option than just using a good RSS reader. Adding things like upvotes into the mix could bring unwanted consequesnes as that type of thing is incredibly addictive to some people and we should really be working not only to reduce the power that social media compainies have in the world and over our data but also to reduce the addictive nature of social media so that we have less people in the world glued to their phones and more people living real lives.

    I’ve written out more of my thoughts on this topic here: https://jacobwsmith.xyz/stories/social_media_replacement.html

    1. Thanks very much for the thoughtful reply!

  8. BW

    What you’re proposing is a reinvention of ActivityPub, starting with a reinvention of its predecessors OSocial and pump.io.

    Mastodon, Pleroma, and several others are already open source. An instance of any of those would act as the “aggregator” in your scheme — a necessity to have because 1) your client is not always online, 2) distribution performance.

    You clamp down on ActivityPub as not being the solution, but your proposed solution is a pretty much exact description of ActivityPub. I’m not knowledgeable about WordPress, but I’ve heard there are already ActivityPub plugins for it. Your solution is already available.

    1. I don’t mind working with ActivityPub and would prefer that an RSS-based system be interoperable with it. Indeed if the aggregators were just ActivityPub nodes, that might be acceptable. But no, what I’m asking for is definitely not available already. I cannot do microblogging in a modern, easy-to-use UX from my blog. No plugin exists. I’ve tried them all.

      One big ActivityPub problem is the lack of support for P2P blogging; there is a WordPress ActivityPub plugin, but it is very rudimentary and has no WP composing UX. I’ve reached out to the author of that plugin for help with this.

    1. Sure, I’ve used it before. It’s not for social media, though. It’s more of a Slack competitor.

  9. I’ve been following along here for the last week since your post over on the WordPress.org forum.

    Looking at what I’ve built over the last couple of years while leaning on my experiences with WordPress and content sharing/aggregation suggests a few rough ideas which might become a self-replicating system of interconnected websites as you’ve outlined.

    In my plan a WordPress install would string together a set of plugins and recursively forward content via RSS, Atom, the Indieweb, the Fediverse, any platform supporting RSS, forums, caledars, or one of the syndication methods available on WordPress.

    The network should, at some point, become self perpetuating by way of the ever expanding width and depth coupled by the recursive feeds.

    Again, this is something I’ve been toying with for the past several years to solve some of my own problems with syndication and autoblogging. As I finalize these last steps I see this as the basis of what could be come a very open platform that would support multiple forms of social sharing.

    1. Excellent! You say you’ve built something…what? Do tell! Anything public? Have you written anything about it? Are you offering to help with the above requirements? I’ve all but hired a group already, actually…

      Please join us on https://larrysanger.org/community/ (soon to be launched at decentralizers.org).

Leave a Reply

Your email address will not be published. Required fields are marked *