A similar story using Jazz RTC - it used to go down every week or two weeks or so. It was so bad that we had quick dial to their call center. The joke was, we used to switch over to a Raspberry Pi hosted locally in the office running a Git Server - and there was zero downtime on that.
Unclear if you mean 5 kiloByte or 5 kilobit.
I'm assuming you must have meant kilobit since 5 kB was a pretty respectable download speed back in dialup days.
It absolutely baffles me how bloated and inefficient our modern computing infrastructure is.
Of course there are still people in remote areas, poorer Countries, low-signal zones, etc, who actually do have to deal with this daily. I remember reading a while back how Youtube and Facebook were completely unusable for some users because of this - not because of the actual content they are delivering.
When downloading files, there was a lot of waiting involved, but if you were dealing with email without attachments, usenet, IRC, and some of the older chat platforms like ICQ, AIM, MSN messenger, yahoo messenger, etc. the lack of speed wasn't really noticable.
These days, most websites and online platforms like Slack won't work at dial-up speeds.
This episode of computer chronicles may remind you of the joy and horror of that time period. Note that most of these people are actually on corporate networks not dialing in... and its still horrendously slow.
Seconded that no one enjoyed it. We all looked enviously at the people at companies and universities with their better hookups.
I logged in to my desktop machine, and had IRC up and running in under 5 minutes and had details out to the team ready to use it should an emergency strike. It's _really_ simple to spin up an IRC server for such purposes. Just about the time the Slack outage was over, the HipChat server was back and working again... :) (there's a lot of reasons why it took so long, and it wasn't really Atlassian's fault)
There are quite a few clients that even support encryption, so it's not even necessarily insecure either.
Basically we had a lot of cases of silent failure where messages would completely fail to go through, and this led to some pretty nasty social awkwardness, because there was no indication the service wasn't being 100% reliable. I only ever discovered it after several years, when I had a bouncer logged in from a rather different network address, and it was pretty terrifying how much was getting dropped (sometimes up to 10% of messages - although usually it was "periodic" failures where a whole conversation would essentially be dead for one side. I observed this over several months, and it was just mindblowing.
It was the silent failure that was the most insidious thing - there was absolutely no indication things weren't working perfectly, and it was only after we discovered this that we had the horrible realization that all of those communication problems we had in the past were not because individual "people" were bad communicators (or were ignoring you, being rude, etc), but because they genuinely weren't receiving entire paragraphs of text. At random, with no indication anything was dropped.
There are a lot of other extreme frustrations we had with IRC, but this "hidden QoS problem" was the last straw. A lot of the work we were trying to coordinate on it (gamedev stuff) involves more than just text, and just trying to share images across the thing constantly felt like being a second-class citizen (manually uploading something to an FTP when even AIM/MSN could transfer stuff no problem with a copy-paste). The fact that I was forced to use it for over a decade ... I've lost thousands of manhours of my life fighting with it when almost any modern tech stack would have avoiding those particular wastes of time, and that's just something I can't forgive. As irrational as it may be to do so - I can't help but hate it. :(
What they typically require is a message of some sort sent regularly from the client, and if they haven't received anything in a while, they'll send a PING to elicit a response from the client (if it's still alive). Most servers don't even check that the PONG matches the PING they sent, they're just happy to get something back before the timeout, although there are servers that send a cookie in a PING at connect time that they require to be reflected back correctly as a countermeasure for certain kinds of proxy abuse.
For example, EPIC is one of the oldest clients and it doesn't send its own PING messages unless scripted to do so, and it works fine.
> connect time that they require to be reflected back
> correctly as a countermeasure for certain kinds of proxy
> abuse.
That tripped me up when writing an IRC bot - it worked on many servers but failed on one particular server that sent the PING cookies.
The problem of adding files is something that it would be nice to solve, I think in general the IRC servers themselves wouldn't want to potentially sacrifice the ability to handle text whilst being overloaded with attachments. It feels like something that could be solved with a third party server and a client that supports it, with a short-ish TTL to keep the server freed up. Receiving side it would simply be a case of opening a link or deciding if the content can be displayed inline.
I quite like not being available when I'm offline. I don't want to logon to have a quadrillion messages to read back through - most out of date and don't concern me. We have email for this kind of thing.
There is an IRCv3 extension to get an acknowledgement the server received your message: https://ircv3.net/specs/extensions/echo-message-3.2
> It feels like something that could be solved with a third party server and a client that supports it
Some IRC clients, such as IRCCloud or the Matrix bridge already do this.
Or no wait, we need to invent a kind of paper that you can write on with a pen and have it magically mirrored on n similar paper documents.
I've been a staunch advocate for IRC for a while, but the truth of it is that there's nothing built-in for reliability. It assumes reliability from TCP.
If the TCP connection is interrupted, you will be disconnected.
If a route on the internet changes, you will start losing incoming and outgoing traffic; and you will be kicked from the server with a ping timeout. Losing messages shouldn't be possible without a route change on the internet that drops state, but I suppose if there is a leaky bucket style buffer cache somewhere in the pipeline it could happen?
In a similar vein; mattermost, when I ran it, would deliver messages out of order or not at all- I believe this was caused by nginx and a limited amount of buffer caches.
I suspect that the reason slack forces you to use their client is because they're working around protocol limitations like this with retry logic, because I've had messages not delivered with programs like wee_slack or my python bot (which thinks it delivered the message).
Anyway, if you want a more reliable connection for IRC there is RobustIRC which alters the protocol to be more reliable. Also ircv3 extensions largely attempt to solve issues inherent with relying solely on tcp.