0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-11-29 18:22:50 +01:00
construct/README.md

200 lines
7.6 KiB
Markdown
Raw Normal View History

2018-09-14 01:57:43 +02:00
```
---------------------------------------------------------------------------------------------------
| |
| THE CONSTRUCT HAS NOT BEEN RELEASED FOR PUBLIC USE. THIS IS FOR DEVELOPERS AND DEMONSTRATION |
| ONLY. IT IS NOT COMPLETE AND REQUIRES EXPERT KNOWLEDGE TO USE. YOU ARE STILL ENCOURAGED TO TRY |
| THIS SOFTWARE AND HELP US, BUT IN AN EXPERIMENTAL SETTING ONLY. |
| |
---------------------------------------------------------------------------------------------------
```
# This — is The **Construct**
2015-02-25 03:32:08 +01:00
<a href="share/webapp">
<img align="right" src="https://i.imgur.com/TIf8kEC.png" />
</a>
2017-10-16 06:12:18 +02:00
2019-02-16 22:50:23 +01:00
**Fast. Secure. Feature Rich. Community Lead.**
2017-12-23 04:46:57 +01:00
IRCd was a free and open source server which facilitated real-time communication over the
2017-11-05 06:14:33 +01:00
internet. It was started by Jarkko Oikarinen in 1988 at the University of Oulu and [its
2017-10-25 18:24:50 +02:00
derivatives](https://upload.wikimedia.org/wikipedia/commons/d/d8/IRCd_software_implementations.png)
underpinned the major IRC networks for decades.
2017-09-09 14:50:16 +02:00
2017-12-23 04:46:57 +01:00
Due to its age and stagnation since the mid-2000's, a growing number of proprietary cloud services
are now filling the vacuum of innovation. In 2014 a new approach was proposed to reinvigorate
2018-01-18 15:03:59 +01:00
real-time communication for free and open source software: a *federation of networks* known as
2018-01-07 06:37:29 +01:00
*the matrix*.
2017-08-18 00:33:22 +02:00
2018-04-26 03:49:58 +02:00
<h4 align="right">
IRCd has been rewritten for the global federation of networks &nbsp;&nbsp&nbsp;
</h4>
2017-08-18 00:33:22 +02:00
<a href="https://github.com/vector-im/riot-web/">
<img align="right" src="https://i.imgur.com/DUuGSrH.png" />
</a>
2018-04-21 12:24:50 +02:00
2019-02-16 22:50:23 +01:00
**This is the Construct** — the community's own Matrix server. It is designed to be
fast and highly scalable, and to be developed by volunteer contributors over
2017-12-25 06:41:13 +01:00
the internet. This mission strives to make the software easy to understand, modify, audit,
and extend. It remains true to its roots with its modular design and having minimal
2019-06-03 02:43:58 +02:00
requirements. Even though all of the old code has been rewritten, the same spirit and
2017-12-25 06:41:13 +01:00
_philosophy of its predecessors_ is still obvious throughout.
2017-09-26 23:10:02 +02:00
2019-06-03 02:43:58 +02:00
Matrix is about giving you control over your communication; Construct is about
giving you control over Matrix. We are liberal with what we accept for ideas and
contributions. Whether you are optimizing the entire protocol or just filling a
need only a few others might share: please support the project by contributing
back.
2018-09-14 09:53:37 +02:00
<h3 align="right">
Join us in <a href="https://matrix.to/#/#test:zemos.net">#test:zemos.net</a>
/ <a href="https://matrix.to/#/#zemos-test:matrix.org">#zemos-test:matrix.org</a>
</h3>
2018-04-26 03:49:58 +02:00
2018-09-14 09:53:37 +02:00
## Installation
2017-08-18 00:33:22 +02:00
2018-09-14 09:53:37 +02:00
<a href="https://github.com/tulir/gomuks">
<img align="right" src="https://i.imgur.com/YMUAULE.png" />
</a>
2018-09-14 09:53:37 +02:00
### Dependencies
2017-12-25 06:41:13 +01:00
2019-02-16 22:50:23 +01:00
- **Boost** library 1.66+
- **RocksDB** library 5.16.6.
- **Sodium** library for curve ed25519.
- **OpenSSL** library for HTTPS TLS / X.509.
- **Magic** library for MIME type recognition.
##### Optional
- **zlib** or **lz4** or **snappy** database compressions.
- **GraphicsMagick** for media thumbnails.
2017-09-23 07:19:47 +02:00
2018-09-14 03:12:22 +02:00
##### Build tools
2018-09-14 09:53:37 +02:00
- **GNU C++ compiler**, automake, autoconf, autoconf2.13,
autoconf-archive, libtool.
2018-09-14 03:12:22 +02:00
- A platform capable of loading dynamic shared objects at runtime is required.
2018-09-14 03:12:22 +02:00
<!--
2017-08-18 00:33:22 +02:00
#### Platforms
2018-05-17 01:34:58 +02:00
[![Construct](https://img.shields.io/SemVer/v0.0.0-dev.png)](https://github.com/jevolk/charybdis/tree/master)
2015-02-25 03:32:08 +01:00
| <sub> Continuously Integrated Host </sub> | <sub> Compiler </sub> | <sub> Third party </sub> | <sub> Status </sub> |
|:------------------------------------------- |:------------------------ |:------------------------ |:------------------- |
2018-05-17 01:34:58 +02:00
| <sub> Linux Ubuntu 16.04 Xenial </sub> | <sub> GCC 6 </sub> | <sub> Boost 1.66 </sub> | [![POSIX Build Status](https://travis-ci.org/jevolk/charybdis.svg?branch=master)](https://travis-ci.org/jevolk/charybdis) |
2018-09-14 03:12:22 +02:00
| <sub> Linux Ubuntu 16.04 Xenial </sub> | <sub> GCC 8 </sub> | <sub> Boost 1.66 </sub> | [![POSIX Build Status](https://travis-ci.org/jevolk/charybdis.svg?branch=master)](https://travis-ci.org/jevolk/charybdis) |
| <sub> Linux Ubuntu 18.04 Xenial </sub> | <sub> GCC 6 </sub> | <sub> Boost 1.66 </sub> | [![POSIX Build Status](https://travis-ci.org/jevolk/charybdis.svg?branch=master)](https://travis-ci.org/jevolk/charybdis) |
-->
2017-09-23 07:19:47 +02:00
2017-08-18 00:33:22 +02:00
2018-09-14 01:56:58 +02:00
### DOWNLOAD
At this phase of development the best thing to do is pull the master branch
and use the latest head.
> The head of the `master` branch is consistent and should be safe to pull
without checking out a release tag. When encountering a problem with the latest
head on `master` that is when a release tag should be sought.
2018-09-14 01:56:58 +02:00
2018-09-04 07:03:32 +02:00
### BUILD
*Please follow the standalone build instructions in the next section until this
notice is removed.*
2017-09-09 14:50:16 +02:00
```
./autogen.sh
./configure
make
sudo make install
```
2017-09-23 07:19:47 +02:00
2018-09-04 07:03:32 +02:00
### BUILD (standalone)
2017-09-09 14:50:16 +02:00
2019-02-16 22:50:23 +01:00
This section is intended to allow building with dependencies that have not
2019-02-20 18:14:53 +01:00
made their way to mainstream systems. Important notes that may affect you:
2019-02-16 22:50:23 +01:00
- GCC: Ubuntu Xenial (16.04) users must use a PPA to obtain GCC-7 or greater; don't
forget to `export CXX=g++-7` before running `./configure` on that system.
- Boost: The required version is available through `apt` as `boost-all-dev` on
Ubuntu Cosmic (18.10). All earlier releases (including 18.04 LTS) can configure
with `--with-included-boost` as instructed below.
2019-02-16 22:50:23 +01:00
- RocksDB: The required version is available through `apt` as `librocksdb-dev` on
Ubuntu Disco (19.04). All earlier releases (including 18.04 LTS) can configure
with `--with-included-rocksdb` as instructed below.
2017-09-23 07:19:47 +02:00
2019-02-20 18:14:53 +01:00
#### STANDALONE BUILD PROCEDURE
```
./autogen.sh
mkdir build
```
> The install directory may be this or another place of your choosing. If you decide
elsewhere, make sure to change the `--prefix` in the `./configure` statement below.
2017-09-23 07:19:47 +02:00
```
./configure --prefix=$PWD/build --with-included-boost --with-included-rocksdb
```
> The `--with-included-*` will fetch, configure **and build** the dependencies included
as submodules.
2017-09-23 07:19:47 +02:00
```
make install
```
Additional documentation for building can be found in the [BUILD](doc/BUILD.md)
addendum.
2018-09-04 07:03:32 +02:00
### SETUP
2018-09-04 07:03:32 +02:00
See the [SETUP](doc/SETUP.md) instructions to run Construct for the first time.
2019-04-17 01:01:28 +02:00
### TROUBLESHOOTING
2019-04-17 01:01:28 +02:00
See the [TROUBLESHOOTING](doc/TROUBLESHOOTING.md) guide for solutions to possible
problems.
2019-04-17 01:01:28 +02:00
## Developers
2015-02-25 03:32:08 +01:00
2018-05-22 13:16:45 +02:00
<a href="https://github.com/mujx/nheko">
<img align="right" src="https://i.imgur.com/GQ91GOK.png" />
<br />
2018-05-22 13:16:45 +02:00
</a>
2017-12-12 22:58:10 +01:00
[![](https://img.shields.io/badge/License-BSD-brightgreen.svg)]() [![](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)]()
2018-05-24 01:28:47 +02:00
Generate doxygen using `/usr/bin/doxygen tools/doxygen.conf` the target
directory is `doc/html`. Browse to `doc/html/index.html`.
2016-03-06 00:49:13 +01:00
2018-01-18 15:03:59 +01:00
## Plan
#### Roadmap for service
2018-04-21 12:24:50 +02:00
- [x] **Phase One**: Matrix clients using HTTPS.
2018-05-24 01:28:47 +02:00
- [ ] **Phase Two**: Legacy IRC network TS6 protocol.
2018-04-21 12:24:50 +02:00
- [ ] **Phase Three**: Legacy IRC clients using RFC1459 / RFC2812 legacy grammars.
2018-01-18 15:03:59 +01:00
2018-04-21 12:24:50 +02:00
#### Roadmap for deployments
2017-12-25 06:41:13 +01:00
2018-04-21 12:24:50 +02:00
The deployment mode is a macro of configuration variables which tune the daemon
for how it is being used. Modes mostly affect aspects of local clients.
2017-12-25 06:41:13 +01:00
2018-04-21 12:24:50 +02:00
- [x] **Personal**: One or few users. Few default restrictions; higher log output.
- [ ] **Company**: Hundreds of users. Moderate default restrictions.
- [ ] **Public**: Thousands of users. Untrusting configuration defaults.
2017-12-25 06:41:13 +01:00
2018-01-18 15:03:59 +01:00
#### Roadmap for innovation
2017-12-25 06:41:13 +01:00
2018-04-21 12:24:50 +02:00
- [x] Phase Zero: **Core libircd**: Utils; Modules; Contexts; JSON; Database; HTTP; etc...
- [x] Phase One: **Matrix Protocol**: Core VM; Core modules; Protocol endpoints; etc...
- [ ] Phase Two: **Construct Cluster**: Kademlia sharding of events; Maymounkov's erasure codes.