Skip to content

FOSSil Chat

What is it?

FOSSil Chat is a work-in-progress, privacy-focused chat platform designed around community-hosting, federated servers, end-to-end encryption (E2EE), and a user-friendly experience.


Why does it exist?

It exists to address a simple, yet important and often-overlooked problem - how can people communicate privately in an internet environment where control and surveillance are increasing?


What do we have planned?

Currently, we are under early development, with little code and functionality, but our aim is to create the most privacy-oriented and simple-to-use IM program. This means:

  • Extremely strong E2EE
  • Markdown support for messages
  • Fast messaging times
  • Federated servers (community-hosted)

Getting Started

  • You need Rust and Cargo
  • To clone the repository, ensure you have Git installed, and type git clone https://codeberg.org/FOSSil/FOSSil.git into the terminal.
  • Then, cd into the cloned directory, then cd into server or client, then run cargo run to run the program.

Project Structure

  • client/ contains the client application.

    • client/src/main.rs is the entry point for the client. It starts the Tokio runtime, launches the networking task, and starts the GUI.
    • client/src/gui.rs contains the graphical user interface code using eframe and egui.
    • client/src/network.rs handles TCP communication with the server. It connects to the server, sends packets, receives packets, and handles server responses.
  • server/ contains the server application.

    • server/src/main.rs is the entry point for the server. It creates the initial ServerState and starts the TCP listener.
    • server/src/tcp.rs manages TCP connections. It accepts clients, configures TCP keepalive, reads incoming packets, and handles disconnected clients.
    • server/src/handler.rs contains packet handling logic. It processes joins, leaves, messages, and errors.
    • server/src/server.rs contains the ServerState struct, which stores connected users, messages, and message IDs.
  • fossil_shared/ contains code shared between the client and server.

  • Project Root contains project configuration and metadata.

    • Cargo.toml contains workspace configuration and dependencies.
    • Cargo.lock contains locked dependency versions generated by Cargo.
    • .gitignore contains files ignored by Git.
    • README.md contains project documentation and usage instructions.

Note

The project is in very early development - at the moment, we have a functioning CLI message system.

Warning

FOSSil is currently under active development and is not yet ready for production use. Features, protocols, and APIs may change without notice.

This project is licensed under the GNU AGPL-3.0 License. Read TRADEMARKS.md and LICENSE.md for legal information.

About

In a world where control and surveillance are increasing, how can people communicate privately?

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages