Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: provide a better README.md #35

Merged
merged 1 commit into from
Feb 23, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 41 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,54 @@
<div align="center">
<h1 align="center">commune-rs</h1>
<p align="center">
<h3 align="center">
Commune Server written in Rust
</p>
</h3>
</div>

## Motivation
Commune allows you to create free, open and public communities on top
of the [Matrix](https://matrix.org) 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.

This project aims to build a Rust version of [commune-server][commune-server],
which is currently written in Golang.
A comprehensive introduction of the concept is offered in the article about [Communal Bonfires](https://blog.erlend.sh/communal-bonfires).

The goal is to encourage the use of Rust for safe systems programming and also
help Rust newcommers adopt Rust as their programming language of choice.
We currenly aim to reimplement [commune-server](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.

## Development

#### Live instances

- [shpong.com](https://shpong.com) - Reddit-like
- [commune.sh](https://commune.sh) - Gitter-like

#### 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](https://rustup.rs).
- Install Just, releases can be found [here](https://github.com/casey/just#packages).

- 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](https://github.com/commune-os/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 [contributing guide][contrib].
the [contributor guide](CONTRIBUTING.md).

## License
#### License

This project is licensed under the Apache License Version 2.0

[contrib]: ./CONTRIBUTING.md#development-environment
[commune-server]: https://github.com/commune-os/commune-server
Loading