LIMITS is yet another fully open source, interoperable, decentralised real-time communication protocol!

Overview

LIMITS: Limit-IM does not have ITS LIMITS

We are undergoing a major refactoring and technology stack adjustment to better accommodate clustered deployment solutions

Rust lines

Technology Stack

Rust Redis SQLite JWT Prometheus Grafana

Supported OS

macOS Linux Windows

LIMITS is yet another fully open source, interoperable, decentralised real-time communication protocol!


δΈ­ζ–‡ζ–‡ζ‘£

TL;DR: What is this?

It is a new IM protocol and with implementation with federal-based governance.

In simple words, you can run your own server and connect to other servers quite easy.

Progress of the project

Since we started developing this project we have completed a lot of work and the current phase is still in the technical and theoretical validation phase.

We first spent a month looking at existing IM protocols and we identified a number of issues such as centralisation, encryption, open source and private deployment etc. Secondly we spent a month looking at federation governance and we found a lot of issues such as how to get federation servers to communicate with each other, how to keep federation servers consistent with each other, how to synchronise data between federation servers etc.

We have recently been working on the actual code and theoretical exercises and we hope to have the first version ready for development between March and April.

Why are we doing this project?

There are so many options for IM protocols nowadays, but they all have one problem in common: they are all centralised. This means that they are all controlled by a company or organisation that can close your account at any time, or modify your messages without your knowledge. This is a very serious problem as it can lead to a breach of your privacy, or theft of your account.

Although many IMs claim to implement end-to-end encryption, some of these encryptions are really unknown to us or even some IM implementations do not turn on encryption by default, which leads to the possibility of your messages being eavesdropped on by third parties. Others are end-to-end encrypted but their server or client code is not open-sourced, so you don't know what it actually does and you can't verify its security yourself.

Another disadvantage of not being open source is that it can't be deployed privately. For example, IM projects with a high level of privacy for internal use are usually not that user-friendly, and it's difficult for users to get started with a new IM framework, and it's not easy for companies to maintain a framework.

So the problem we faced was that there was no IM protocol that combined decentralisation, encryption, open source and private deployment.

What is our solution?

We focus on high availability, high security, high scalability, high customisability and high ease of deployment. Our solution is a new IM protocol that is federation-based, which means it is made up of multiple servers, each of which is a separate entity that communicates with each other via a federation protocol.

We also use relatively new technologies such as distributed databases, distributed caching, and CRDT state synchronisation.

We have created a federated messaging protocol that runs on any server in the federation, which means you can deploy your clients on any server without worrying about your messages being intercepted by other servers.

We use CRDT technology to synchronise state across the federation network, which means that a group can continue to operate with a minimum of one live server, providing a very high level of availability.

Social Attributes

Today's mainstream open source IMs do not have particularly strong social attributes. In order to achieve profitability and open source attributes at the same time we can combine blockchain technology to allow users to develop their own communities and create their own wealth such as emojis, wallpapers, themes, bubbles, etc. Moreover, the blockchain is open source and the server owner can choose to deploy it so that the server also has some profitability. This would allow both the server owner and the user to earn some revenue while maintaining the open source nature.

Wait! Can I host it on my AWS EC2 T or Azure B1 series machine?

Memory usage and storage usage and ease of deployment are the Level 0 concerns for this project. So it should be able to run on a 1C1G machine.

Also, this product is very cloud infrastructure friendly, with all the databases and metrics taken into account for possible user deployment on a cloud SaaS.

Does it scale well on my k8s cluster?

Scaling horizontally is a very big challenge, not to mention the difficulty I have to consider for standalone deployments. Horizontal scaling that can't be automated is even scarier for Ops, so when I do a standalone deployment version, do my best to make it scalable. At this stage I will try to decouple the components and then try to develop them in a cluster friendly way.

Comments
  • [Feature Request] implement observability framework

    [Feature Request] implement observability framework

    πŸš€ Feature Request

    Is your feature request related to a problem? Please describe. observability is very important

    Describe the solution you'd like prometheus and grafana

    enhancement 
    opened by LemonHX 2
  • [Feature Request] check device id in auth

    [Feature Request] check device id in auth

    πŸš€ Feature Request

    Is your feature request related to a problem? Please describe. for avoiding attacks

    Describe the solution you'd like add device id in jwt

    Describe alternatives you've considered i don't know

    Additional context nope

    enhancement 
    opened by LemonHX 1
  • [Feature Request] separate idl to other git repo

    [Feature Request] separate idl to other git repo

    πŸš€ Feature Request

    Is your feature request related to a problem? Please describe. project management

    Describe the solution you'd like create a new repo and rewrite volo generation

    Describe alternatives you've considered nope

    Additional context nope

    enhancement 
    opened by LemonHX 1
  • [Feature Request] refactoring to tonic

    [Feature Request] refactoring to tonic

    πŸš€ Feature Request

    Is your feature request related to a problem? Please describe. we don't trust bytedance and are worried about volo will not maintain in the future.

    Describe the solution you'd like refactoring to tonic.

    @LemonHX

    enhancement 
    opened by ho-229 0
  • Implement sync service

    Implement sync service

    πŸš€ Feature Request

    Is your feature request related to a problem? Please describe. Can't fetch previous events right now.

    Describe the solution you'd like Implement sync service.

    enhancement 
    opened by ho-229 0
  • Refactor `Message` into `Event`

    Refactor `Message` into `Event`

    πŸš€ Feature Request

    Is your feature request related to a problem? Please describe. The Message based data structure cannot bring enough scalability.

    Describe the solution you'd like Refactor Message into Event.

    enhancement 
    opened by ho-229 0
  • [Feature Request] using redis(cluster) for both caching and runtime event dispatching

    [Feature Request] using redis(cluster) for both caching and runtime event dispatching

    πŸš€ Feature Request

    Is your feature request related to a problem? Please describe. now we don't have a cache

    Describe the solution you'd like import redis client cache sql on redis with max memory size(lru)

    Describe alternatives you've considered other distributed kv caching

    Additional context nope

    enhancement 
    opened by LemonHX 0
  • [Feature Request] Tracing System

    [Feature Request] Tracing System

    πŸš€ Feature Request

    Tracing System Is your feature request related to a problem? Please describe. A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

    Describe the solution you'd like A clear and concise description of what you want to happen.

    Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.

    Additional context Add any other context or screenshots about the feature request here.

    enhancement 
    opened by KevinZonda 0
  • [Feature Request] implement contact alias

    [Feature Request] implement contact alias

    πŸš€ Feature Request

    Is your feature request related to a problem? Please describe. If a contact changes their name it will be difficult to find them.

    Describe the solution you'd like Implement contact alias.

    #2

    enhancement 
    opened by ho-229 0
  • [Feature Request] multiple database try deploy

    [Feature Request] multiple database try deploy

    πŸš€ Feature Request

    Is your feature request related to a problem? Please describe. we need to at least try to deploy on mysql and postgresql

    Describe the solution you'd like refractor

    enhancement 
    opened by LemonHX 0
  • implement handshake service

    implement handshake service

    πŸš€ Feature Request

    Is your feature request related to a problem? Please describe. no implementation right now

    Describe the solution you'd like implement handshake service for end to end encrypted.

    enhancement 
    opened by ho-229 0
  • implement mocking system

    implement mocking system

    Is your feature request related to a problem? Please describe. integration test is shit right now

    Describe the solution you'd like implement a mocking system

    Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.

    Additional context Add any other context or screenshots about the feature request here.

    enhancement 
    opened by LemonHX 0
Owner
Limit LAB
Limit Project
Limit LAB
Scalable and fast data store optimised for time series data such as financial data, events, metrics for real time analysis

OnTimeDB Scalable and fast data store optimised for time series data such as financial data, events, metrics for real time analysis OnTimeDB is a time

Stuart 2 Apr 5, 2022
Yet Another Kev-Value DataBase

Yet Another Kev-Value DataBase Extremely simple (simplest possible?) single-file BTree-based key-value database. Build for fun and learning: goal is t

Sergey Melnychuk 18 May 23, 2022
Ratchet is a fast, robust, lightweight and fully asynchronous implementation of RFC6455 (The WebSocket protocol).

Ratchet ?? Ratchet is a fast, robust, lightweight and fully asynchronous implementation of RFC6455 (The WebSocket protocol). Complete with an optional

SwimOS 7 Dec 16, 2022
Materialize simplifies application development with streaming data. Incrementally-updated materialized views - in PostgreSQL and in real time. Materialize is powered by Timely Dataflow.

Materialize is a streaming database for real-time applications. Get started Check out our getting started guide. About Materialize lets you ask questi

Materialize, Inc. 4.7k Jan 8, 2023
Skybase is an extremely fast, secure and reliable real-time NoSQL database with automated snapshots and SSL

Skybase The next-generation NoSQL database What is Skybase? Skybase (or SkybaseDB/SDB) is an effort to provide the best of key/value stores, document

Skybase 1.4k Dec 29, 2022
A Modern Real-Time Data Processing & Analytics DBMS with Cloud-Native Architecture, built to make the Data Cloud easy

A Modern Real-Time Data Processing & Analytics DBMS with Cloud-Native Architecture, built to make the Data Cloud easy

Datafuse Labs 5k Jan 9, 2023
Skytable is an extremely fast, secure and reliable real-time NoSQL database with automated snapshots and TLS

Skytable is an effort to provide the best of key/value stores, document stores and columnar databases, that is, simplicity, flexibility and queryability at scale. The name 'Skytable' exemplifies our vision to create a database that has limitless possibilities. Skytable was previously known as TerrabaseDB (and then Skybase) and is also nicknamed "STable", "Sky" and "SDB" by the community.

Skytable 1.4k Dec 29, 2022
The spatial message broker and database for real-time multiplayer experiences. Official Rust implementation.

WorldQL Server Rust implementation of WorldQL, the spatial message broker and database for real-time multiplayer experiences Setup Instructions ⚠️ Thi

null 214 Jan 2, 2023
A simple library for Firebase real-time database

Firerust A very simple library to implement the Firebase real-time database in your code with the best performance Instalation Add this to your Cargo.

Daniel Dimbarre 1 Apr 15, 2022
A dotfiles manager, with real time fle watching and 100% less sym-links!

Kubo A dotfile manager that watches files in real time. Usage Create a directory called .kubo in $HOME, then create a file called kubo.toml in .kubo.

StandingPad 5 Jul 24, 2023
Owlyshield is an open-source AI-driven behaviour based antiransomware engine written in Rust.

Owlyshield (mailto:[email protected]) We at SitinCloud strongly believe that cybersecurity products should always be open-source: Critical decis

SitinCloud 255 Dec 25, 2022
open source training courses about distributed database and distributed systemes

Welcome to learn Talent Plan Courses! Talent Plan is an open source training program initiated by PingCAP. It aims to create or combine some open sour

PingCAP 8.3k Dec 30, 2022
Databend aimed to be an open source elastic and reliable serverless data warehouse,

An elastic and reliable Serverless Data Warehouse, offers Blazing Fast Query and combines Elasticity, Simplicity, Low cost of the Cloud, built to make the Data Cloud easy

Datafuse Labs 5k Jan 3, 2023
The rust client for CeresDB. CeresDB is a high-performance, distributed, schema-less, cloud native time-series database that can handle both time-series and analytics workloads.

The rust client for CeresDB. CeresDB is a high-performance, distributed, schema-less, cloud native time-series database that can handle both time-series and analytics workloads.

null 12 Nov 18, 2022
Fully typed SQL query builder for Rust [deprecated]

What is Deuterium? Deuterium is a fancy SQL builder for Rust. It's designed to provide a DSL to easily build SQL queries in safe and typed way. Like R

Stanislav Panferov 169 Nov 20, 2022
A simple yet powerful bluetooth client.

Overskride A Bluetooth and (soon to be) Obex client that is straight to the point, DE/WM agnostic, and beautiful (also soon to be) :D Prerequisites gt

kaii 23 Oct 7, 2023
Seed your development database with real data ⚑️

Seed Your Development Database With Real Data ⚑️ Replibyte is a blazingly fast tool to seed your databases with your production data while keeping sen

Qovery 3.4k Jan 2, 2023
Mycelite is a SQLite extension that allows you to synchronize changes from one instance of SQLite to another.

Mycelite What is Mycelite? Mycelite is a SQLite extension that allows you to synchronize changes from one instance of SQLite to another. Currently, it

Mycelial 16 Jan 2, 2023
Another minimal Raft implementation in Rust.

raft-rs Not my first time implementing Raft. I wrote about another implementation in Go I did. But you don't learn a concept well until you've impleme

Phil Eaton 43 Dec 15, 2023