Warning
Faith is in active pre-alpha development and is, from a user's point of view, currently unusable for its intended purpose. However, this will change soon™.
faith is an instant messenger optimized for security, native performance & user customization.
The faith client is designed around native, GPU accelerated rendering of arbitrarily large text message scrolls.
It implements a custom text layout and rendering engine, supporting Unicode, international scripts, emoji, bidirectional text, ligatures and shaped glyphs.
The user interface is rendered through an optimized rendering backend abstraction over Vulkan and OpenGL. Windowing is handled by the implemented backends, which currently include X11 and Wayland.
The faith server is designed around security & low latency. It is written from scratch in C, supports concurrent networking, implements a custom binary protocol and uses TLS for wire security.
UI related:
- X11/Wayland windowing backend
- Vulkan rendering backend
- Modern OpenGL rendering backend
- Instanced, single-drawcall glyph rendering
- Full emoji support
- Unicode, grapheme and bidi support
- Ligatures and text shaping with HarfBuzz
- Multidirectional text paragraphs
- Paragraph layouting engine
Network related:
- Concurrent server written in C
- Scalable to many clients with
epoll()mechanics - TCP transport secured with TLS via OpenSSL
- Basic binary protocol over wire
- In-memory table of online clients
- Support for multiple devices per client
- Client-to-client message routing
As faith is written in Rust, use cargo to build:
git clone https://github.com/cococry/faith
cd faith
cargo build --releaseRun it directly:
./target/release/faithOr install it into your Cargo binary directory:
cargo install --path .
faithMake sure ~/.cargo/bin is in your PATH env variable.
See the contribution manual.
