Skip to content

commune-sh/commune-rs

Repository files navigation

commune-rs

Commune Server written in Rust

Commune allows you to create free, open and public communities on top of the Matrix protocol. It allows homeservers to expose (a subset of) spaces and rooms to the world wide web, extending them with extra community features, such as discussion boards and threaded comments.

A comprehensive introduction of the concept is offered in the article about Communal Bonfires.

We currenly aim to reimplement commune-server, which is written in Golang. The goal is to prove that Rust is fit for backend programming and offers a variety of exclusive benefits over other languagestab=readme-ov-file that encourage good practices while retaining low-level control over details.

Live instances

Installation

We currently only have an alpha version available that runs as a collection of Docker containers.

  • If you didn't already, install the Rust toolchain through your package manager or rustup.

  • Install Just, releases can be found here.

  • Create a configuration file for Synapse with just gen_synapse_conf, it should be located at docker/synapse.

  • Change the variables found in .env to match your environment.

  • Start running the Docker environment with just backend.

  • Register an admin account and retrieve the access token with just gen_synapse_admin && just get_access_token.

  • Compile and run the binary with cargo r --release.

Short-term roadmap

  • Porting over the base functionality of commune-server
  • Federation between Commune instances
  • SSO login support through OpenID Connect
  • ActivityPub support for interacting with the fediverse
  • Private spaces/boards and Encrypted DMs
  • Simplify self-hosting deployment

Development

Prepare the development environment and run the project locally by following the contributor guide.

License

This project is licensed under the Apache License Version 2.0