ringrtc | libwebrtc | |
---|---|---|
7 | 1 | |
521 | 43 | |
-0.2% | - | |
9.1 | 1.8 | |
6 days ago | about 2 years ago | |
Rust | Rust | |
GNU Affero General Public License v3.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
ringrtc
-
Strange signal debug log. Why does the product say panther? And why is signal contacting ringrtc? Does this look normal?
On the two points you raised: - Panther is the codename given by Google for the Pixel 7 device. - RingRTC is a middleware library providing Signal Messenger applications with video and voice calling services built on top of WebRTC: https://github.com/signalapp/ringrtc
-
LiveKit – open-source, high performance WebRTC infrastructure
If you did not know, there is also https://github.com/signalapp/ringrtc by the Signal App team, which is written in Rust
-
Signal now supports group calls up to 40 people, using Rust
Huh, Signal's WebRTC implementation seems to be using Rust implementations of crypto primitives such as AES: example usage, Cargo.toml
-
WhatsApp and most alternatives share the same problem
Signal is still an improvement over other non-federated messengers in that it's open-source, so you actually can try to improve the situation, although it's notoriously difficult. As an example of more platform support: https://github.com/signalapp/ringrtc/pull/12
signal-cli is an example of a 3rd party client which is tolerated for now: https://github.com/AsamK/signal-cli
The main problem right now is that they don't have enough developers to take care of everything, but it's not specific to centralized services (no developer == no code). If you care about it, you can develop your own client using their library (à la signal-cli).
Regarding your last paragraph: I could probably list 20 features I'd like to see in Signal. That doesn't mean I want somebody implementing them with no guarantee about how securely they are implemented. One of the main goals of Signal is to provide guarantees against dragnet surveillance, and that constraint takes precedence.
-
Does Signal still use the client-side fan-out method for group chats?
I know their voice/video chats are built on top of WebRTC, they call it RingRTC perhaps you can find the answers there
-
is anyone regretting moving to signal and moving back to whatsapp?
Outside of the Android app, they had a bunch of "new developers" join, and they ported the call signalling framework to Rust: https://github.com/signalapp/ringrtc . This Rust library is now used by the other apps.
libwebrtc
-
LiveKit – open-source, high performance WebRTC infrastructure
I'd recommend Rust for your shared client core, even though for short-term practicality you probably have to keep using Google's C++ WebRTC library, because translating your existing high-level client code to safe Rust would be easier than translating it to reasonably safe C++.
If you're interested in pursuing this, the best starting point I've found for using the WebRTC C++ library from Rust is this: https://github.com/arcas-io/libwebrtc So far it looks like it only works on Linux and Mac.
What are some alternatives?
Signal-Server - Server supporting the Signal Private Messenger applications on Android, Desktop, and iOS
livekit - End-to-end stack for WebRTC. SFU media server and SDKs.
LibreSignal - LibreSignal • The truly private and Google-Free messenger for Android.
OvenMediaEngine - OvenMediaEngine (OME) is a Sub-Second Latency Live Streaming Server with Large-Scale and High-Definition. #WebRTC #LLHLS
TextSecure - A private messenger for Android.
webrtc - A pure Rust implementation of WebRTC
datachannel-rs - Rust wrappers for libdatachannel
matchbox - Painless peer-to-peer WebRTC networking for rust wasm (and native!)
ring - Safe, fast, small crypto using Rust