4 ms·
They got themselves into a mess here: > This turns out to have a lot of complexity lurking within. Slack does not share a common codebase or even runtime; serv
by t0mas88 3y ago
They got themselves into a mess here:
> This turns out to have a lot of complexity lurking within. Slack does not share a common codebase or even runtime; services in the user-facing request path are written in Hack, Go, Java, and C++. This would necessitate a separate implementation in each language.
This sounds crazy. I've seen several products where there is a core stack (e.g. Java) and then surrounding tools, analytics etc in Python, R and others. But why would you create such a mess for your primary user request path?
Sure, they're not "just a chat app" they have video, file sharing etc included and a lot of integrations. But still this sounds like a company that had too much money and too little sense while growing rapidly.
- skullone 3y agoIt even pains me to see they're suffering from so many own goals. And it's unfortunately reflected in the poor experience using the Slack client. Not to mention the multiple deprecated bot/integration APIs with such bad feature parity between all the different ways to integrate your own tooling into Slack.
- nostrebored 3y agoWhat do you mean? Slack is one of the most responsive and reliable tools I touch every day.
- skullone 3y agoHow slow are the rest of your tools? The Slack client probably performs worse today than it did a few years ago. It has the laggiest interface of any of my tools, you can watch your CPU spike to 60-80% just switching channels. Just do it right now, open up htop/top/atop/Activity Monitor - whatever you want, and just switch channels. Laugh as the Slack client wastes a universe's worth of time just... rendering a DOM with plain text. It is genuinely pathetic how bad the client is.
- lopkeny12ko 3y agoI hope this is satire. Slack is one of the slowest work tools I've ever used. Every interaction and click visibly lags. It's a sad state of the world that almost every application now is written in Javascript and deployed with Electron, and massive memory usage and slow UIs have become accepted as the norm. Try any IRC client and tell me, with a straight face, that Slack is just as responsive.
- ladzoppelin 3y agoSo I only use Firefox and the Slack web client and don't experience any lag. I am surprised so many people use the Slack app over a web tab.
- MockObject 3y agoVery interesting. I have used Slack for work on a MacBook for years, and I have never once noticed any responsiveness issues or lags at all.
- FridgeSeal 3y agoOk genuine question: what other tools do you use? Slack won’t seem that bad, until you use something that’s actually good. The loss of performance on commonplace applications has been a real “boil the frog” situation; we’ve lost so much performance and responsiveness, but it’s happened so gradually that most people don’t notice.
- jldugger 3y agoWell, status.slack.com says they're currently having an outage, that has been ongoing for multiple days.
- snoman 3y agoThere was a time when this was the case (and electron was the punching bag for critics at the time, iirc) but I don’t think this criticism is fair anymore. Slack is quite responsive and performant these days.
- tbrownaw 3y ago"The right language for each job" was one of the heavy advertising points for microservices. Might still be too some extent, even.
- BoorishBears 3y agoThe problem is most engineers don't understand the "job". They see the job as a strictly technical problem looking for the best technical solution. They don't look up and see how that problem fits into the larger organization. They think things like "I can make a microservice that encodes PDFs 10x faster by using Rust" and give an estimate based on that, never thinking about how we're going to need to hire 2 more Rust devs to keep that running, and we could have delivered twice as quickly if I had used our default Python stack and now our "10x faster" doesn't matter because that feature is old news. Microservices are such an unfortunate concept because they attract the people least suited to use them: If your team can't handle a monolith, you shouldn't even be looking up what a microservice is.
- pavlov 3y agoThe only way you get Hack on that list of languages is that they had a policy of letting lead engineers starting a project to choose the language at will, and they hired enough lead engineers who previously worked at FB/Meta.
- deleted 3y ago[deleted]
- eikenberry 3y agoWhat mess? That sounds like a healthy internal language ecosystem to me. You need at least 2 primary languages to avoid accidental lock-in and maintain good developer diversity. That very paragraph is a great example of how the diversity helped them avoid the trap of plumbing it through their RPCs.
- t0mas88 3y agoSince when is an "internal langue ecosystem" a good idea? Technology in a company like Slack exists to deliver useful features and good performance/stability to users faster than competitors can do it. For an app like theirs it doesn't sound like something that needs several disparate internal platforms that are slowing them down.
- nostrebored 3y agoHow is choosing the right language for a task/team slowing them down? For large scale, cross cutting initiatives you’ll have some pain. For feature velocity, you’ll see great results. Everything is a trade off.
- eikenberry 3y agoStandardizing on a single language/toolset is a form of tech debt and has similar up/downsides. Comparable to, for example, how skipping testing will increase your velocity in the short run, but it will hurt it in the long run.
- lopkeny12ko 3y agoYou're suggesting that needing to reimplement the same thing 5 times for every single language in use is a hallmark of a "healthy internal language ecosystem"?
- eikenberry 3y agoThat's the red flag, the thing you are trying to avoid. You don't want to implement things in each language and you always have more than one language even if you standardize (over time). You don't want libraries, you want services. This is why things like Istio are way better than libraries for mesh networking. Using external services for common things keeps you from being locked into a single tech stack and the limitations that entails.