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

Explain what this is #194

Open
phil294 opened this issue Jul 29, 2023 · 1 comment
Open

Explain what this is #194

phil294 opened this issue Jul 29, 2023 · 1 comment
Labels
document Documentation of code for developers or features for users.

Comments

@phil294
Copy link

phil294 commented Jul 29, 2023

Hi,

can you please add more info to the Readme? What is Construct? Which protocols does it support? Is it better than Synapse? How does it compare to other servers like Dendrite? How feature-complete is it? What are the hardware requirements? What are the software requirements? Is it fast? Why should someone install it? Can I try it out somewhere?

I could find neither information nor FAQs or website regarding this.

Thanks for considering.

@jevolk jevolk added the document Documentation of code for developers or features for users. label Jul 29, 2023
@yangm97
Copy link
Member

yangm97 commented Aug 3, 2023

What is Construct?

A matrix home server implementation in C++.

Which protocols does it support?

Matrix but can be extended to support more through the use of Application Services (aka bridging).

Is it better than Synapse?

I can't pretend to be impartial. But as it currently stands, it should provide a more streamlined single user experience than Synapse i.e. it is less resource intensive and easier to setup. No external database setup is required as embedded database rocksdb is used instead of PostgreSQL.

How does it compare to other servers like Dendrite?

It is the first third party matrix home server capable of federating. Dendrite went through a lot during its lifetime so it's not easy to provide an in-depth comparison. As for others, they usually focus on the Client Api more than the Server (Federation) Api so having that said Construct should be a better citizen in the federation but experience might vary, as Synapse remains the most used implementation, handling its quirks and bugs is more often than not required in order to have a working Home Server but this "struggle" affects every other alternative implementation, including Dendrite so yeah...

How feature-complete is it?

Enough to be used as a daily driver by the lead developer and for years I've run Construct in a sardine can of a VPS (512MB RAM, slow disk io). Unfortunately though Matrix has some protocol flaws which are slipped under the rug by Synapse which aren't handled by Construct intentionally. For instance, while Synapse blindly trusts matrix.org for fetching the keys of offline servers Construct requires user intervention through the use of the console command key get.

What are the hardware requirements?

Construct only gets faster the more hardware you throw at it, but it does run under very restricted hardware. As I mentioned, I used to run Construct on a very low end VPS and yet was able to participate on most of the top rooms from the matrix.org public directory, which includes matrix hq and such.

Is it fast?

You bet it is.

Why should someone install it?

Why should someone not install it? Unless you're okay with following development, helping debug issues as they arise. But by using Construct instead of signing up for a matrix.org account you're also making the world a better place, as what's the point of a federated chat protocol if everybody is using the same centralized server?

Can I try it out somewhere?

Unfortunately, as stated on the README, Construct hasn't reached the point of being able to handle public registrations, as in ACL may not be strongly enforced to local users. This is expected to change before a 1.0 release is made though.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
document Documentation of code for developers or features for users.
Projects
None yet
Development

No branches or pull requests

3 participants