mirror of
https://gitlab.computer.surgery/matrix/grapevine.git
synced 2025-12-16 15:21:24 +01:00
110 lines
4.6 KiB
Markdown
110 lines
4.6 KiB
Markdown
# Introduction
|
|
|
|
Grapevine is a [Matrix][matrix] homeserver that was originally forked from
|
|
[Conduit 0.7.0][conduit].
|
|
|
|
[matrix]: https://matrix.org/
|
|
[conduit]: https://gitlab.com/famedly/conduit/-/tree/v0.7.0?ref_type=tags
|
|
|
|
## Chat with us
|
|
|
|
Currently, the Matrix room at [#grapevine:computer.surgery][room] serves
|
|
multiple purposes:
|
|
|
|
* General discussion about the project, such as answering questions about it
|
|
* Reporting issues with Grapevine, if getting GitLab access is too much trouble
|
|
for you
|
|
* Providing support to users running Grapevine
|
|
* Discussing the development of Grapevine
|
|
|
|
If you'd like to engage in or observe any of those things, please join!
|
|
|
|
[room]: https://matrix.to/#/#grapevine:computer.surgery
|
|
|
|
## Can I use it?
|
|
|
|
Theoretically yes, but it's not ready for general use yet, because:
|
|
|
|
* [There aren't any releases][releases-issue].
|
|
* [There isn't very much user-facing documentation][docs-issue].
|
|
* There have been several additions and breaking changes to the configuration
|
|
file format that haven't been documented in detail. This means you'll need to
|
|
read the source code to figure out what all the options are and what they do.
|
|
|
|
If these issues don't scare you away, go for it! (And if you use NixOS, [here's
|
|
an example][nixos-example].)
|
|
|
|
[docs-issue]: https://gitlab.computer.surgery/matrix/grapevine/-/issues/21
|
|
[releases-issue]: https://gitlab.computer.surgery/matrix/grapevine/-/issues/18
|
|
[nixos-example]: https://gitlab.computer.surgery/charles/servy-fleet/-/blob/main/config/grapevine/default.nix
|
|
|
|
## Expectations management
|
|
|
|
This project is run and maintained entirely by volunteers who are doing their
|
|
best. Additionally, due to our goals, the development of new features may be
|
|
slower than alternatives. We find this to be an acceptable tradeoff considering
|
|
the importance of the reliability of a project like this.
|
|
|
|
## Goals
|
|
|
|
Our goal is to provide a robust and reliable Matrix homeserver implementation.
|
|
In order to accomplish this, we aim to do the following:
|
|
|
|
* Optimize for maintainability
|
|
* Implement automated testing to ensure correctness
|
|
* Improve instrumentation to provide real-world data to aid decision-making
|
|
|
|
## Non-goals
|
|
|
|
We also have some things we specifically want to avoid as we feel they inhibit
|
|
our ability to accomplish our goals:
|
|
|
|
* macOS or Windows support
|
|
* These operating systems are very uncommon in the hobbyist server space, and
|
|
we feel our effort is better spent elsewhere.
|
|
* Docker support
|
|
* Docker tends to generate a high volume of support requests that are solely
|
|
due to Docker itself or how users are using Docker. In attempt to mitigate
|
|
this, we will not provide first-party Docker images. Instead, we'd recommend
|
|
avoiding Docker and either using our pre-built statically-linked binaries
|
|
or building from source. However, if your deployment mechanism *requires*
|
|
Docker, it should be straightforward to build your own Docker image.
|
|
* Configuration via environment variables
|
|
* Environment variables restrict the options for structuring configuration and
|
|
support for them would increase the maintenance burden. If your deployment
|
|
mechanism requires this, consider using an external tool like
|
|
[`envsubst`][envsubst].
|
|
* Configuration compatibility with Conduit
|
|
* To provide a secure and ergonomic configuration experience, breaking changes
|
|
are required. However, [we do intend to provide a migration tool to ease
|
|
migration][migration-tool].
|
|
* Perfect database compatibility with Conduit
|
|
* [This issue tracks the database compatibility status][db-compat]. In the
|
|
long run, it's inevitable that changes will be made to Conduit that we won't
|
|
want to pull in, or that we need to make changes that Conduit won't want to
|
|
pull in.
|
|
|
|
[envsubst]: https://github.com/a8m/envsubst
|
|
[migration-tool]: https://gitlab.computer.surgery/matrix/grapevine/-/issues/38
|
|
[db-compat]: https://gitlab.computer.surgery/matrix/grapevine/-/issues/17
|
|
|
|
## Project management
|
|
|
|
The project's current maintainers[^1] are:
|
|
|
|
| Matrix username | GitLab username |
|
|
|-|-|
|
|
| `@charles:computer.surgery` | `charles` |
|
|
| `@olivia:computer.surgery` | `olivia` |
|
|
| `@xiretza:xiretza.xyz` | `Lambda` |
|
|
|
|
We would like to expand this list in the future as social trust is built and
|
|
technical competence is demonstrated by other contributors.
|
|
|
|
We require at least 1 approving code review from a maintainer[^2] before changes
|
|
can be merged. This number may increase in the future as the list of maintainers
|
|
grows.
|
|
|
|
[^1]: A "maintainer" is someone who has the ability to close issues opened by
|
|
someone else and merge changes.
|
|
[^2]: A maintainer approving their own change doesn't count.
|