Need help with Drupal or Grav admin, site building, design, or content? Contact us! 

Help Defend Democracy! → Join Battalion today.

Back to top with progress scrollbar

Symfony-based kbin is taking the Threadiverse by Storm

By Reuben Walker , 13 June, 2023
Illustration of a rocket lifting off

Thanks to the recent asshattery of Reddit and its douche CEO, open-source alternatives are blowing up. kbin is a Fediverse platform built with Symfony, API Platform, and Schema Generator 3 by Ernest Wiśniewski. And it’s the one to migrate to if you don’t want to support the c^nts leading Reddit.

FYI, another Fediverse alternative, Lemmy, has problematic leadership itself. Of course, there are instances on the platform not run by idiots. We recommend beehaw.org if you decide kbin is not for you.

As mentioned in my article, You say you want a revolution: help the free, fair, and friendly Fediverse destroy Big Social; kbin is a service that is like Reddit. It is an open-source content aggregator and, as a bonus, is a microblogging platform (like Mastodon). Better yet, it is built with Symfony and its excellent ecosystem partners!

You can create and moderate communities (Magazines), meet people with similar interests and develop your passions. We created one (see list of actions below) that covers Symfony, Drupal, and PHP.

kbin logo

Ernest began work on kbin in January of 2021. It was released for testing and initial use earlier this year.

kbin notes:

“Kbin is a modular, decentralized content aggregator and microblogging platform running on the Fediverse network. It can communicate with many other ActivityPub services, including Mastodon, Lemmy, Pleroma, and Peertube. The initiative aims to promote a free and open internet.

This is a very early beta version, and many features are currently in active development, such as federation.”

Mobile apps are being built with the Flutter framework and Dart language. That’s good to see, as it builds Apple, Android, and PWAs at the same time. Look for them later this year.

Again, due to the self-induced Reddit API fiasco and subsequent moderators and user boycott, kbin.social (the primary instance) went from several hundred users to 123,000 plus this Monday (as kbin measures users). As of Tuesday, it was 127,000 plus. You can check the current stats here.

There is also a good one set up by an infosec expert, Fedia.io. They are above 21,000. Kilioa is another instance with 8,000+ users. And readit.buzz is another started by an admin with a strong Mastodon reputation (2,000 or so users).

But, we need many more instances to start up (see below).

kbin status message
kbin status message on June 12, 2023

While there was some site slowdown on kbin.social due to the strain such a tsunami of traffic put on the servers, the code held up on Monday during the Reddit Migration. That is not surprising considering what kbin was built with. In addition, some malevolent Redditors had been going after it with DDOS attacks, thus the need for the Cloudflare services.

But, before we go any further on why kbin is such a success story, consider taking these actions:


Built with the Symfony ecosystem

Symfony logo

Symfony

As mentioned above, kbin is as solid as steel thanks to being built with the Symfony ecosystem.

Here are its instance requirements as regards the Symfony ecosystem:

  • PHP version: 8.1 or higher
  • GD or Imagemagick php extension
  • NGINX / Apache / Caddy
  • PostgreSQL
  • Redis (optional)
  • Mercure (optional)
  • RabbitMQ (optional)

You would want to use all the optional services to have as robust and fast an instance as possible.

And you can peruse the code on Codeberg.

API Platform logo

API Platform

An API Platform bundle allows kbin to be part of the Fediverse.

To quote Platform API since I am not an expert:

“API Platform ActivityPub is a bundle for the API Platform framework and Symfony providing support for the ActivityPub protocol and the ActivityStreams vocabulary.

The ActivityPub protocol is a decentralized social networking protocol. It provides a client-to-server API for creating, updating, and deleting content, as well as a federated server-to-server API for delivering notifications and content.

API Platform ActivityPub allows you to easily add support for ActivityPub to new or existing API Platform projects while still benefitting from all API Platform features (yes, including MercureVulcain, and GraphQL!)"

Get all the details here.

I believe Ernest built a custom version of this for the kbin.social instance. But this is all so fast developing I could be wrong.

Schema Generator 3 text

Schema Generator 3

This tool provides the nuts and bolts needed for organizing the kbin platform.

I am super not an expert on Schema generation, so I will quote its mastermind, Kevin Douglas:

