Slack was experiencing an outage
status.slack.com
status.slack.com
Obviously this sucks and I feel bad for all of those affected, especially the people fixing this or who depended on Slack for their workflow.
But it's hard to overstate the dangers of over-centralisation like this, and I say it as a person who uses Slack professionally.
Maybe running your own Zulip instance isn't as sexy or has the same integrations, but at least you can have a person responsible for fixing it and get status updates, and ultimately: as much as Ops is a dirty word; being able to plan your downtimes can help a _lot_.
I certainly remember downtimes, and netsplits bad enough that it would have made team collaboration impossible depending on who was connected to what.
I think the lesson here isn't "run and maintain your own version of X", but "make sure you have other ways to communicate besides X".
Netsplits are mostly a solved problem these days, both with increased reliability of the internet and with network failure proxies like RobustIRC (for the linking protocol); and I remember fondly the times where we had a single IRC instance for all of our company (which had people working across: Thailand, USA and N.Europe) without issue.
But, yeah, I think what you said is completely fair.
Tell me about it! Two minutes after I posted that comment, I realized that our deploy system relies heavily on Slack.
How? The only deployment integration we have for Slack is that we get a message when a deployment start and when a deployment ends.
I mean I've seen weirder. For Slack specifically I had a fight with a dev team because their deploy tool failed if it couldn't push a message to Slack.
But it certainly wasn't all the entire IRC network(s). Which is the parent's point. Slack is centralized.
It was a common practice back then to have one "server". You would be hard-pressed to find mentions of "high availability" as servers were a very scarce resource. Small networks sometimes repurposed existing machines that were serving other workloads and added the IRC daemon.
I only interact with "my" slack. There is no material difference to my team's experience if "all of slack" goes down vs "our standalone chat server" goes down.
The only relevant issue is whether or not Slack's team creates a more reliable service than my poorly maintained homegrown solution.
All I care about as a business is about frequency and duration of those outages. If Slack outdoes whatever my in house solution is, Slack wins in reliability.
You can make arguments about the net impact on society of everything being down, but from my perspective as an individual business, having everything down is a win was well.
If I explain to client that we have a delay because our in house service is down -- fault falls on our business. If I explain to a client it is because Slack is down, odds are they'll blame Slack, not us. This is especially true if they're impacted by the Slack outage as well or the outage makes news outlets.
Outages from services likes Slack, AWS, etc. that are wide spread are almost treated like acts of god. Clients seem to be far more forgiving for those sorts of issues in my experience.
This is an under-appreciated competitive advantage "cloud" services offer - outsourcing blame. Somewhat similar to using staffing agencies as lawsuit shields.
Phrases like "Nobody ever got fired for buying Cisco/IBM/etc." are tossed around fairly often. If you chose the expensive, gold standard for your use-case and got burned anyway, odds are it won't be held against you.
Of course there are exceptions to that. If AWS going down results in loss of life -- you should take measures to avoid it. If the stakes are a day of lost work, the cure might be worse than the disease from a cost perspective.
My perspective is skewed b/c I work at a place that invests 8-9 figures in their supplier risk management program, but in that domain you don't get any breaks here. This dependency is discovered during pre-contract due diligence and your plan and test history to continue operations in the event of a vendor outage is assessed in the overall risk profile of your company.
It's obvious this type of consideration in risk management is picking up steam and I'm expecting an industry to start forming around it. I'm also waiting for 'chaos engineering' features to start creeping into SaaS products.
If you have a service (Slack alternative or otherwise) locally hosted, you're cutting out a whole bunch of failure modes:
1. Upgrades/maintenance at inopportune times (you can control this, or not even upgrade at all if you don't need it)
2. Networking issues, if you can colocate with with upstream or downstream dependencies
3. Many scaling issues (disk fills up, etc) since you're only serving your own needs and you're not trying to put as many users in as little capacity as possible
4. Relatedly, abusive use by other users won't effect you.
5. You can keep the service off the public internet and avoid things like DDOS attacks
It's nice to do able to blame someone else, I get, but that seems kind of gross, and actually being able to provide the best service overall is what I'd go for.If your service is off the public Internet, you now have a failure mode where the company VPN going down kills all productivity. And if you're going to have issues with a disk getting filled up, that's most likely going to happen with an on-premise solution than with a hosted solution where they have a team to take care that the disks don't "fill up". And not keeping your software updated because "an update would happen at an inappropriate time and we don't need it" sounds like a good vulnerability vector.
Happy to do the update at a quiet time (say 3pm on a wednesday before we go to the pub), but wouldn't do it during a major event (say the middle of the world cup final when we're monitoring things very closely)
We software developers as a profession seem to have cultivated an almost active distain for anything resembling long-term thinking.
> That gets access to the repo, but not issues, actions, code reviews, etc etc.
(to the extent that it's external to git, e.g., housed in GitHub rather than the repository), I think we're no longer talking, as your grandparent was, about:
> the most trivially distributed and self-hosted technology ever written ….
At least you can still work when your Git server goes down. And if your Git server is GitHub, you can keep working on your code and not have to go play sysadmin with your Git server.
I don't really know the solution. I know Fossil [1] has bug tracking, wiki, forum and now even a chat, but I've never used it and use Github instead. Maybe adding issues and things like that to git itself would be a solution? I don't know what's the percentage of people using git the "Github" way (with at least issues intergrated into it) but if it's really high maybe it's time for git to follow usage?
[1]: https://www.fossil-scm.org/home/doc/trunk/www/index.wiki
There is no "people who imported this package also imported..." type functionality, and I don't think it would be useful if there was.
The key is that when I do my maintenances (on gitlab, for example) I can take the thing offline to do my work, which makes it much easier than trying to canary a change.
It means I can plan a rollback or keep the backup in place.
It's not that I'd have a higher uptime than slack really (though, I have experienced this) it's that the downtime works for the company and if it ever did fail we have the knowledge to fix it on our own schedule.
I know that's scary to some, but it's a comfort to others.
7 months ago https://news.ycombinator.com/item?id=24800558
8 months ago https://news.ycombinator.com/item?id=24269767
12 months ago https://news.ycombinator.com/item?id=23161623
I don't specifically know about zulip, but I've got many internal servers and services with uptimes far in excess of that
Here's one, not exactly a lightly loaded server
19:10:57 up 1511 days, 7:18, 1 user, load average: 45.70, 41.32, 38.48
(Answering my own question, I'd guess that the strategy is "never change anything". To some extent, I don't need 80% of the features that Slack offers, and code that you don't have is code that can't break. Not restarting stuff to release new code is also good for uptime. Would be interesting to see a SaaS that has a super-stable-never-change-anything release track, hosted on infra with similar goals, and see how that uptime compares to people's homegrown version of the same strategy.)
Radius does vrrp, not instant, but acceptable
For true high availability (when downtime of milliseconds being unacceptable), we have A and B systems (sometimes more). E.g. syslog - router sends the messages out of two interfaces to two different servers which don't go down at the same time.
For local staff wanting access to internal webpages, we can cope with 20 second downtimes at an appropiate time.
I don't run a local irc server, but I'd be very surprised if it was any less stable than any other standard linux box -- do an apt or yum upgrade occasionally, any service outages you plan during a team meeting (thus we don't care if the chat system is down as we're talking via another method).
Stability is far easier when
1) Your server isn't open to the whole world
2) Your server isn't scaling to millions of users
Hell I've got a tcpdump session on one box that's been running since before the last slack outage 3 months ago.
What's the security update status on that?
I don't really want to describe our company messaging platform to have "awful" security.
And slack has been breached before. So this is a weird argument to make. The point being made is that you can determine your own trade-offs. With slack: you simply can’t.
Having a process running for 1511 days does not mean a service has 1511 days of uptime -- there are a ton of places stuff can go wrong.
Running a service like slack is hard, but modern HN attitude is if you can't scale to a billion users your architecture is rubbish.
Going a year without any sort of outage is. For example, if you're just serving from one place, any network outage between the users and that place will be an outage -- seamless failover is pointlessly hard and very few shops do this for their internally-hosted services.
If a user has a local network problem, that's not a loss in the service. If multiple users do that's an issue. My home broadband went out for 3 minutes at 23:33:43 GMT on May 13th, but then I wouldn't run a service needing 24/7 on my home broadband.
My frickin nasdrive has a better uptime than slack.
At what cost? Even with the occasional outages, Slack is still more cost effective than having your own person (or team for larger organizations) handle your communication software.
For 8 years (the life of the company) that machine sat by and did it's job without problems.
Was it patched? No, and that's annoying, but that cost literally _nothing_ to the company (except a sip of power).
Zulip isn't bad, it definitely doesn't need a whole person to manage it, probably 1hr/mo is good enough.
How much you pay for an hour (or even 10!) a month of engineering time is almost certainly less than you'd be paying for Slack if you're more than 100 people; especially at their single-sign-on provider pricing.
Also you: “but that cost literally _nothing_ to the company.”
Risk is an expense.
(or better yet, don't use Atlassian, but that argument's a non-starter at my company).
Operating it is a mess too, it's close to a full time job, I can't imagine recommending to host it like I do with communication software.
So I ignore their groans
There's some organizations that also use us for security, e.g. https://www.youtube.com/watch?v=cYl1SXFV_nE&feature=youtu.be, though we're happy to have y'all using us for any reason :)
Er, what? With Slack, there is an _entire organization_ responsible for fixing it and giving out status updates.
I think you're overstating the importance of a chat based application. It's not mission critical to operate a software business or any business for that matter so why is this so "dangerous"?
> Maybe running your own Zulip instance isn't as sexy or has the same integrations, but at least you can have a person responsible for fixing it and get status updates, and ultimately: as much as Ops is a dirty word; being able to plan your downtimes can help a _lot_.
Let's play the devil's advocate and say it IS mission critical. Now you need to pay full time staff (read -> not cheap) and computing resources and integration development (depending on solution) for it to be useful AND guarantee uptime.
I don't understand what the big fuss is about Slack vs IRC. Pretending as if every business in the world has access to competent sys admin folks is not only foolish, but it's dangerous to assume.
I feel like the truth is somewhere in the middle here. In an increasingly remote world and with the many ways slack integrates into businesses I think it is incredibly important to some businesses and maybe even mission critical.
But I totally agree with your second point that just because chat is important doesn't make running your own IRC instance a good decision or resource investment.
It's hard to overstate the dangers of over-centralisation like this, and I say it as a person who used freenode professionally.
Let's replace something that is almost never down don't require any maintenance (Slack) with something that requires maintenance and will probably go down more frequently than Slack. I hardly see any benefit in term of availability going on Zulip
Slack is constantly down -- every few months it reaches HN as a "slack is down" story.
Been running Zulip for two years at two companies. Never gone down, not even during maintenance (zero-downtime reloads FTW), which was twice, for version upgrades.
> don't require any maintenance (Slack)
Neither does zulip.com, which is a managed service by the makers and maintainers of Zulip and costs the same as Slack.
Network is resilient via fibres in different directions.
My laptop has a backup UPS built in. If wifi breaks, I can tether off my phone.
Power, ISP, UPS and Generators have all failed, but none are as ropey as slack (At least in the west - we had power issues in our Kabul officer earlier today, although even then slack has more outages than that)
But really. Your statement is absurdist, critical infrastructure doesn’t have to be outsourced. It’s a choice and there are trade offs.
If they publish a good postmortem on this, we'll definitely do an episode about it.
One website suggestion, add your transcripts to your search index.
Maybe 1-3pm daily?
I've seen some of the Gitlab Gospels that describe how to not use slack or whatever messaging tool they use in excruciating detail, and it made me think...
...if it requires this much instruction on how _not_ to use it, then maybe there is a tool that is a bit more intuitive.
Slack, Teams, they are all similar. Many times I open the Teams window back from a coffee break and I get a blank page. The software can't even detect that it is a blank page being displayed and some progress ball / beach ball whatever.
I say this in the middle of attempting a Tauri desktop app. I am sure my app will have the same problems, but my other options are even worse.
Well, it went from readable to "Server Error something went wrong". I haven't seen the entire slack app 500 before!
It logged me out of my work's workspace from both desktop and mobile device so I can't communicate with my team.
Don't press Command + R/Ctrl + R, if Slack is working for you!
It reeks of the "just get it done" anti-pattern where done is change that hasn't had the chaos tracked down and killed.
I bet internally they are waiting for bugs to get reported instead of pro-actively running the changed software under representative load to hunt and kill chaos.
MS Teams suck so bad from a developer perspecrive compared to slack it's never going to be a proper alternative. I'm not dissing, this is just my experience using both