Compare commits
2 commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
5004c2c204 | ||
![]() |
52e92359bd |
2 changed files with 75 additions and 34 deletions
36
DIFFERENCES.md
Normal file
36
DIFFERENCES.md
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
### list of features, bug fixes, etc that conduwuit does that upstream does not:
|
||||||
|
|
||||||
|
- Has a working CI/CD for tests, codebase warnings (rustc and clippy), caching, and build (still need to output artifacts with build variants)
|
||||||
|
- Fixed every single clippy (default lints) and rustc warnings, including some that were performance related or potential safety issues / unsoundness
|
||||||
|
- Has dependabot and significantly updates all dependencies possible
|
||||||
|
- Uses upstream reqwest instead of super old fork (via upstream MR)
|
||||||
|
- Uses proper argon2 crate instead of questionable rust-argon2 crate
|
||||||
|
- Improved and cleaned up logging (less noisy dead server logging, registration attempts, more useful troubleshooting logging, etc)
|
||||||
|
- Attempts and interest in removing extreme and unnecessary panics/unwraps/expects that can lead to denial of service or such (upstream and upstream contributors want this unusual behaviour for some reason)
|
||||||
|
- Merged and cleaned up upstream MRs that have been sitting for 6-12 months
|
||||||
|
- Using latest rust-rocksdb git for the latest RocksDB release which has various fixes, features, improvements, etc, including some regarding database corruption.
|
||||||
|
- Configurable RocksDB logging (`LOG` files) with proper defaults (rotate, max size, verbosity, etc) to stop LOG files from accumulating so much
|
||||||
|
- Federated presence support and configurable local presence (via upstream MR)
|
||||||
|
- Concurrency support for key fetching for faster remote room joins and room joins that will error less frequently (via upstream MR)
|
||||||
|
- Experimental room version 11 suppor (via upstream MR)
|
||||||
|
- Enabled all non-officially-supported room versions as experimental so we can at least attempt to join them
|
||||||
|
- Configurable guest registration including forbidding guest registrations if no admin user is created yet, respects allow registration setting, and an optional override setting with a default of no guest registrations allowed.
|
||||||
|
- Explicit startup error/warning if your configuration allows open registration without a token or such like Synapse
|
||||||
|
- Improved RocksDB defaults to use new features that help with performance significantly, uses settings tailored to SSDs, and a conduwuit setting to tell RocksDB to use settings that are tailored to HDDs or slow spinning rust storage.
|
||||||
|
- Updated Ruma to almost latest version possible, and add some unstable MSCs (some still require an implementation though)
|
||||||
|
- conduwuit allows MXIDs with `+` in them (thanks to Ruma update)
|
||||||
|
- Revamped admin room infrastructure and commands (via upstream MR)
|
||||||
|
- Make spaces/hierarchy cache use cache_capacity_modifier instead of hardcoded small value
|
||||||
|
- Send missing push notifications on invitations (via upstream MR)
|
||||||
|
- Make PDU appending, building, etc asynchronous
|
||||||
|
- Add *optional* feature flag to use SHA256 key names for media instead of base64 to overcome filesystem file name length limitations (OS error file name too long) (via upstream MR)
|
||||||
|
- Add *optional* feature flag to enable zstd HTTP body compression
|
||||||
|
- Add support for querying both Matrix SRV records, the deprecated `_matrix` record and `_matrix-fed` record if necessary
|
||||||
|
- Add config option for device name federation with a privacy-friendly default (disabled)
|
||||||
|
- Add config option for requiring authentication to the `/publicRooms` endpoint (room directory) with a default disabled for privacy
|
||||||
|
- Add config option for federating `/publicRooms` endpoint (room directory) to other servers with a default disabled for privacy
|
||||||
|
- Add support for listening on a UNIX socket for performance and host security with proper default permissions (660)
|
||||||
|
- Add missing `destination` key to all `X-Matrix` `Authorization` requests (spec compliance issue)
|
||||||
|
- Fix spec compliance issue with servers being able to fetch remote user profiles over federation for users who don't belong to our server (`/_matrix/federation/v1/query/profile`)
|
||||||
|
- Use aggressive build-time performance optimisations for release builds (1 codegen unit, no debug, fat LTO, etc, and optimise all crates with same)
|
||||||
|
- Raise various hardcoded timeouts in codebase that were way too short, making some things like room joins and client bugs error less or none at all than they should
|
73
README.md
73
README.md
|
@ -1,5 +1,5 @@
|
||||||
# Conduit
|
# conduwuit
|
||||||
### A Matrix homeserver written in Rust
|
### a well maintained fork of [Conduit](https://conduit.rs/)
|
||||||
|
|
||||||
#### What is Matrix?
|
#### What is Matrix?
|
||||||
[Matrix](https://matrix.org) is an open network for secure and decentralized
|
[Matrix](https://matrix.org) is an open network for secure and decentralized
|
||||||
|
@ -15,30 +15,44 @@ friends or company.
|
||||||
|
|
||||||
#### Can I try it out?
|
#### Can I try it out?
|
||||||
|
|
||||||
Yes! You can test our Conduit instance by opening a Matrix client (<https://app.element.io> or Element Android for
|
There are no public conduwuit homeservers available, however conduwuit is incredibly simple to install. It's just a binary, a config file, and a database path.
|
||||||
example) and registering on the `conduit.rs` homeserver. The registration token is "for_testing_only". Don't share personal information.
|
|
||||||
|
|
||||||
Server hosting for conduit.rs is donated by the Matrix.org Foundation.
|
|
||||||
|
|
||||||
#### What is the current status?
|
#### What is the current status?
|
||||||
|
|
||||||
Conduit is Beta, meaning you can join and participate in most
|
conduwuit is a fork of Conduit which is in beta, meaning you can join and participate in most
|
||||||
Matrix rooms, but not all features are supported and you might run into bugs
|
Matrix rooms, but not all features are supported and you might run into bugs
|
||||||
from time to time.
|
from time to time. conduwuit attempts to fix and improve the majority of upstream Conduit bugs
|
||||||
|
or UX issues that are taking too long to be resolved, or unnecessary Matrix or developer
|
||||||
|
politics halting simple things from being merged or fixed, and general inactivity.
|
||||||
|
|
||||||
There are still a few important features missing:
|
There are still a few nice to have features missing that some users may notice:
|
||||||
|
|
||||||
- E2EE emoji comparison over federation (E2EE chat works)
|
- Outgoing read receipts and typing indicators (receiving works)
|
||||||
- Outgoing read receipts, typing, presence over federation (incoming works)
|
|
||||||
|
|
||||||
Check out the [Conduit 1.0 Release Milestone](https://gitlab.com/famedly/conduit/-/milestones/3).
|
#### What's different about your fork than upstream Conduit?
|
||||||
|
|
||||||
|
See [DIFFERENCES.md](DIFFERENCES.md)
|
||||||
|
|
||||||
|
#### Why does this fork exist? Why don't you contribute back upstream?
|
||||||
|
|
||||||
|
I have tried, but:
|
||||||
|
- unnecessary Matrix / developer politics
|
||||||
|
- bikeshedding unnecessary or irrelevant things in MRs
|
||||||
|
- disagreement with how the upstream project is maintained including the codebase
|
||||||
|
- infinitely broken CI/CD and no interest in fixing it or improving it
|
||||||
|
- upstream maintainer inactivity
|
||||||
|
- questionable community members
|
||||||
|
- lack of MR reviews or issue triaging and no upstream maintainer interest in receiving help
|
||||||
|
- severe bugs, including denial of service and other likely vulnerabilities, not being merged due to things mentioned above
|
||||||
|
- no interest in adding co-maintainers to help out
|
||||||
|
|
||||||
|
are what are keeping me from contributing. If the state of the upstream project improves, I'm
|
||||||
|
willing to start contributing again. As is, I think if folks want a more polished and well-kept version of Conduit, conduwuit exists for that.
|
||||||
|
|
||||||
#### How can I deploy my own?
|
#### How can I deploy my own?
|
||||||
|
|
||||||
- Simple install (this was tested the most): [DEPLOY.md](DEPLOY.md)
|
- Simple install (this was tested the most): [DEPLOY.md](DEPLOY.md)
|
||||||
- Debian package: [debian/README.md](debian/README.md)
|
|
||||||
- Nix/NixOS: [nix/README.md](nix/README.md)
|
- Nix/NixOS: [nix/README.md](nix/README.md)
|
||||||
- Docker: [docker/README.md](docker/README.md)
|
|
||||||
|
|
||||||
If you want to connect an Appservice to Conduit, take a look at [APPSERVICES.md](APPSERVICES.md).
|
If you want to connect an Appservice to Conduit, take a look at [APPSERVICES.md](APPSERVICES.md).
|
||||||
|
|
||||||
|
@ -47,33 +61,24 @@ If you want to connect an Appservice to Conduit, take a look at [APPSERVICES.md]
|
||||||
1. Look for an issue you would like to work on and make sure it's not assigned
|
1. Look for an issue you would like to work on and make sure it's not assigned
|
||||||
to other users
|
to other users
|
||||||
2. Ask someone to assign the issue to you (comment on the issue or chat in
|
2. Ask someone to assign the issue to you (comment on the issue or chat in
|
||||||
[#conduit:fachschaften.org](https://matrix.to/#/#conduit:fachschaften.org))
|
[#conduwuit:puppygock.gay](https://matrix.to/#/#conduwuit:puppygock.gay))
|
||||||
3. Fork the repo and work on the issue.[#conduit:fachschaften.org](https://matrix.to/#/#conduit:fachschaften.org) is happy to help :)
|
3. Fork the repo and work on the issue.
|
||||||
4. Submit a MR
|
4. Submit a PR (please keep contributions to the GitHub repo, main development is done here,
|
||||||
|
not the GitLab repo which exists just as a mirror.)
|
||||||
#### Thanks to
|
|
||||||
|
|
||||||
Thanks to FUTO, Famedly, Prototype Fund (DLR and German BMBF) and all individuals for financially supporting this project.
|
|
||||||
|
|
||||||
Thanks to the contributors to Conduit and all libraries we use, for example:
|
|
||||||
|
|
||||||
- Ruma: A clean library for the Matrix Spec in Rust
|
|
||||||
- axum: A modular web framework
|
|
||||||
|
|
||||||
#### Contact
|
#### Contact
|
||||||
|
|
||||||
If you run into any question, feel free to
|
If you run into any question, feel free to
|
||||||
- Ask us in `#conduit:fachschaften.org` on Matrix
|
- Ask us in `#conduwuit:puppygock.gay` on Matrix
|
||||||
- Write an E-Mail to `conduit@koesters.xyz`
|
- [Open an issue on GitHub](https://github.com/girlbossceo/conduwuit/issues/new)
|
||||||
- Send an direct message to `timokoesters@fachschaften.org` on Matrix
|
|
||||||
- [Open an issue on GitLab](https://gitlab.com/famedly/conduit/-/issues/new)
|
|
||||||
|
|
||||||
#### Donate
|
#### Donate
|
||||||
|
|
||||||
Liberapay: <https://liberapay.com/timokoesters/>\
|
Liberapay: <https://liberapay.com/girlbossceo>\
|
||||||
Bitcoin: `bc1qnnykf986tw49ur7wx9rpw2tevpsztvar5x8w4n`
|
Ko-fi: <https://ko-fi.com/puppygock>\
|
||||||
|
GitHub Sponsors: <https://github.com/sponsors/girlbossceo>
|
||||||
|
|
||||||
|
|
||||||
#### Logo
|
#### Logo
|
||||||
|
|
||||||
Lightning Bolt Logo: https://github.com/mozilla/fxemoji/blob/gh-pages/svgs/nature/u26A1-bolt.svg \
|
No official conduwuit logo exists. Repo and Matrix room picture is from bran (<3).
|
||||||
Logo License: https://github.com/mozilla/fxemoji/blob/gh-pages/LICENSE.md
|
|
||||||
|
|
Reference in a new issue