Hummingbard is an experiment in building communities on top of Matrix. Hummingbard has social elements like user profiles, posts, communities, sharing and so on. It is intended to be more than just a decentralized link aggregator or a microblogging platform.

Spaces

The main centre of interest in Hummingbard is a space, which is an ordinary Matrix space. A space is similar to a forum board, subreddit or an FB group. The posts in a space are ordinary Matrix events, with additional metadata for rendering social-like posts. Posts can include images, attachments and links. This should be extendable to add polls, reviews etc. in the future. Hummingbard posts can be blog posts too, like this one you’re reading right now.

Spaces can be rendered in various ways, which makes it possible to use them as user profiles like @david, or communities like art. Spaces can be arbitrarily nested, allowing sub-spaces like music/classical or music/jazz/fusion. Spaces can also have sub-spaces that render as wiki pages like hummingbard/about.

It is possible to have different types of spaces. A gallery type renders a space in Instagram-like fashion, like the pics space. Any type of space can be nested under any other type of space. This allows normal boards to have sub-spaces which are galleries, or vice versa. In the future, a space could be rendered to be a business page, and e-commerce page etc.

Hummingbard spaces are very limited in options right now, but basic info like title, description, header-image can be changed. Spaces support custom CSS too.

Social

Hummingbard has very basic social-like features. Users can follow other users and join spaces. A user feed shows posts chronologically. Posts can be shared from one user/community to another user/community. Posts can be replied to. Replies can be nested like in this thread.

Federation

Hummingbard works with federated Matrix servers too. Users can create Matrix accounts on remote servers, or log in with an existing account. Logging in with an existing account creates a user profile automatically, unless one already exists. Hummingbard spaces on federated servers work just the same as local spaces. Here are a few examples:

Federated spaces can also have nested spaces like ebooks:matrix.org/fantasy or pages rhythm:matrix.org/about.

In an ideal world, owners of Matrix servers would be hosting their own instance of Hummingbard, instead of going through one popular instance.

Dendrite

Hummingbard is dependent on Dendrite, the second-generation Matrix homeserver written in Go. Features like spaces and threading have only been implemented on Dendrite. Note that it is a forked repo with a temporary patch for paginating threads.

Code

Hummingbard’s code is now on Github here.

What’s Coming

Hummingbard is very bare-bones at the moment. I’m actively working on the following:

  • Private spaces

  • Power levels for admins/mods

  • Dark mode and various UI changes

Aside from that, Hummingbard has a lot of bugs, and will likely crash randomly. If you do want to check out the site, either create a local Hummingbard account, or use an existing throwaway Matrix account. I’d advice against using your main Matrix account, as the authentication code may have bugs. Please try to avoid any rooms that are too large. My tiny VPS running dendrite will not be able to handle it.

Contact/Feedback

We’re using #hummingbard:matrix.org as a meeting place to discuss Hummingbard development. You can also leave bug reports on a Hummingbard space itself - hummingbard/bugs.

Lastly, if you’d like to leave a reply on this blog post itself, you can log into Hummingbard with an existing Matrix account, join the hummingbard space, and come back here to write your reply.

Many thanks.

PS: This post was updated after a database migration, some links may be broken.