API Platform Schema Generator version 3 is a command-line tool, part of the API Platform framework, that instantly generates a complete PHP data model (classes, enumerations, ORM mapping, validation rules, web API definitions, PHPDoc…) from RDF vocabularies and ontologies. RDF vocabularies are commonly used to define web-scale (Schema.org), industry-wide (The NASA Air Traffic Management OntologyThe Automotive OntologyAddictO Vocab), or organization-wide (EU VocabulariesVolkswagen Vehicles Ontology) concepts and relationships.

Among the various RDF vocabularies, one could be the foundation for this redecentralized web: ActivityStreams. It’s the vocabulary of ActivityPub, a W3C-backed social networking protocol used to build decentralized and federated social media. ActivityPub is already implemented by popular social media software, including MastodonPeerTubeMobilizon , and WriteFreely. Servers implementing the ActivityPub protocol are interoperable and federated in what we call the Fediverse.”

Have you got that? If not, read all the details here.


kbin user u i
My kbin user profile

kbin is Threading and Microblogging

Let me start by saying the design and user interface on kbin are fucking fantastic. Especially for a prototype release. And the app itself is outstanding.

You interact with kbin as a person (user) and can follow people (other users from kbin and additional platforms like Mastodon) or magazines (similar to subreddits). You can also follow groups on Lemmy and other Fediverse platforms.

And other Fedizens can follow your kbin account as well.

kbin's Symfony Magazine
Symfony Magazine on kbin

Magazines

You should follow individual users and magazines on kbin so the firehose of the all feed doesn’t drown you. The same reason you follow your home feed on Mastodon rather than the federated feed.

You can sort magazine threads via top, hot, newest, active, or most commented views. And you can see the microblogs related to the hashtags set by the moderator.

kbin thread
A thread with comments

Threads

Within magazines, you can post links to create threads. You interact with threads (the image above), just like in Reddit, and you can microblog (the image below) like Twitter, all without the horseshit of those two commercial platforms and their fuckup management.

So, you up and downvote, boost, reply, and more.

kbin microblog u i
UI to write a new microblog, aka post.

Microblogs

I am unsure what the character limit is for microblogs, but micro implies something like the 500 used in Mastodon.

As seen in the image above, you can add links, style your text (unlike Mastodon), and add images and hashtags.

People on various Fediverse platforms can follow you as a user on kbin and vice-versa. This is helpful if you only want one Fediverse account. kbin lets you do both.


Astronaut in purple spacesuit with a laptop

User Guide

Now, let’s get you started with kbin. Thankfully, their documentation is as solid as their app’s code.

Begin by learning everything you want to know in the user guide.

Crucially, you can learn about account registration, customizations, and settings that allow you to design the experience you want with kbin.

Nothing is dictated to you, unlike commercial social media.

You can explore all of kbin’s features on their website.

My favorites include:

  • RSS feeds
  • Stats
  • Multiple thread types and controls
  • Posts and comments
  • Plus the moderator tools
Astronaut with purple spacesuit pointing forward

Developers, kbin Needs You!

For the critical part, we need some peeps to build Symfony, Drupal, and PHP instances. Unfortunately, I am not up to this as a content and front-end person. But I am willing to donate monies.

If you can develop a Symfony or Drupal app, you can do this.

Here is how you can set up an instance.

If you create one, please let us know so we can spread the word. And be committed to being a long-time administrator. You will have monetary expenses, so plan for that. Most instances ask for donations, and so should you. Users should donate to the instances they use and to kbin itself.

Encouragingly, there are already a plethora of pull requests. So, people are interested enough to be checking out the code.

Wrapping up

If you made it this far, you see that kbin is an exciting new part of the Fediverse. And it has a great future ahead of it, especially once you get involved.

It is as solid as a brick house thanks to being built with the fantastic tools in the Symfony ecosystem.

And if you are familiar with Reddit or other Fediverse platforms, it will fit you like a glove.

So, if you didn’t before, take the five actions listed above, and tell Reddit to fuck off. It’s time to blast off with kbin!

Resources

Official Site

https://kbin.pub/en

Docs

https://kbin.pub/en/docs

Code

Core

https://codeberg.org/Kbin/kbin-core

API Platform

https://github.com/api-platform/activity-pub

ActivityPub API

https://docs.kbin.pub/#introduction

section separator
Article Type
Donate using Liberapay

Symfony Station covers the essential news in the Symfony, PHP, and Fediverse development communities with a focus on protecting democracy. Please use the button above to make a small donation to help cover our out-of-pocket costs. Our labor is provided free of charge to support the communities we write about.

Join our newsletter list

Subscribe to The Payload, our weekly newsletter exploring the Symfony Universe.

  Start exploring!