dendrite
nheko
Our great sponsors
dendrite | nheko | |
---|---|---|
42 | 17 | |
5,324 | 1,740 | |
2.3% | 2.3% | |
9.1 | 9.7 | |
7 days ago | 6 days ago | |
Go | C++ | |
Apache License 2.0 | GNU General Public License v3.0 only |
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.
dendrite
- The Tailscale Universal Docker Mod
- Conduit: Simple, fast and reliable chat server powered by matrix
-
Databag – tiny self-hosted federated messenger for the decentralized web
Matrix already has key-based identity in the works at https://github.com/matrix-org/matrix-spec-proposals/blob/keg... (and implemented in Dendrite at https://github.com/matrix-org/dendrite/pulls?q=is%3Apr+is%3A...). Matrix is set up to let folks go wild and change fundamentals like this; basically every Matrix Spec Change (MSC) is a small fork, which then gets merged into the main spec if it can be proven to work well in the wild.
-
What's the easiest way to use Matrix and add matrix-bridges for Messenger, Instagram, and Telegram etc.
I really hope that Dendrite is getting more traction and maybe there's an OIDC solution for Matrix one day.
- suggestions on a self-hosted messaging server with end-to-end encryption for a small family
-
Have any of you used a decentralized messenger before?
This is what the Matrix team is developing Dendrite for. To have a feature-complete yet small server software. But it's still in beta.
-
Matrix 2.0 — Matthew Hodgson talks about Rust in Element client, Rust SDK, IETF MLS, MIMI and more
Pinecone, which is an experimental overlay routing protocol used by P2P Matrix. It and Dendrite are extremely important to P2P Matrix.
-
How should I set up a private chat server/client for my family ?
Dendrite, meanwhile, can be found here. They say it's in beta. I think it's a late Alpha. Dendrite's primary mode is "Monolith"; this will have many of the same scalability/balancing options that Synapse does. However the true benefit to Dendrite as I see it is the "polylith" mode where workers can swap around which worker is the master without any interruption of service. I do not think that Dendrite polylith works yet, but I might be wrong. I'll be looking at running it on a test server in January to see if it's time to upgrade from Synapse (and time to invest in 4-6 SBCs to keep three here and send 3 to 3 of my buddies to make my Matrix even more reliable).
- Matrix was worth the effort to self host
-
Matrix was worth the effort to self host.
Initially I started with Matrix-Synapse. The toughest part was figuring out how to setup a subdomain to host my matrix server on, while still being able to point users to the main domain when they sign-up. (@user:example.com instead of @user:matrix.example.com). Once I figured out how delegation worked with a reverse proxy I got it working and figured id try dendrite. Dendrite is the second generation matrix server written in Go and it I think its configuration is easier and its footprint is smaller than matrix-synapse. However since its still a work in progress and its in beta stages some features aren't implemented and there were a few hiccups that made me switch back to matrix-synapse. So when dendrite is good to go I'll definitely be switching to that.
nheko
-
PSA: security vulnerability in qBitorrent 4.5.x webUI
Look at this, notice anything different? https://github.com/Nheko-Reborn/nheko/issues/new/choose
-
This Year in Matrix
Nheko has been around for a number of years. Never used it myself though.
-
Matrix was worth the effort to self host.
Matrix clients hit different than pretty much any other chat client I've use before. Theres multiple clients I've found like nheko, moments, element that are a pleasure to look at and smooth as hell. Even better you can have users use web services like Element Web to sign-up and chat. Its sick.
-
What flatpaks are "official" (i.e., directly from the application's developer)?
The Nheko flatpak is official. Just compare the source to the nightlies we build and upload to our nightly repo.
-
GTK4 Matrix Client
Like almost every client out there it has no support for e2ee. I was happy to find https://nheko-reborn.github.io (I'm a KDE user so Qt apps are preferred).
- Mozilla Thunderbird Beta now supports Matrix chat
-
Using Files with Browsers, in Reality
I probably wouldn't have guessed that `e.dataTransfer.items` gets cleared at the first await (since I'm not a proficient web developer), but I would've been extremely wary of this code in general. Additionally (not tied to async-await but race conditions in general), is `item.getAsFileSystemHandle()` a TOCTTOU vulnerability where the type of an item can change between folders and files and symlinks etc., while this code is running?
Rust's & vs. &mut system largely eliminates shared state hazards in both threading and asynchronity (&mut is exclusive/unaliased and can't be mutated by other threads or event loop jobs, and & is difficult and unidiomatic to mutate), though it doesn't solve async cancellation errors (https://carllerche.com/2021/06/17/six-ways-to-make-async-rus..., discussed at https://news.ycombinator.com/item?id=27542504), or filesystem TOCTTOU (https://blog.rust-lang.org/2022/01/20/cve-2022-21658.html as well as user code).
Qt event loop reentrancy is fun(tm) as well. It looks like a blocking call, but spawns a nested event loop which can do anything (but rarely enough to lull you into a false sense of complacency), resulting in segfaults like https://github.com/Nheko-Reborn/nheko/issues/656 (workaround at https://github.com/Nheko-Reborn/nheko/commit/570d00b000bd558..., I didn't look into it). And Qt lacks "easy" await syntax and a framework based on calling red functions (though I didn't look into C++20 coroutines yet, perhaps https://www.qt.io/blog/asynchronous-apis-in-qt-6 or https://github.com/mhogomchungu/tasks or https://blog.blackquill.cc/asynchronous-qtquick-uis-and-thei...?).
- Introducing Native Matrix VoIP with Element Call!
-
How a Single Line of Code Made a 24-Core Server Slower Than a Laptop
> So forcing everyone to think about ownership because maybe they are writing concurrent code (then again maybe they aren't) so that "congrats your memory management problems are solved" seems like a Pyrrhic victory--you've already blown their brain cells on the wrong problem.
https://manishearth.github.io/blog/2015/05/17/the-problem-wi... argues that "[a]liasing with mutability in a sufficiently complex, single-threaded program is effectively the same thing as accessing data shared across multiple threads without a lock". This is especially true in Qt apps which launch nested event loops, which can do anything and mutate data behind your back, and C++ turns it into use-after-free UB and crashing (https://github.com/Nheko-Reborn/nheko/issues/656, https://github.com/Nheko-Reborn/nheko/commit/570d00b000bd558...). I find Rust code easier to reason about than C++, since I know that unrelated function calls will never modify the target of a &mut T, and can only change the target of a &T if T has interior mutability.
Nonetheless the increased complexity of Rust is a definite downside for simple/CRUD application code.
On the other hand, when a programmer does write concurrent code with shared mutability (in any language), in my experience, the only way they'll write correct and understandable code is if they've either learned Rust, or were tutored by someone at the skill level of a Solaris kernel architect. And learning Rust is infinitely more scalable.
Rust taught me to make concurrency tractable in C++. In Rust, it's standard practice to designate each piece of data as single-threaded, shared but immutable, atomic, or protected by a mutex, and separate single-threaded data and shared data into separate structs. The average C++ programmer who hasn't studied Rust (eg. the developers behind FamiTracker, BambooTracker, RtAudio, and RSS Guard) will write wrong and incomprehensible threading code which mixes atomic fields, data-raced fields, and accessing fields while holding a mutex, sometimes only holding a mutex on the writer but not reader, sometimes switching back and forth between these modes ad-hoc. Sometimes it only races on integer/flag fields and works most of the time on x86 (FamiTracker, BambooTracker, RtAudio), and sometimes it crashes due to a data race on collections (https://github.com/martinrotter/rssguard/issues/362).
- Update on beta testing payments in Signal
What are some alternatives?
Synapse - Synapse: Matrix homeserver written in Python/Twisted.
synapse-admin - https://hub.docker.com/r/awesometechnologies/synapse-admin
conduit
matrix-docker-ansible-deploy - 🐳 Matrix (An open network for secure, decentralized communication) server setup using Ansible and Docker
gomuks - A terminal based Matrix client written in Go.
Telegram-FOSS - Unofficial, FOSS-friendly fork of the original Telegram client for Android
Ligase - Ligase is a Golang-based implementation of Matrix homeserver, powered by finogeeks https://www.finogeeks.com/Finchat
axolotl - A Signal compatible cross plattform client written in Go, Rust and Vuejs
Signal-Android - Patches to Signal for Android removing dependencies on closed-source Google Mobile Services and Firebase libraries. In branches whose names include "-FOSS". Uses new "foss" or "gms" flavor dimension: build with "./gradlew assemblePlayFossProdRelease".
weechat-matrix - Weechat Matrix protocol script written in python
matrix-doc - Proposals for changes to the matrix specification [Moved to: https://github.com/matrix-org/matrix-spec-proposals]
telegram-bot-api - Telegram Bot API server