ergo
ircv3-ideas | ergo | |
---|---|---|
2 | 32 | |
46 | 2,663 | |
- | 0.6% | |
10.0 | 0.0 | |
about 5 years ago | 7 days ago | |
Go | ||
- | 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.
ircv3-ideas
-
Matrix 2.0: How we’re making Matrix go voom
> "At least as standard" how?
There are 8 people who vote on changes to the Matrix spec (the Spec Core Team), 7 of which are Element employees (including Matthew, Element's CEO). Element also controls the development of clients and servers used by the large majority of users in the public federation.
> A substantial portion of the IRC comunity is actively hostile to the IRCv3 extensions, and in some cases prefer incompatible implementations of the same functionality; Matrix has nothing like that going on.
But any IRC client will work fine on any IRC server, and they can connect to various servers with different implementations.
On Matrix, clients (generally) can only connect to one homeserver at a time; which forces them to converge on following exactly the same spec. And if your server differs ever so slightly from the other ones in how it implements some parts of the spec (room consensus), then it can be split-brained from the rest of the federation. Instead, changes to the room consensus are done by pushing new room versions, and each server implementation needs to explicitly support it or they can't join it. This means Synapse devs (which are a majority of Element employees) get to decide what room versions can get traction.
It is not uncommon for people in the Matrix community to complain about this and Element keeping specs in limbo, and PRs to the flagship clients being stuck in "design review tar".
> And there seem to be more visibly independent implementations of Matrix than IRCv3.
Clients, maybe, at least in the number of implementation. It's hard to find stats of this, but I feel that >95% of people in the public federation use Element even in tech-y rooms; IRC has a healthier mix of major clients (weechat, irssi, IRCCloud, Hexchat, KiwiIRC, The Lounge each have >5% of desktop/web users). But I admit that's just my very subjective point of view.
In terms of servers, Matrix has three open source ones as far as I know: Synapse (controlled by Element), Dendrite (controlled by Element, and almost on par with Synapse according to https://arewep2pyet.com/ ), and Conduit. Based on https://gitlab.com/famedly/conduit/-/milestones/3 , Conduit seems to be far from implementing the spec yet (eg. it doesn't seem to support leaving rooms or respecting history visibility).
> things like: server-side history extensions tended to mess up my client's history implementation (I'd end up with multiple copies of the same messages in my local logs, often with the wrong timestamps)
You can use https://ircv3.net/specs/extensions/message-ids to deduplicate them.
> And if you're in a conversation where people are using embedded gifs, then fundamentally you'll always be a second-class citizen if you're trying to participate in that with a client that can't display embedded gifs.
A conversation where people where people are using embedded gifs will exclude me regardless of client, because they are too distracting. At least on IRC I can expect people not to do it too much, and use words or emojis instead of reaction gifs.
> SSO access control; you just can't do that in a nice way if the client doesn't support it
That's a fair point; IRC is made by hobbyists more than companies, so that's not surprising. There is some discussion around it though: https://github.com/ircv3/ircv3-ideas/issues/74 and Sourcehut is sponsoring implementation (https://emersion.fr/blog/2022/irc-and-oauth2/).
- Ergo – modern IRC server written in Go
ergo
-
Actor framework versus standard channels
Ergo Framework does - https://github.com/ergo-services/ergo
-
Anything close beam/otp for other languages?
https://github.com/ergo-services/ergo for golang
- Ergo Framework v.2.2.2 is just released with the new cool feature gen.Pool
-
What are the recommended connection pool libraries written in Golang?
I think you should clarify what exactly you need. If you need something like TCP/UDP socket acceptor pool you may want to try Ergo Framework with ready to use design patterns https://github.com/ergo-services/ergo . Example for TCP https://github.com/ergo-services/examples/tree/master/gentcp, for UDP https://github.com/ergo-services/examples/tree/master/genudp
-
Erlang's not about lightweight processes and message passing
In case if you want to feel a flavour of Erlang in Golang - https://github.com/ergo-services/ergo
-
Is there an equivalent to Elixir / GenServer in Go? Trying to create the same request / response pattern with better performance but not sure where to start.
Besides, something like this already exists, I don’t see the point, but hey to each there own… https://github.com/ergo-services/ergo
-
go-actor: Tiny library for writing concurrent programs in Go using actor model
Thanks for sharing. Looks good as a first attempt in the long way to production state. You may also want to take a look another approach of actor based implementation https://github.com/ergo-services/ergo
-
Anyone built an app using Ergo framework?
It looked very different than all the other frameworks I have seen. https://github.com/ergo-services/ergo/blob/master/examples/http/app.go
-
Can Go have let it crash goroutine like in Erlang?
If you love the Erlang way you may want to try ergo framework https://github.com/ergo-services/ergo
What are some alternatives?
The Lounge - 💬 Modern, responsive, cross-platform, self-hosted web IRC client
micro - A Go service development platform
element-x-android - Android Matrix messenger application using the Matrix Rust Sdk and Jetpack Compose
wesher - wireguard overlay mesh network manager
convos - Convos :busts_in_silhouette: is the simplest way to use IRC in your browser
ristretto - A high performance memory-bound Go cache
znc-push - Push notification service module for ZNC
yggdrasil-go - An experiment in scalable routing as an encrypted IPv6 overlay network
element-meta - Shared/meta documentation and project artefacts for Element clients
Pyrlang - Erlang node implemented in Python 3.5+ (Asyncio-based)
ircv3-specifications - IRCv3 specifications | Roadmap: https://git.io/IRCv3-Roadmap | Code of conduct: http://ircv3.net/conduct.html
exo - A process manager & log viewer for dev