Hacker News new | past | comments | ask | show | jobs | submit login
Please don't use Slack for FOSS projects (drewdevault.com)
886 points by ddevault on Nov 1, 2015 | hide | past | favorite | 484 comments

If IRC were good enough to handle the needs of small software company communication, people would use IRC. Sitting here pretending everyone just doesn't know about a 20+ year old technology is comical.

The "IRC Features" section bugs me, too. Unless you run a private IRC server IRC has a long, tortured history of design-based security difficulties. Gone are the days of netsplits permanently owning channels, but the so called "distributed" design of IRC makes it very brittle and easy to deny service.

Oh, and did you know that with modest, low volume channels (>200 <1000, some networks tolerate more) you can make IRC networks struggle? Turns out that their lousy distributed design hurts more than helps when single channels get heavy.

Slack also offers a logging service that, for what it's worth, is configured correctly and secured by default. For organizations with 1-3 technical staff, maintaining and securing a reasonable approximation of Slack's feature is probably time better spent working on your product.

IRC is a classic example of the "it's broke but we don't fix it because it's familiar" mentality of old school services. While it may be a good choice for running low-volume (<500 users) public communication. Most tooling around it is woefully inadequate and often tedious to use for small software-oriented teams where Slack thrives.

But if you're genuinely concerned about security, HipChat will sell you a whitelabel product you can host and monitor and its setup is quite good for what it is.

> If IRC were good enough to handle the needs of small software company communication, people would use IRC. Sitting here pretending everyone just doesn't know about a 20+ year old technology is comical.

I'd just like to point out that this argument ("if <x> were so great, everyone would already use/do <x>") is just a slightly different form of the ancient appeal to popularity argument and is entirely fallacious.

Respectfully, I disagree. In many cases, things are popular because they are better/easier for a given audience. I'm a smart guy, have managed (and continue to manage) many, many UNIX-based services, and have run several IRC daemons in my life.

I still use Slack for internal use, and for our students.

What makes Slack (and its ilk, though the title of the post makes a bias against Slack clear) so great is that it's simple, easy, full-featured and has a low barrier to entry to the non-HN crowd that is being asked, in many cases, to use it.

I can promise you, out of experience and out of just plain statistics, that Slack and IRC have different audiences, and those audiences will not likely prefer the other.

Also, I'd guess that IRC is actually the more popular choice. But the majority of the IRC using audience is too busy getting work done in IRC to comment on an HN post.

I don't think you're going to find evidence for the argument that IRC is more popular than Slack. IRC's user base is declining, Slack's is growing, and the numbers we have now suggest that Slack is already much more popular.

Slack has 1.1 million users _total_ (http://www.fastcompany.com/3047819/with-over-1-million-users...), meanwhile Twitch uses IRC, and has ~3.3 million per day alone (http://blogs.wsj.com/digits/2015/01/29/twitchs-viewers-reach...), using stats taken eleven months ago while more than doubling its monthly viewer numbers every year.

Freenode isn't the only network out there =)

Being powered by IRC is not the same as using it, in the sense meant here.

What do you mean? Every viewer also connects to their IRC chat, hence "using" it. Heck, I personally connect to it using my IRC client.

The discussion is about users who use IRC directly and consciously. Many of Twitch's users have no clue what IRC is. Imagine a new social app that used SMTP in its implementation. You wouldn't bring it up in a discussion about the popularity of email.

No one denies IRC's continued popularity as a protocol for broadcasting text over a network. Slack itself uses it. But it's dying out as measured by the number of people who say to their colleagues e.g. "get on IRC, I have something to tell you."

> The discussion is about users who use IRC directly and consciously.

From the parent post I replied to, "IRC's user base is declining". Every single person watching a Twitch stream is an IRC user, whether they know it or not.

How do you determine the popularity of something? How many people use it.

Android is extremely popular. Do most of the folks realize they're using an Android phone? Nope.

Does it mean Android isn't popular? Nope.

If you don't have a similar understanding, we'll have to agree to disagree.

> The point is more that it's dying out as measured by people who say to their colleagues e.g. "jump on IRC, I've got something to tell you."

Of course they wouldn't, you're already speaking with them. Slack is fine for trusted networks of peers (businesses), but not much else. I won't start chatting with any my friends using it, nor would I bother to sign up somewhere to get access to a random Slack channel/community instead of using IRC, where I also coincidentally wouldn't need any of Slack's features.

Of course they're all IRC users inadvertently. That doesn't add to IRC's popularity. If Twitch disabled IRC and switched its chatrooms to some ghetto socket.io app, most of its users wouldn't know.

> Of course they wouldn't, you're already speaking with them. Slack is fine for trusted networks of peers (businesses), but not much else. I won't start chatting with any my friends using it, nor would I bother to sign up somewhere to get access to a random Slack channel/community instead of using IRC, where I also coincidentally wouldn't need any of Slack's features.

No, what I meant was, people no longer think of IRC as the tool to use to talk about projects and communities. They used to. That was its primary use case. That use case is shrinking, so IRC is becoming less popular.

> How do you determine the popularity of something? How many people use it. Android is extremely popular. Do most of the folks realize they're using an Android phone? Nope.

This isn't quite true, is it? Most Android users seem to know they're using Android. I could be wrong.

Again, your definition of popularity is different than mine, but either way my post still refutes his point about the declining userbase.

> No, what I meant was, people no longer think of IRC as the tool to use to talk about projects and communities. They used to. That was its primary use case. That use case is shrinking, so IRC is becoming less popular.

There's plenty of other avenues to use these days, so the numbers have diluted, absolutely. EDIT: There was no social media, very few IM clients... But the channels I'm in have been steadily rising (Freenode). http://tctechcrunch2011.files.wordpress.com/2013/01/irc-002....

Quakenet took a huge drop once it stopped being used to find CS matches.

> This isn't quite true, is it? Most Android users seem to know they're using Android. I could be wrong.

Obviously this is going to be anecdotal, but with the ~20 people I know who aren't technologically savvy, they'd only be able to tell you if they're using an Apple phone or not. My mother, for instance, has no clue that she's using a Windows phone. EDIT: I guess that really goes to show something about the success of Apple's marketing.

Try "IRC's mindshare is declining". rather than "IRC's popularity is declining".

Agreed, that would have been a far better term if that was the meaning he was attempting to portray.

> Obviously this is going to be anecdotal, but with the ~20 people I know who aren't technologically savvy, they'd only be able to tell you if they're using an Apple phone or not. My mother, for instance, has no clue that she's using a Windows phone.

I think this has quite a bit to do with what class of phone they buy. Android is marketed very heavily in certain contexts when buying a phone, just as iPhone is. Walk into Best Buy and ask for help on buying a smartphone that isn't basic and Android or iPhone (or Windows phone even) will be part of the pitch. Similar to how if you buy a sports car you are probably going to know something about the engine, if not when going into it, you probably will by the time the salesman is done. If you are buying a commuter car, they may or may not distinguish the engine, and you may or may not care enough to remember.

Agreed, although I believe the end goal of my comment was that after leaving the store, the term "Android" is completely forgotten, whereas "Apple" is almost a household term because you see them everywhere in pop culture—movies, the news, in schools, etc.

>> Of course they're all IRC users inadvertently. That doesn't add to IRC's popularity. If Twitch disabled IRC and switched its chatrooms to some ghetto socket.io app, most of its users wouldn't know.

Saying if Twitch disabled IRC is like saying if Slack changed to an IRC core..., which is not meaningful when discussing how many users Slack and IRC have. Twitch has several millions of users of influence. If they didn't use IRC, IRC would have millions fewer users, yet, Twitch chose IRC. Some of Twitch is IRC, and some of IRC is now Twitch, and millions of people use Twitch consciously. Twitch is the IRC client.

If a proprietary IRC network that is managed as basically an API layer for a service that isn't primarily about chat is the primary tentpole for a platform...

That doesn't seem like a really fantastic outcome for IRC. I guess if you're looking to come up with a conclusion that IRC has more users it is a useful tool. If you're looking to see what the future of distributed and local FOSS and corporate software team communication is? Less so.

Android is built on top of Linux, is it reasonable to say that the popularity of Android phones mean that Linux is popular?

I don't know if it is reasonable, but that's what is always said. The primary argument for Linux popularity is always "Android!".

Also, in this context I think it's pretty relevant. My personal opinion is that if Slack was just an IRC client instead of having its own propertiary backend, it would have been a better product.

Of course! And by digging deeper, we can also establish that cellphones are popular, and that electronics are also popular. It's going the other way (away from generality) which lessens popularity, since you're targeting something _more_ specific.

I think that's the problem with IRC. The idea of decentralized IRC networks means that channels are scattered amongst multiple IRC networks. IRC is already not as usable as Slack, and to have multiple networks decreases usability even further. I love IRC, but I see why Slack is full of win.

EFnet is a single entity in the exact same way that Slack is. All channels belong to only their service. Introducing yet another chat service only adds another place to the list. https://xkcd.com/927

It's also nice that I don't have to signup anywhere to use most IRC servers.

Don't get me wrong—Slack is the perfect tool for businesses, but not for much else.

But decentralized is the best thing ever!

I hate that argument. If decentralized was so great, then it'd be more popular, but it's not. More and more centralized stuff is exploding in popularity.

But that brings us back to mbillie and "if <x> were so great, everyone would already use/do <x>". Does popularity necessarily imply superiority? Adoption just means it's easy for anyone to get aboard. But that doesn't mean it's implicitly good, in any other way. Worse is better works, for example, if one option is more approachable than the other. Decentralization is good, as a rule of the thumb. Not having everyone on the same network, but having the ability to set up your own network or service based on the technology, is a good thing. Why would you want to have everyone on the same network? Networks are often topic-related. For example Freenode for programming-related topics. Minecraft is pretty focused on EsperNet. Quakenet used to be the place to online gaming. This is usefull and good, since communities sort themselves by interest, views, tools or what have you, by default. So why not encourage self-sustainability through means of decentralization?

Centralization is being driven by a lot of things, not least of which is that decentralization is really really hard. But a lot of it comes from mobile -- the idea behind decentralized apps before mobile came along was that bandwidth was not very dear -- oh, sure, it was limited in the days when IRC first became popular, but there was no reason to leave any of it unused. Local compute power was the same -- you may not have had a lot of it, but there was no reason to leave what you had sitting idle. Mobile is different. Idle CPU power can mean the CPU is throttled down to save on power and heat dissipation. Instead of staying connected to a server at all times, use "push" notifications so the server can let you know when it's worth using battery power and metered data to talk to the server.

Decentralized systems, and peer-to-peer systems, and even centralized systems designed around computers designed to sit next to a wall outlet and draw power from a practically unlimited source are all being replaced by systems that are more centralized and better equipped to talk to mobile. AOL Instant Messenger is dying because it was built around an older paradigm and, at least last time I bothered to try it, is an incredible battery drain on Android devices. Newer messenger apps that are built mobile first or at least make mobile an equal partner to PCs are winning instead. And it's the same for group chat -- IRC is built for old-fashioned PCs, Slack is built with mobile in mind.

It's also worth noting that it's not clear what decentralization brings to the table from the perspective any single organization. Most organizations will want a central authority for the history of their group communications.

Such facilities are bolted onto IRC, but never truly integrate with it the way other solutions have offered.

Centralized is generally easier to implement a given feature in, so it's easier to support more features.

It's also harder to base a business atop decentralized network, and when building a new network there is less of a business case in spending the extra time, stress and expertise to make it decentralized (vs. centralized).

Let's state explicitly why it's harder to base a business atop a decentralized network - because a business makes money by creating friction in the service, and in a decentralized model a friction too strong will be routed around.

Well, I think it depends on whether you are talking about decentralized networks, as I read the parent to your comment to mean, or decentralized ownership/administration of networks, as I read your comment to mean.

That is, the network can be decentralized but still administered by a single business entity, in which case you theoretically get a network more robust to outages, or the network can be composed of many separate entities, in which case you are theoretically protected from the bad behavior of any one administering entity, since there are many others (as in your example).

The other reason it may be harder to build a business atop a decentralized network is that the costs associated extra hardware, software, and locations and troubleshooting required to achieve the gains of a decentralized network may outweigh the gains achieved by doing so.

Fair enough, and to my credit, I said I was guessing about the popularity of IRC vs Slack. And I wasn't defending IRC; I am a Slack user, and by choice. A quick search showed me that public IRC servers had ~503,000 daily active users last week, while Slack recently had over one million daily active users. I would further guess that the IRC users are more likely to have made that a choice versus the Slack users, who are more likely to have signed in to Slack because that's what their workplace uses, making IRC the more popular "choice" rather than the more popular "service", but that'd be more conjecture on my part, and in any case, my argument remains unchanged: popularity can in fact be a signal that something is better/easier for those that use a device or app or service. Examples to the contrary (BetaMax vs VHS, HD DVD vs Blu Ray, 8-track vs cassette) are interesting from an argumentative point of view (I really wanted HD DVD to win, FWIW), but that's just it: there will always be evidence to the contrary.

It doesn't make it a logical fallacy to say something is popular because it's superior for its audience.

But back before the WWW saw non-trivial deployment, IRC was the #1 use of bandwidth on the internet! Something from the 90's must still be true today!

I was surprised when I read this comment. Do you have any evidence for this? If I had to pick some protocols off the top of my head I would have thought nntp, smtp, ftp, but certainly not irc.

I assume that he'd be talking about the IRC DCC sub-protocol.

CTCP and then SEND bots?

The military uses IRC.

Yes they do. Check out ##security on Freenode. I also do some security stuff in ##GRC

> In many cases, things are popular because they are better/easier for a given audience.

Which is the horse and which is the cart? Slack is easy because it got resources to be easy. Those same resource could have invested time to make IRC just as easy.

There is no inherent reason why IRC cannot be just as simple.

The reason slack is popular is because it got pushed hard and lots of money went into making it easy and popular.

There is nothing inherent about IRC that would have prevented it to be just as easy as slack if the same resources were put for that work.

It seems very unfair to the thousands of people who have donated time, money, and services to IRC over its life span to dismiss it as not having gotten value.

It is not an obscure fact that investing shitton of money in marketing will yield better adoption than investing the same money in the product. People "who have donated time, money, and services to IRC over its life span" generally focused on the technical side.

You misunderstood. I am saying IRC would be as easy as slack if the slack team spent the time working on IRC. Their investors would never let them even if they wanted to.

This is like saying Apple products are popular because Apple has a great marketing team, as opposed to because said products are genuinely easier to use (they "just work") than their alternatives.

Sadly, a lot of people (generally die-hard nerd types) genuinely believe that marketing was the sole reason for the iPhone's meteoric rise in 2007. They don't place any importance on user experience and therefore can't tell the difference between the iPhone and the early-gen smartphone predecessors (Palm/Nokia/etc).

These are the same people that are now confused as to why Slack has risen in popularity despite the existence of IRC, which (in their eyes) is technically superior.

To be fair, (as a Slack user) I'm not sure off-hand what Slack has that couldn't have been done on top of IRC. Almost everything could have been done with an IRC Server + Backend Services + Fancy Client model.

Problem: "Backend services" - how many of the Slack integrations don't have public APIs and Slack was only able to do it by being a single company? Good luck convincing people to set up the API keys for all of those services.

Why can't Slack run irc servers on their own equipment? The "integrations" would just be IRC bots running on private Slack servers, no?

> (they "just work")

Please don't say that Apple products "just work". We've got an office full of them.

and I need to "put a USB keybord, take it out again" when suddenly my Mac keyboard and trackpad stop responding xD

I'd rather have "easier to debug when it doesn't work" than "just works, most of the times"

Yes, it's pretty much self-evident truth. "Genuinely easier to use", even if it was clear-cut thing, doesn't explain the levels of popularity Apple products have. Lifestyle branding does.

It reminds me of Raspberry Pi. There are lots of more powerful boards that you can buy cheaper, but people still mostly buy RPi because it is the brand.

Buying 'the brand' can also lead to much more documentation which can make the 10% change in price worth while.

Apple products got good because of large amount of investment, not because they were popular. If IRC tech got the investment slack has now, it would only get better.

It worked for Nike and De Beers.

The entire sports drink industry.

The supplement industry.

Can't tell if this is sarcasm or not...

But that is why Apple is so popular. They are a marketing monster! They sell a "lifestyle" and they do it extremely well. They tell you to "Think Different" (as long as it means buying an apple product). They tell you one button is easy and the best. They tell people what to think and (some) people think that.

Yet they spend less on marketing then most major tech companies. One could just argue they spend their marketing budget well, but you have to wonder.

They spend just maintenance level. Tech press and media does the marketing for them.

Less as a percentage of gross income, or less in total dollars?

Both. Apple is infamous for its anemic marketing budgets; e.g.


I'm thinking a huge part of the difference between Slack and IRC audiences has to do with the $340MM Slack has raised. If someone gave "IRC" a quarter of a billion dollars, the differences might not be so obvious.

If you gave "IRC" a quarter of a billion dollars, we'd have the world's most complex ncurses UI, and a security ACL system whose complexity would rival X509. And normal people would still use Slack, because Slack was able to make simple design decisions that benefit the overwhelming majority of users but piss off Unix nerds like us.

don't be naive, IRC was the simplest solution to a problem 25~ years ago, now systems have changed and things must be thrown away.

that's just the nature of the beast, x.509 is also very old- but old things should be fixed or replaced with better alternatives, slack just fixes a usability problem.. but trades all privacy and freedom for that.

Personally it's not enough, but google has a massive market share because normal people do not consider that their data or freedom has any worth.

at least google is pro-free market in the way that you can extract data out later and migrate, I don't see slack being able to offer that reasonably. (or their incentive to allow it)

1. But isn't that sort of the point? IRC as an ecosystem has had years to get its act together. Like many corners of the tech ecosystem, perverse incentives have frozen IRC's progress. The very things that Slack, Hipchat and others have exploited are the things the old guard IRC users love. Opacity, terminal interfaces and a total lack of accountability are exactly what many IRC users find alluring.

2. Using cloud services in exchange for contributing to aggregate data seems like a pretty clear understanding of personal value.

Giving "IRC" a quarter of a billion dollars isn't a good idea. Giving it to a company making a single IRC client, on the other hand, would probably result in something like Slack, only much better.

I'm not sure how you conclude it would be better. I suspect you'd end up with something approaching Slack, only without interoperability with the rest of the IRC ecosystem.

The stuff IrcCloud, Slack and HipChat undo? That's the stuff that seems to be alluring to the steadfast IRC users. Inscrutable commands, nick and chanserv and unencrypted passwords sent via a command that could very easily be typo'd to broadcast in a channel, obscure partitioning behavior that is very much not what most businesses want, a lack of accountability or verifiability, a lack of robust logging and search...

I say these in a negative way, because that's my perspective. For many people they'd list many of these in positive ways like, "improved anonymity", "off the record by default", "network robustness", etc.

How do we even measure the value that had been donated to various irc technical efforts over the last 26 years? Millions if dollars in person-hours is probably not unfair to imagine.

Correct me if I'm wrong, but don't companies usually get a quarter billion dollars AFTER they have shown traction?

They got $17.5MM in the four years prior to even launching.

I didn't mean to imply it was causal. I implied that the industry is full of people who know about the product comparison and make exactly the opposite value judgement.

Whatever gave you the impression I think this is causal?

That the reasoning is fallacious doesn't make the conclusion incorrect. I could argue that 1+1=2 because when I looked directly into the sun today both my eyes closed. The reasoning is wrong, but the conclusion is true.

Similarly here, you could argue that the popularity argument is stronger because the tools are relatively easy to switch between and people are constantly re-evaluating this choice as new projects are created. Lock in and other switching costs bolster the concern of relying on popularity, but those don't come into play very strongly here.

It is a open market of tools out there... if IRC fulfilled the need and developed features that people really wanted they would be there.

Why does gchat, snapchat, whatsapp, fb messenger exist if AIM had been fulfilling the need of the market?

> Why does gchat, snapchat, whatsapp, fb messenger exist if AIM had been fulfilling the need of the market?

gchat & fb messenger are backed by huge companies trying to sew up the communications of a large community for the purposes of selling marketing services. The need they were created to fill is a corporate need, not a popular one.

Whatsapp was primarily popular because it made it cheap to text on your phone. I don't know the history of snapchat, never used it.

In a free market with well-informed participants, argument from popularity is entirely legitimate.

only to a minor extent (in that what is most popular still does not necessarily correlate to what is actually best, only to what people favor). Also, network effects still happen in free markets.

Anyway, it's all hypothetical. We don't have a free market with all participants being well-informed.

IRC is used by many projects small and big and I've used it in a few companies as well, it's not like it's an absurd concept.

I don't know if Slack is better or worse (I've never used it, I thought the title was talking about Slackware linux which seemed odd) but you draw a much bleaker portrait of IRC than what I experience day to day using it extensively.

Now if you want to talk about mailing lists I might side with you...

> but you draw a much bleaker portrait of IRC

I'm being brutally real. IRC is a brittle, aged, poorly designed protocol even by the standards of 1988 academia. You could design a more robust centralized service just by using off the shelf components today.

Seriously. Use off the shelf Google Container Engine stuff along with some modest websocket work and even relative neophyte will end up with a more robust service with better scaling characteristics.

Really, that's why stuff like Slack and Hipchat exist. Becuase it's not really all that hard to do a much better implementation than what IRC can feasibly do.

No, the point was that your description was entirely inaccurate. It's not brutally real because I also use IRC extensively every day on freenode and have almost never encountered the issues you are referring to. I think I've seen one netsplit in the last 2 years.

Okay, well I am sorry your experience and mine differ. Fortunately you can continue to use your solution without regard to my criticism.

But I think if we asked your IRC network how ma you nets plots they experienced in the last 2 years the number would be >1.

Ah, yes, IRC has netsplits. Slack, on the other hand, has "reconnecting...", which I encounter a dozen times a day on it.

I guess it's down to personal preference whether you prefer being able to talk with a partial group knowing that some people are absent, and not being able to communicate at all.

Reconnecting in slack then shows you the missed messages. What's the common case for making sure participants have access to all past messages in IRC? An external log, which doesn't really solve the netsplit problem, because it necessarily is part of the split?

I would much prefer clear indication that there is a problem communicating with others so I can fall back to an alternative method of communication.

What people here aren't getting is that IRC and a listserv aren't still used because they have the most features or are the most brilliantly designed pieces of software for the job, it's the best because it's a standard.

I have IRSSI always running in a remote screen session. I read many mailing lists. It's not just my personal preference, it's part of my workflow. When I hit a problem, my immediate reaction after consulting the docs or google is to ask a question on a relevant IRC channel or hit up a mailing list. I don't think I'm the only one that works like this, either.

So asking me to use hipsterchat or slack or gitter or trello or whatever means another another client, and not one that's going to replace my other client, but in addition to it. That's not good. If it had some amazing features other than emoji and fluff, I'd be open to it. But they really don't. People get work done with IRC and a listserv, and that's all that matters.

Let's be honest, Trello and Slack have taken off because young developers aren't familiar with this system and are taking to a new one. And maybe in a few years they will become the norm and my argument will no longer be valid because my workflow will change.

But until that point comes, I agree wholeheartedly that it's a bad choice for FOSS communities, on top of the fact that these are paid services and you're locked out of control of your communications if they decide it's better for their bottom line. That alone seems antithetical to the idea of free software.

> Let's be honest, Trello and Slack have taken off because young developers aren't familiar with this system and are taking to a new one. And maybe in a few years they will become the norm and my argument will no longer be valid because my workflow will change.

I completely disagree with you. My entire team is ~30 or older, and we all used IRC "back in the day". Slack is simply better for communicating with your team because of all the features mentioned elsewhere in this thread.

To suggest ignorance is the only reason Slack and HipChat have taken off is offensive to the people using it because they like it better.

I still use IRC for open source projects I use or contribute to. For the record, I agree with the article insofar as that OSS projects should probably continue to use IRC rather than Slack despite the persistence and team based features. Purely because it's unfair to expect all of your users and contributors to use yet another system for communication that isn't relatively open.

Slack is basically IRC with "subjectively nicer" design and helpful integrations, e.g. your builds, deployment, compilation progress can show up on separate channels, you can see if somebody mentioned you on twitter etc. You get the idea. Principally it's just extended IRC, maybe they even use slightly modified IRC protocol underneath for anything chat-wise.

Slack's benefits over IRC are largely not subjective:

* The ability to directly send files and images to channels is an objective benefit Slack has over IRC, which has even less ability to do that than MIME email (at least MIME lets you post the base64'd file contents of your image, rather than just a clickable link).

* The ability to send long messages or whole source files is an objective benefit Slack has over IRC.

* The ability to, by default and without running a secondary service that can crash or lose connectivity, log and search channels is an objective Benefit Slack has over IRC, which can support that feature only by using bots, and only by tunneling results through privmsgs or forcing users to leave the IRC protocol itself and visit ancillary web sites.

* The ability to edit and delete messages is an objective benefit Slack has over IRC.

There's probably a bunch more. Don't get me wrong: I don't think Slack is amazing; it's good for what it is, but in 2015 it's pretty unremarkable. The issue is that IRC is so. bad.

There are probably still people making fun of poseurs and hipsters who use IRC instead of ICB. The OpenBSD team used to be like that.

You've been able to directly send files over DCC via IRC clients since like 1995.

Interpreting and displaying those DCC'ed files or cutting longer messages into sub messages and recombining them is something that you could implement via the IRC client just as easily as it was implemented in Slack (not to say that it would be easy, it'd be a lot of work, but it likely would not be much more work than what took to make that function in slack).

If you're modifying IRC anyway, you can modify the server to record logs and make those available to clients.

Same goes for editing.

IRC is not as bad as you think it is, and it wouldn't be an insurmountable effort to make it as good as slack, but open sourced rather than proprietary, which was the entire point of the original article.

No. In Slack, files and images posted to channels are content associated with the channel, not a private and opaque stream of bytes tunneled over another protocol between two specific channel members. The comparison between Slack and DCC is silly.

Given the problem of sharing a diagram with a team of developers on a group message channel, I'm sure there's someone here who would say they prefer the DCC option of receiving a named file and then opening it with a file viewer, rather than simply dragging the file into the chat window and having it appear instantly to everyone on the channel. The existence of that person is not interesting to me.


yeah, can you script tcl into slack?

IRC usage stats are really bad. Steady decline from 1 million users in 2003 to 400k in 2012. In a time where we're talking about communication apps with hundreds of millions of users, not even having a million is pretty telling to me.


A lot of IRC usage used to be purely social. So the fact that that are lots less users isn't really indicative of anything in the context of FOSS development.

Indeed, in the same time period I think Freenode actually grew.

Good point, usage for gaming has also died completely. Old networks like QuakeNet existed to allow gamers to co-ordinate match making. Now who needs that?.

IRC population has also become harder to track because more people now set up cottage networks that have one server and only host a few channels. There was an article a few years ago discussing this exodus from big networks which I'm having trouble bringing up now.

The worst that can happen to IRC is something like Usenet's death - growing too popular to scale. But scaling isn't of primary importance because a network hosting 100,000 channels is only mildly more convenient than 100 networks hosting 1,000 channels each. Nobody wants a chat stream that looks like a popular Twitch channel, because there is no longer any signal when that happens, so big channels are outliers. (And Twitch chat is IRC-based itself - demonstrating how much this technology is a commodity.)

IRC isn't going to stagnate completely until people decide to give up on text-based chat. The main thing it has trouble with is new client features like inline images.

IRC's userbase is consolidating around the OSS crowd, hence Freenode exploding in popularity while other networks falter. Unlike regular consumers, OSS people understand the value of minimum-common-denominator networks, interoperability and openness.

When most people will do all their chatting in Facebook or Slack, OSS developers will still use IRC.

Things decreasing doesn't necessary tell anything worthy. IRC is less used, but it's still used, and used a lot, and guess what, one can find a lot and lot of very rare and interesting people and data there. All of this without heavy hardware nor software requirements, or even psychological, it's still the same old IRC system, no change required.

>Unless you run a private IRC server IRC has a long, tortured history of design-based security difficulties.

So run a private IRC server? This is a weird caveat, like complaining that angelfire is an insufficient web platform and you have to run your own http server to do well. There are a billion IRC clients, libraries, and bots out there. There are IRC servers in most distros. There are JS servers in NPM. Why not use them?

Companies are using Slack because they explicitly don't want to have to deal with this and would rather someone else take care of their chat infrastructure, and with more features.

Absolutely. My company uses it (among other things) for handling production issues.

We'd rather not manage that ourselves. It's just one more thing we can screw up.

This is different than the FOSS subject of the article, but it true that convenience is compelling.

If it's just infra management you want, then use Hipchat. It does the same things Slack does, at $2/user/mo instead of $8. Slack is ridiculously expensive.

It's only expensive compared to HipChat which is a subsidised gateway service that leads to Jira. Our company used HipChat for about a year before moving to Slack. Honestly, the differences are not many and any reasonable team could choose either.

I think we migrated to Slack for connectivity reasons, fonts and general user interface, and the bigger list of integrations. Are these worth $6 per user per month? If you've got the money then maybe. But it's by no means a given.

And that's what I meant by "among other things".

Originally, we were using Campfire.

As needs grew beyond just putting out fires, we looked at Hipchat, Flowdock, and Slack. We probably would have gone with Hipchat (because of the price), if they had SSO, or better JIRA integration. Slack had both.

I highly doubt that slack has more features than IRC, which has thirty years of history in dozens of code bases. I agree that taking a canned solution is easier, and easier is often best. But I think this is the main reason slack is popular; its less to think about. There are many dimensions in which it will be worse.

So use grove.io

My company runs our own private IRC server on an EC2 instance and once it was set up I don't believe we've needed to touch it since.

Your company puts private information on a server that has a 6667/tcp sitting out on the Internet?

I'm guessing it does not, and setting this server up was considerably more irritating than just spawning off another t1.micro and apt installing IRC onto it.

We have all our instances in a VPC so nothing is available without a VPN. (Openvpn, on phone, laptop, built into the wifi router for everyone else). Once any service for our firm onlt is set up it is effectively private it we manage our keys. Private IRC is a one line apt get on a server. Close to zero cost from there.

Explain why that's any worse than putting private information on a server on with port 80 open. Go!

In AWS t1.micros don't really exist anymore (they do, but you have to use oooolldd images), and except for legacy accounts, a default install puts you into a VPC where the instances are never going to have 6667 open to the internet unless you specifically open it (well, that's more of a Security Group thing) and possibly don't even have a public IP address. :)

So put in an iptables rule that restricts it to their network and make people remote in to use their client. Done and done.

iptables rules are not magic security talismans.

Oh yes they are you just need to add the --rabbit-foot switch.

True, but for this case it's more than adequate. An attacker would need to be able to tunnel through your companies network, and then what? Assuming they're that far, who cares if they can read what you talk about on IRC?

And even then, they'd further need to exploit some vulnerability in your IRC server to do it unnoticed.

How very lucky of you.

I hope you have a repeatable provision, AMI, static IP linked to a tcp loadbalancer and autoscaling group in the event AWS rotates out your instance.

And of course, the same goes for your logging and search and file sharing infrastructure. And of course, similar caveats exist for the database said features use.

If your file sharing infrastructure is limited to what Slack provides, then your file sharing infrastructure sucks. Slack is good for quick "check this outs", but it's not a file sharing system.

Well, you add the google docs integration, or the dropbox integration, or the box integration, or use the Zapier integration to tie things together.

Slack isn't a file sharing platform, it's a communication platform. As such, they try to make communicating about, discovery and grouping of files in dedicated file sharing platforms easier.

That's a terrible solution for anyone handling data that has to remain on-prem, which is the case for a lot of large corporations that deal with financial data, personal id data, etc.

Of course it's a bad solution in that case. You've picked a case where a specific business requirement precludes using an external service. In which case, why would you use slack anyway, since it would then necessitate a chunk of your communication be external as well?

how very sarcastic of you.

This is the realm of systems administrators, if you can't read a 20 line config file then sure, run slack..

but for a biggish company that values security and publishes NDA's like mine, an IRC server is a better solution.

however, Project Managers fucking -love- emoji and sending word documents across the planet.

How very decisive of you.

And you'd take on the burden of constellation of comparable services as opposed to a white label hipchat because....?

But I like the Emacs shortcuts! And "buffer" is a sensible way to describe an opened file. It has worked for decades and will continue to work for decades more! Get off my lawn, whippersnappers!

I, for one, think that reinventing the wheel is a totally great idea and that we should have more npms and less apts

The ICB people thought the same thing about IRC.

The HTTP people thought the same thing about AOL.

No, they didn't.

This is more truthy than actually true.

I, for one, think that the march of technological experimentation and progress should stop unless we can convince specifically jarek of the value of any given project, as jarek has demonstrated that they want to become the arbiters of all value judgments.

Yes. My first verdict: outlawing files and having VC land come up with a replacement product with better UX. Then HTTP.

Since we're talking about FLOSS here, why HipChat? Might as well go with Zulip which Dropbox just open-sourced.


> Oh, and did you know that with modest, low volume channels (>200 <1000, some networks tolerate more) you can make IRC networks struggle? Turns out that their lousy distributed design hurts more than helps when single channels get heavy.

source? or at least names of networks/IRCds?

freenode at least has 19 channels with more than 1000 users currently, and one with just barely more than 2000.

    ##linux        2072 :It's official! We're now Linux.Chat! | Channel website: http://linux.chat | Pastebin: http://paste.linux.chat | Spammers or trolls? use !ops <troll's nick> <reason>". | For op assistance, join ##linux-ops | Feel at home and enjoy your stay
    #ubuntu        1798 :Official Ubuntu Support Channel | IRC Guidelines: http://ubottu.com/y/gl | IRC info: http://ubottu.com/y/irc | Pastes to http://paste.ubuntu.com/ | Download: http://ubottu.com/y/dl | Currently supported: 12.04 LTS, 14.04 LTS, 15.04, 15.10
    #python        1763 :Don't paste, use https://bpaste.net/+python | http://bit.ly/psf-coc | NO LOL | Tutorial: http://bit.ly/MCAhYx | New programmer? http://goo.gl/c170V | Specify 2.x or 3.x in your question | Find your local User Group: http://goo.gl/S1Zsq | #python-fr #python.de #python-es #python.tw #python.pl #python-br #python-nl #python-ir #python.it #python-ro #python-india #python-hu #python-dev
    #debian        1707 :Debian 8 Jessie released! /msg dpkg jessie ; /msg dpkg wheezy->jessie ; /msg dpkg install jessie | current point releases: /msg dpkg 8.2; /msg dpkg 7.9 | NO FLOOD: /msg dpkg paste | /msg bots NOT people | offtopic: #debian-offtopic | testing/unstable: #debian-next (irc.oftc.net) | chanlogs: /msg dpkg irclog
    #archlinux     1655 :Welcome to Arch Linux World Domination, Inc. <+> Be kind to the people who are helping you. Be kind to the people you are trying to help. <+> FOSDEM 2016 participation! https://lists.archlinux.org/pipermail/arch-events/2015-October/000544.html <+> Yes we know about Twitch
    #freenode      1566 :Welcome to #freenode | tor-sasl is offline until further notice | Staff are voiced; some may also be on /stats p -- you can /msg us at any time | FAQ: https://freenode.net/faq.shtml | Channel guidelines: https://freenode.net/poundfreenode.shtml | Blog: https://blog.freenode.net | Be nice!
    #haskell       1505 :http://www.haskell.org/ | https://wiki.haskell.org/IRC_channel | Paste code/errors: http://lpaste.net/new/haskell | Logs: http://tunes.org/~nef/logs/haskell/?C=M;O=D http://ircbrowse.net/day/haskell/today?mode=recent | http://reddit.com/r/haskell | Administrative issues: #haskell-ops | Hackage status? http://status.haskell.org | http://downloads.haskell.org
    #Node.js       1252 :Can't talk? Get registered on freenode (http://freenode.net/faq.shtml#nicksetup ) | Current Stable v5.0.0 (LTS: Argon v4.2.1) | Mission Statement: http://bit.ly/node-irc-mission-statement | Info: http://nodeirc.info | Logs: http://logs.nodejs.org/node.js/index | On codes of conduct: http://j.mp/1RFlyvr http://blog.izs.me/post/30036893703/policy-on-trolling
    #go-nuts       1242 :isgo1point5.outyet.org | golang.org | known issues: golang.org/issue | channel log: botbot.me/5/log | don't ask to ask; just ask | ʕ◔ϖ◔ʔ | gophercon2015 videos: https://goo.gl/vKWB3Q
    ##javascript   1207 :Can't talk? Get registered on freenode (HOWTO: http://freenode.net/faq.shtml#nicksetup ). | ECMAScript, JavaScript. JS *not* Java. | Say "!help" (or ask and wait). | Say "!mdn abc" for docs on "abc". | Don't paste code in the channel.
    #git           1169 :We use git, but don't be a git. Help given and wanted, or just gorge on candy | Current stable version: 2.6.2 | Start here: http://jk.gs/git | Getting "cannot send to channel"? /msg gitinfo .voice | Beware the git-reaper this Hallow's Eve: he comes for your rebases
    ##security     1152 :Computer & Physical Security http://fnsecurity.org/ http://ow.ly/gsVTo | Type !op to summon staff - Be nice or GTFO. -- Toothe is seeking his stalker from a security presentation on Oct 27!
    #bitcoin       1126 :Current v0.11.1 | DO NOT POST ADDRESSES | uPnP vuln: https://bitcoin.org/upnp-vulnerability | https://bitcoin.org/ | bitcoin.com is SCAMMY | https://en.bitcoin.it/wiki/Faq | No pricetalk (#bitcoin-pricetalk), ads, trading (#bitcoin-otc), begging, altcoins | Web wallets will probably steal your money | URLs are often MALWARE
    #ansible       1123 :Ansible - http://docs.ansible.com *** 1.9.4-1 has been released - https://groups.google.com/forum/#!topic/ansible-announce/r_uNM1lWlAE *** Ansible 2.0.0 beta 2 is ready for testing - https://groups.google.com/forum/#!topic/ansible-project/krpeTwi3mpo
    #gentoo        1103 : Gentoo Linux Support | Can't speak? /j #gentoo-ops | long pastes: dpaste.org | masked by license? http://x.vu/WgxYLs | | Unworking hibernate and suspend? emerge -1 upower-pm-utils | firmware not loading? http://goo.gl/MzVLBN | perl conflicts? http://goo.gl/n1FMk8 | Be nice! http://xrl.us/kftd
    #bash          1082 :FAQ: http://mywiki.wooledge.org/BashFAQ | Guide: http://mywiki.wooledge.org/BashGuide | Ref: http://gnu.org/s/bash/manual | http://wiki.bash-hackers.org/ | http://mywiki.wooledge.org/Quotes | Check your script: http://www.shellcheck.net/ | Mailing list: https://lists.gnu.org/mailman/listinfo/help-bash | Devel: http://xrl.us/bmodjy
    ##networking   1074 :Computer Networking | If you have a question, just ask it! | Please don't paste - http://paste.debian.net | M = mega = (10^6). m = milli = (10^-3). Mi = mebi = (2^20). B = bytes. b = bits. | Vendor Help = #$vendor | pastebin iptables-save | Why aren't you using IPv6 yet? | IP address classes died in 1993 | VPNs were not designed for anonymity https://goo.gl/iLyXUP
    #vim           1050 :Can't Talk? Get Registered on freenode (HOWTO: http://ur1.ca/90niw) | Vim 7.4.900 http://www.vim.org | Don't ask to ask! | Use :help and :helpgrep | WIKI: http://vim.wikia.com | PASTE: http://vpaste.net/?ft=vim | DONATE: http://www.vim.org/sponsor
    #puppet        1000 :Puppet Enterprise 2015.2: http://puppetlabs.com/puppet/whats-new | Puppet 4: http://bit.ly/1fCLbPX | Help: http://{ask,docs}.puppetlabs.com | Beaker users read this! http://bit.ly/1zE2DYU | Bugs/Improvements: https://tickets.puppetlabs.com/ | Logged http://bit.ly/11ifvbU | Community guidelines: http://bit.ly/1wTNy65 | PuppetConf Videos http://bit.ly/1NWiHQb
now, the volume of chat may be too much to read for some people, but that's not an issue with the protocol.

Unfortunately, there's little correlation between the number of users joined to a channel and its communication volume. My experience is that the amount of actual communication in IRC tends to be low; many channels have a large user contingent that's simply silently parked there in some dormant screen or tmux session.

We nearly broke EsperNet with about 500 users which were proxies into Minecraft servers. We used a Minecraft mod called EiraIRC. The constant connection and traffic from these users required a fair amount of interaction and management between us and the staff. And Espernet is not a small network by IRC standards.

The problem is that all traffic has to be carried to all nodes brokering connections for a channel. When you have a LOT of traffic this gets onerous.

You CAN scale these channels. But it requires some experience and most people never even consider that there might need to be action taken. The Freenode admins know what they're doing, and I respect them enormously for keeping freenode as responsive as it is on what amounts of a 25 year old, bad implementation of a distributed algorithm.

EsperNet server administrator here. You did not 'nearly break EsperNet' with EiraIRC usage. Our capacity vastly exceeds our load (we could likely run the entire network from a single one of our servers). However, the time our administrative team has to spend differentiating abusive bots from non-abusive ones is finite, which is why we place so many restrictions upon bots.

I do not doubt you.

But that's not what we were told. Another admin from espernet basically had us kill the project because they said the way Eirc was using the system constituted a "significant load" and "would not scale well". We were growing really fast and proxying maybe 3-10 users per bot connection on average. I think your team came to us with the problem right as we were really exploding with users.

We basically massively scaled back that deployment of a really cool and interesting feature. Because we didn't want to be an undue burden on our gracious hosts. Now you tell me that this was just some admin giving us an exaggeration?

That's a very frustrating detail to learn. Probably not your fault, but thanks for the clarification I guess.

There are many issues that prevent us from easily serving your use-case, unfortunately. I'm not completely sure about the details around this specific case, but historically we've had to restrict connections from similar software that makes N:N connections (or even N:M connections) to our network due to our connection limit rules quickly becoming unmanageable. We've recently implemented new software that should make this a little bit easier for us (and we've accordingly started being a bit more lax about it), but this is a fairly recent development.

Additionally, we hesitate to cater to this use-case as it often ends up turning into "we want your network to relay messages between our bots" instead of "we want to talk to other people". We've found that channels used for such bots are typically not sufficiently staffed and frequently a target of abuse, which ends up taking network staff time to resolve.

Lastly, we've had a number of technical issues supporting certain pieces of IRC client software. Older versions of EiraIRC in particular have some nasty bugs; the worst of which is that they tend to get stuck in some state where they hold multiple connections to the network open while continuing to attempt to connect again and again, with no delay. While this doesn't impose load that our servers can't handle, it does generate a lot of administrative log traffic that is bogus and dilutes important log traffic.

Many of these use cases can be covered by IRC, but our network isn't configured to handle such use easily as it often looks very similar to the sort of abuse we usually deal with. The common denominator in most cases like this is that it's taking too much of the staff's time and attention to support the channel and its clients. Our time is finite, and for the health of our network, we'd rather say "no" to a few channels than to make all channels suffer from thinner network staff resources.

I am intimately aware of the EiraIRC bugs. I helped diagnose the cause of more than a few that we relayed back to the mod author.

Personally, I think that you're describing a lot of limitations that we nearly crashed into with the specific implementations of EsperNet at the time. I think if a more modern system were brought to bear on the problem, they wouldn't exist. But that's all speculation; I don't know EsperNet's current or previous software well enough to say with certainty.

I don't want to sound ungrateful. What we had, and what we still do have to a lesser extent, was amazing. I wish we could have scaled it, because it was well on its way to being a 40000-user-a-day connected gaming chat network expressed via the in-game chat of Minecraft.

Sadly, that's the nature of prototypes and free software. I was willing to work on EiraIRC, but the author... seemed uncomfortable with the idea when we approached them. It's... a strange corner of the world that Minecraft modders live in.

Everything you've said in these past few comments basically boils down to:

"Your use case would basically break EsperNet (but it's because of our implementation! We have a lot of issues with our implementation but they're not because IRC can't handle it!)."

If the protocol's limitations mean that their use case is not viable due to the strain it places on the administrative side, it's still a limitation.

I read that more as: "your use case looks like the way people attack our network (and people actually do attack our network). It is too much work to enable your bots to run what amounts to simulated attacks, when what we want is a network for people to communicate with each other".

It certainly is a limitation, but any kind of service needs DDOS mitigation.

Why did you write this post?

Considering World of Warcraft guild channels have a configurable "message of the day", I kind of assumed all WoW chat was IRC. I'm sure they break 1000 users in a channel without problems.

Not to snark, but my Linux systems also have a configurable message of the day that gets displayed when you SSH in or log in on the console. :)

Are these limitations in the protocol, or just in the network, especially freenode? If someone were to run a paid, $5-a-month to run a channel with over 20 users IRC network, would they be able to address the difficulties of freenode and EFNet before it? Would SILC fix anything?

Why would this even be desirable?

All of the complaints about IRC relate to service interruptions, channels with a high # of people slowing the server, security, etc. You can fix those things by running a private network, but not for free.

Maybe because it's even cheaper than paying the monthly subscription of a single slack user?

If IRC were good enough to handle the needs of small software company communication

No one's arguing against using it for your company. Ok, the article is for some reason, but that doesn't invalidate the main point.

> If IRC were good enough to handle the needs of small software company communication, people would use IRC.

Given A and B, if A were good enough, people would use A... What if B is better? What if both are good enough?

You go on as if your first sentence stands up on it's own. It makes no sense at all.

> Given A and B, if A were good enough, people would use A... What if B is better? What if both are good enough?

Prior to Slack existing, lots of people who now use Slack weren't using IRC, because Slack offers a lot more.

Everyone I know working in academia or on a startup that uses any kind of instant chat uses Slack. None of them previously used IRC for the same purpose.

And it's just _obvious_ why, once you've used Slack for a while. They're quite different -- IRC is a protocol for real-time discussion on the internet. Slack is a business tool that incorporates real-time discussion.

> it's just _obvious_ why

Uh, nope. Most people use communication platforms due to network effects: because they were invited to use it, because their friends/coleagues use it. Slack is no different.

Considering Slack is a per-organization service with minimal cross talk between organizations, your premise seems flawed.

I mean, Slack appeared on scene after many other technologies existed. People recommend it for their friends because it works well. There is no global network effect at play.

I don't think his point needs Slack to have a global network effect built in. I'd assume that, usually, a small handful of people in an organization decide on using Slack. Once the choice is made, network effects lock members in. Assuming the average org has 20 people or so, probably 90% of Slack's users are probably thanks to network effects.

> Prior to Slack existing, lots of people who now use Slack weren't using IRC, because Slack offers a lot more.

Wow, going off the deep end here. Unless you are a time traveler, there is no way to not use IRC because of slack, 'prior to slack existing.'

Allow me to shout into the void for a minute here...

1. Slack is a well-designed interface for allowing teams to communicate via chat.

2. Slack is easy to install is use on Mac, PC, iOS, and Android. It Just Works™.

3. Slack doesn't require me to install IRC somewhere. Which also means I don't have to worry about how people gain connectivity to said server when outside the office.

4. Slack has whimsy. Fun colors, messaging, emoticon, bots, etc.

All of this is what folks in this thread seem to be missing. I've used IRC for a very long time, but have NEVER been successful at getting wide adoption of IRC for communication.

I am well aware that I'm trusting a third party with out information. I'm aware that alternatives exist and you can get them to work. That doesn't matter when I have to try to explain to my CEO how to /join #channel.

There is a reason why IRC, a widely-available, chat solution that has been available for decades didn't catch on. It has nothing to do with how well the software moves messages from one computer to another.


Slack and IRC have two different (but interconnected) use cases. I love IRC, and I haunt a couple servers to chill or to ask an occasional newbie question. I'm pretty comfortable with IRC; it's a part of my culture.

I often find myself needing to establish a line of communication between people who aren't particularly tech-savvy. Slack works excellently for this: I make a new team, fire off some invites, and everyone just understands how it works. I can only imagine that, say, coordinating dev, corporate, and sales over IRC would be like living in the same circle of hell cardinally occupied by people who talk at the theater. If IRC works well for your team (whatever it is), excellent! Don't try to fix something that isn't broken. Slack isn't flawless, but it does have its usecases, and it fills them very nicely.

> 1. Slack is a well-designed interface for allowing teams to communicate via chat.

subjective. I consider a bloated web interface taking several tens to hundreds of megabytes of RAM compared to a text-based interface taking less than 100 kB to be poorly designed.

> 2. Slack is easy to install is use on Mac, PC, iOS, and Android. It Just Works™.

spelled wrong, and IRC clients are harder to configure only because there are so many options for servers, whereas Slack only supports one server.

> 3. Slack doesn't require me to install IRC somewhere. Which also means I don't have to worry about how people gain connectivity to said server when outside the office.

webchat was invented for a reason

> 4. Slack has whimsy. Fun colors, messaging, emoticon, bots, etc.

IRC has had mIRC-style colors supported and even adjustable by the majority of clients for at least 10 years. I don't know what "messaging" means. If you mean "private messaging", pretty much every chat software in the world has that. AOL and ICQ have that. You can put emoticons in your text manually if you want. It was on IRC that the concept of chat bots was invented, not on Slack.

> There is a reason why IRC, a widely-available, chat solution that has been available for decades didn't catch on. It has nothing to do with how well the software moves messages from one computer to another.

Yes, it is about how much money a for-profit company has to spend on marketing and copy as opposed to a standards organization.

This whole response reads like it was written in the 90's. Most people don't care if something takes up 10's of MB's of RAM when new PC's are shipping with 16-32GB standard.

Your comparison of what amounts to ASCII art versus Slack's rich-media embedding reads like it is straight out of a Fortran developer's "I'm still relevant" handbook. You even offer up AOL and ICQ as counter examples!

If we're going there, I guess we should simply assign everyone a GUID and be done with it, right?

HMU on ICQ: 110339943

> Most people don't care if something takes up 10's of MB's of RAM when new PC's are shipping with 16-32GB standard.

ISTR a -now undoubtedly outdated- answer to a question that was very much like "Why will there not be a real Photoshop clone for mobile devices in the near future?". One of the striking things to come out of the analysis was that -absolute best case- you got something like ~300MB of RAM (and -common case- ~100MB) to work with before you got unceremoniously killed.

I would hope that now you can reliably consume ~500MB of RAM per app, but... that's still a far cry from what you can use on a "real" PC.

Unfortunately, memory usage still matters. :(

people will care when things consume memory when you consider that chrome takes 2G by itself, xcode/VS take on average 2-4G on-top.

everyone thinks memory is free but machines are still shipping with 8G in the mid-high end.

Fortran is still relevant. In it's field.

Up until very recently Slack had spent essentially nothing on marketing. It spread because, in the words of pg, they built something people want.

How recent is "very recently"? I've been hearing ads in the podcasts I listen to for something close to a year. Prior to that, slack was only something I had seen in HN titles, and even then I had never once clicked on one.

I like slack, I think it's a great product. On finally watching their video and installing it, I immediately saw the draw, it's basically IRC with lots of usability enhancements and a lot of easy-to-configure bots available with a click or two. That said, it took me months or ads to finally take a look, but I did because the advertisements let me know that it was a possible solution for the problem I was dealing with.

It may have spread because they built a good product, but I think it's equally important that they actually exposed a lot of people to information about it. Your great product will die if nobody ever sees how great it is.

alright, then replace "marketing" with "pretty pictures and rounded corners".

Isn't this roughly what people used to say about Apple?

s/used to//

There have been plenty of very nice looking IRC clients over the years.

Most non-technical users don't care how much memory their chat client takes up as long as it works. They also don't care what server they need to connect to as long as they can communicate with the people they need to — less is more in this case.

Slack has its fair share of flaws but design and ease of use are not among them.

Please for the love of god just don't use Slack.

We have learned absolutely nothing. Let's all jump on the bandwagon of another closed-source, proprietary, walled-garden service and hand over all of our private intra-company communications to a private third-party in another country. GREAT IDEA.

Agreed, but with that said... IRC has serious issues, and dancing around them or pretending they're not there is not helping. I talk a bit about them here:


The reason Slack exists and can be so successful yet entirely proprietary is a symptom that IRC is not good enough and that has to be fixed. It is the manifestation of the papercuts we, IRC users, have been having for a long time now. (late edit: If you are interested in fixing this problem, email me, see my profile.)

There are very promising efforts on IRCv3 (http://ircv3.net/) ongoing. I hope they eventually go live to the bigger clients and networks so that we may actually have a good foss alternative to slack (and I don't mean something like Mattermost. Like SirCmpwn said some comments below, having one browser tab per project REALLY SUCKS when you contribute to a lot of projects. I'm in over 20 channels myself, and I do my best to keep that number low...).

I really resonate with this position. IRC is open source and it has had problems FOR DECADES. IM programs from third parties add genuinely useful features which people clearly want. So rather than call for a general boycott of Slack (a negative approach) why not call to fix IRC?

IRC is just a well-established and battle-tested server/client protocol. I'm eager for the day when a competing open source server/client protocol emerges and takes over. I imagine all it would take is a really good reference implementation server and client that everyone can just start using, right?

It's a well-established shitty protocol, largely designed in the early 1990s as the simplest thing that could possibly work for the workloads we had in the early 1990s. It's terribly limited (7 bit, small message sizes, virtually no useful metadata) and in the 98% use case, its "distributed" characteristics cause more problems than they solve.

No competent person setting out to design a group communications protocol in 2015 could honestly say they'd use IRC as a starting point.

Mostly correct, but one nit to pick: IRC is not 7-bit; you can actually transmit unicode messages on every IRC network I've ever seen. It's also not usually unicode-aware, though, so if you send a message too long, it might get truncated halfway through a codepoint. Many IRC networks prohibit non-ASCII channel names and nicknames to prevent impersonation (e.g. with zero-width spaces).

The rest of what you've said is pretty much true.

IRC messages have CRLF message delimiters (and ASCII space field delimiters) and no quoting mechanism in the protocol. They're delivered over a long-lived synchronized TCP stream. Does it just happen that no 8-bit sequence people normally want to send on IRC ever manages to collide with 0D:0Ah?

I haven't seen unicode messages on IRC channels, but I don't spend much time on IRC anymore, and so this is interesting new information for me --- but there's more to being 8-bit clean than simply supporting internationalized character sets.

> Does it just happen that no 8-bit sequence people normally want to send on IRC ever manages to collide with 0D:0Ah

This is not possible on a technical level, having nothing to do with IRC itself, but instead written into the encoding design of UTF8.

First of all "7 bit" physical communication never really existed in the age of TCP - the protocol has always moved 8 bits at a time around. The "7 bit" era refers to nobody actually agreeing what codepoints within x80 ~ xFF actually mean. This is even partially true today - not everything has agreed on speaking UTF8 (hi Win32 APIs).

On the actual point of why neither 0x0D nor 0x0A will ever "manage to collide".

In a single-byte encoding (called codepages, https://en.wikipedia.org/wiki/Code_page#Noteworthy_code_page...) 0x0D always means just that, as pretty much all ASCII-derived codepages do... well, respect ASCII ( note - this does not touch on the horror of EBCDIC, which is alive and well today (2015) too ).

In the case of UTF8 any continuation byte can only carry values in the range of \x80 ~ \xBF, and any leading byte can carry values in the range \xC0 ~ \xF7. So no matter how you slice and dice things, the resulting UTF8 will have every ASCII character meaning itself (this includex \x0D and \x0A ), and the only ambiguity when mistakenly treated as any single-byte encoding would be in the "what do we do with the upper 7bit range" part ( \x80 ~ \xFF ). More info here: https://en.wikipedia.org/wiki/UTF-8#Description

True, other multibyte encodings are not so convenient: for example \N{MALAYALAM LETTER UU} ( http://graphemica.com/%E0%B4%8A ) looks really bad CRLF-wise in both UTF16/UCS2 an UTF32.

But this is why UTF8 "won" for all intents and purposes. And this is also why "escaping" is not necessary under virtually any modern environment, so IRC lacking any such mechanism is not really relevant.

( No opinion worth sharing on the rest of the article/discussion ;)

Yeah, IRC is generally UTF-8 with some Windows-1252 mixed in.

Shift-JIS is still the most common encoding for Japanese channels (but not being able to embed ODOA isn't an issue there either).

I certainly think having an open source reference implementation for a 21st century (and by that I mean having features like Slack or Yammer or other popular closed source packages) implementation of a successor to IRC would be the minimum starting point.

IRCv3, which I linked, is what you want. It builds atop the IRC protocol to extend it. It is backed by various servers and clients alike.


They need help, go check them out.

From what I've been able to gather, the open project that is most like Slack, but also offers self-host, decentralization is Matrix:

There's also Zulip, which as far as I can gather, is battle-tested, but does not have a strong story for federated servers, nor a good out-of-box experience for really small servers:

Finnaly there's https://tox.chat -- which doesn't have a lot of the things IRC/Slack has (it's focused around p2p chat) -- but extensions are planned, for eg. persistent group chat. Perhaps most excitingly "new" of the three, which predictably is both a good and a bad thing:

For those that "want Slack", but self-hosted, open/free software server -- I think Matrix is the most viable alternative -- if IRC is seen as not good enough.

I've not included any XMPP servers, although eg. Prosody should be simple to set up and use -- because, apparently like IRC, it has too many problems for people to actually embrace out-of-the box XMPP for team chat. The fact that most big public services that host XMPP tend to favour anonymity probably has something to do with the fact that getting reliable server-side message logging and off-line messaging is still not as easy as one would expect, for any(?) of the big free XMMP daemons (or indeed support client side).

[ed: Matrix also have some support through bots/plugins for IRC bridging: https://github.com/matrix-org/matrix-appservice-irc ]

Actually, bridging is actually a first class citizen in Matrix - it's why the project's called Matrix (as we want to go federate/matrix together all the existing silos out there). Current bridges include:

* IRC (https://github.com/matrix-org/matrix-appservice-irc)

* Slack (https://github.com/matrix-org/matrix-appservice-slack)

* Verto (https://github.com/matrix-org/matrix-appservice-verto) (for talking VoIP with FreeSWITCHes)

* Respoke (https://github.com/matrix-org/matrix-appservice-respoke) (for talking VoIP with Asterisks)

* Purple (https://github.com/matrix-org/node-purple/tree/master/appser...) (for talking through to Skype, Facebook, XMPP, ICQ, AIM... and anything else that libpurple supports)

...and a whole bunch of 3rd party ones too like https://github.com/SkaveRat/xmpptrix. Some of these are pretty beta, but they're all headed in the right direction. The IRC and Slack ones are the most mature.

Glad to hear that you think we are on the right track! [Disclaimer; i work on Matrix]

There is also RobustIRC which does away with netsplits:


IRC is just a well-established and battle-tested server/client protocol.

Every time it loses another user to a proprietary platform, it loses another battle. Is that what "battle-tested" means?

IRC lacks a viable attached business model. In fact the act of writing robust services that empower users with data portability and privacy does not appear to have a sustainable model at all currently. I don't know if the current situation is a transitory phase or if this is how large systems will be built in perpetuity.

By "battle-tested" I meant it has lots of patches/updates to the protocol to protect against certain kinds of attacks. Any new protocol would have to go through the same "battle-testing" before it would be reliable enough.

What is wrong with Mattermost? I've never actually used it, but it seems like a better OSS slack competitor than irc. If it really is just the problem of 1 project per tab, surely fixing that minor issue is easier than a whole new IRC spec?

It's the other way around: Mattermost has a ridiculously small userbase, compared to IRC. IRCv3 is compatible with IRC2.1. It's a lot easier to extend the IRC spec than it is to write competing software.

irccloud.com (disclaimer: I'm a subscriber) addresses a number of the deficiencies of standard IRC.

A lot of the other deficiencies are a consequence of any decentralized, open resource, due to "tragedy of the commons" effects. Those will always require active admin participation to resolve.

Freenode sometimes does get a lot of abuse, which is a shame. Some networks definitely do have better anti-spam and anti-botnet functionality, but I don't think most users ever even notice this. Even on Freenode, most channels will go without problems like botnets or channel takeovers for most or all of their life.

If you're running your own irc server, you'll probably never notice anything. If you do, it's as simple as adding a server password (or maybe even changing the default port among some other settings), and anything unwanted will likely be a thing of the past (assuming you don't have dedicated people attacking you).

On your comment about IRC bots and services, networks don't see that as something that is up to them. If something requires a U:line or other network privileges, then it's up to the network staff to implement that, sure, but anything else is for their users to do. If IRC networks were for-profit, maybe you could expect them to have things like this and advertise how amazing all of their features are to potential clients. But IRC is nothing but a money sink for everyone involved, and there's therefore often little incentive for networks to implement and integrate a lot of bots and functionality that aren't integral to network operation.

Apart from this, spam is a really hard problem if there are resourceful people dedicated to it. Email has existed for even longer than IRC, and despite absurd amounts of work into anti-spam systems and functionality with it, it's not too surprising when spam manages to finds its way into your mailbox.

I still agree there's a lot of room for improvement, both at the protocol level and at the user level, though.

> it's as simple as adding a server password

is there a way for me to, instead of using a server password, use something like OAuth so that I can grant access to the server based on my companies central login database? otherwise, every time someone leaves the project, we have to rotate the server password...

I don't see why it wouldn't be possible, however, using OAuth would probably need some nice integration on client side you'd have to provide. Maybe just login to the server using your credentials and authenticate via LDAP?

You can require SASL and build on that, but I don't believe there's any prebaked solution to that problem =/

So use Rocket.chat or Mattermost

> Let's all jump on the bandwagon of another closed-source, proprietary, walled-garden service and hand over all of our private intra-company communications to a private third-party in another country. GREAT IDEA.

Well said, I chuckled. Let me just add something...

If you want a paper trail of anything, use an email you own.

I have a friend who was locked out of a startup's Slack right before he was due to be paid for three months of work. He had been discussing business inside of Slack, and instantly lost access to all of those messages.

Could this have happened if the startup used a private email server, or a private IRC server? Of course. But if they were using more open protocols, he would have at least been able to back up the messages. Slack provides an easy tool for backups to admins, but not for normal team members. Slack provides an API for all users, but team admins can disable the API. Slack also allows team members to connect over IRC and XMPP, if team admins turn on that feature (https://slack.zendesk.com/hc/en-us/articles/201727913-Connec...).

Slack is great, I love using it. Just remember who owns the data. Always use your own personal email if you want to create a papertrail, as my friend found out.

Uh, in both cases "not the user", your friend using any other system unless he decided to back it up would have been locked out anyway unless he was using a localised system like POP3... Most systems allow admins to block/prevent data exports one way or another. He could have copied and pasted the slack history if he wanted a copy as easily as he could have backed up gmail / irc / etc....

I think your argument is somewhat null....

> We have learned absolutely nothing. Let's all jump on the bandwagon of another closed-source, proprietary, walled-garden service and hand over all of our private intra-company communications to a private third-party in another country. GREAT IDEA.

So don't use AWS or Google App Engine or Heroku? etc. Why?

I use Facebook for a lot of my communications. Seems to be working out OK so far.

Use the tools that help you get your work done efficiently. Consider the long-term consequences, of course, but if someone took all of my Slack team messages and told me I couldn't have them back, I'd be annoyed but it wouldn't affect my productivity much.

OTOH, losing the ability to coordinate via Slack, as you're suggesting, would certainly lower my productivity.

> So don't use AWS or Google App Engine or Heroku? etc. Why?

Leaving aside that there are extremely valid reasons not to use those services, communication is a huge deal. Can you imagine if email was a walled garden?

I don't know how "proprietary" or "walled-garden" it is, but I can connect to slack using open-source "irssi" on linux.


I feel like that has to diminish the walled-garden, proprietary weight at least a little bit if slack & irssi can communicate. And it works over SSL too. Once I started doing that, I didn't mind using slack. You have to "/ignore" certain server messages though or your whole screen will be spammed with them and you'll barely see the stuff people are saying.

Slack may have a working IRC bridge, but it still has a closed-source server. You're still trusting a third-party with all your data.

Also the IRC/XMPP bridge has to be specifically enabled by a team admin. After this, the bridge can be disabled at any time by team admins.


> another closed-source, proprietary, walled-garden service and hand over all of our private intra-company communications to a private third-party

Amen to that. Our company yet to transition away from using Salesforce, but we greatly restrict its use for the reasons above, and one day will move completely away from it.

Not only is there IRC, which many people have talked about, there is also chat over XMPP, which is how I prefer to use slack. The alternatives are worse in connectability, because they restrict you to one narrow range of clients and protocols, instead of letting you choose the right client for the job at hand. People use services like slack because they don't want to have to give a shit about communications, they just have something that works.

And you used to be able to get an RSS feed from twitter. Things in walled gardens tend to have a habit of disappearing when interoperability no longer seems to be in the proprietor's interest.

At which point I'll reevaluate the use of the application and potentially move elsewhere. FOSS developers pull these kinds of things all the time as well. Look at the cessation of interoperability after Lennart Poettering decided to "deprecate" consolekit in favor of the non-interoperable systemd. Or they'll stop development of software, like RedHat decided to cease development of the Insight Debugger they gained control of after they bought out Cygnus. The FOSS world is chock full of the same kind of silly, shady underhanded behavior of the rest of the software world.

And you were fully welcome to continue the development of ConsoleKit if you wanted. Slack, on the other hand, can hold all your important logs & metadata hostage.

Completely different situations. Neither of your examples could sanely be described as shady or underhanded - neither of them gave the producer a business advantage it wouldn't otherwise have. FOSS developers don't owe anything to you - they don't have to continue to develop your favourite feature for the rest of their lives. They do however give you the freedom to do that yourself.

So you don't use GitHub or Bitbucket, then?

I use github for contributing to open-source projects where I want it to be public and accessible.

For everything else, including at work, I/we use privately hosted solutions like GitLab, where we control our own data.

This is one of the better reasons for opting for open-source alternatives to new technologies.

If you have a single person that is even slightly technical, it should be trivial to set up your own IRC server, and then you get complete control over all of your own information.

Even with that, you still can choose from a multitude of servers, services, clients, bots, client scripts, bouncers, and so on. Anything common you want to add on after that point has likely already been written for what your purposes (and is of course open-source), whether it's a git commit bot, a logging/relay bot, or even end-to-end encryption (even after TLS). It's even quick to write custom IRC bots for arbitrary purposes if you use a framework or copy some example code (even without that, it is only so bad).

> If you have a single person that is even slightly technical, it should be trivial to set up your own IRC server, and then you get complete control over all of your own information.

That's a pretty narrow view of 'slightly technical'.

These days, we've got generations of people who can manage their own email account setup, install web apps and mysql databases, configure zapier to connect multiple apps together within a few minutes. I know dozens of people who do things like this all day long for their clients.

I'd call all these people more than "slightly technical", but there's no way on earth they'd be qualified to set up and administer an IRC server.

You need far more than "slightly technical". "Slightly technical" sets you up for disaster. And... it's not 'trivial' to understand what's going on and how to manage it.

I agree, though, it should be trivial. It's just not.

I think the meaning of "slightly technical" on hacker news should be a bit more than an enduser skillset.

Technology isn't easy. Pretending it should be causes problems.

somewhat agreed, but I sort of think folks here get a bit insulated and have an inflated view of what "trivial" is. I've done a lot of sysadmin stuff for years, and web work for 20. Setting up an IRC server for me would not be 'trivial' either. Earlier this year I was told by several people that setting up an icecast server was 'trivial' too - anything but, ime.

It's the sort of thing that's really easy to do poorly. I can skim ircd docs and get something running, but making sure it's set up correctly and securely is another thing entirely.

Good luck pretending than "setting-up your own IRC server" is easier than not having to care about such a thing, and that most people really enjoy to have to "choose from a multitude of servers, services, clients, bots, client scripts, bouncers, and myriad of bots" instead of just going to https://slack.com/downloads

The article does not even discuss the fact that projects that opened a slack community with a big increase in their audience. Apparently audience is much less important than purity.

You're correct, I understand why most people don't want that, and thus also why Slack is so hugely popular. I'm primarily thinking about technical people who actually do want this (such as what's referred to in the article, people working on open source projects or who otherwise require things not offered by slack).

You underestimate how much effort it is to mantain a service running. I setup a irc logger for React and it would go down every other week, I was pinged at random times by people saying it was down and either needed to drop everything I was doing to fix it or let it be broken for a while.

I want to spend my time working on React, not be a sysadmin for the irc bot. I switched to botbot.me and it's been always up and with a much better interface :)

Services went down for me sometimes on a private IRC server. I setup a cron to check for failure and start if needed. Took 10 minutes.

> If you have a single person that is even slightly technical, it should be trivial to set up your own IRC server, and then you get complete control over all of your own information.

I'm "slightly" technical and I have absolutely no interest in setting up an IRC server for my project or company. That's time better spent on developing our offerings. While I have no doubt I could set up a server, I also have no doubt that setting it up and maintaining it would drain time unnecessarily.

It's the same reason that I don't advocate for most people to maintain their own servers in 2015.

Sure, but ve55 said "trivial", not "interesting" or "worth the time." It just means that you value your data and its ownership a certain way and your time a certain way. Also note that a for-profit company will have that balance in a different spot than a FOSS project.

To be clear, I don't think it is "trivial." I am technical and I definitely don't think setting up and maintaining a usable IRC server is trivial.

I agree with this completely. I hate that we now have SO many competing protocols that do basically the same darn thing and NOBODY wants interoperability!

What, exactly, is going to go wrong with this?

I really don't get this, 99% of the stuff you use everyday is closed-source and proprietary. Most often the tradeoff in something bad happening (which has yet to be with Slack) versus having a functional and productive system is more than worth it.

Or do you also build your own computer from raw silicon and communicate with pirated radio signals?

> 99% of the stuff you use everyday is closed-source and proprietary

This is Hacker News; I expect the average to be around 20%

As usual, I'm (not) surprised by the downvotes but no real exposition here. What's the collective freakout over what Slack is going to do? So the features and user experience aren't worth it? Why isn't everyone on IRC then?

If some basic programming chat about an open source project isn't safe then we should all throw away our phones and turn off the internet immediately, but I don't see that happening. This is basically bikeshedding on how to run open source projects.

Some open source self-hosted alternatives to Slack:

* Rocket.Chat (https://rocket.chat/)

* Zulip (https://zulip.org/)

* Mattermost (http://www.mattermost.org/)

* Let's Chat (http://sdelements.github.io/lets-chat/)

Oh, and by the way, you could have your own Rocket.Chat instance running in Sandstorm in about 30 seconds: https://sandstorm.io/apps

Update. And I would love to see a modern federated chat protocol to take off. Something like http://matrix.org/.

Not sure why I would want to self host what is effectively a phone system. I have actual products to build. We could ease time self hosting source control as well -- to what end? I have members of the team spending time (and thus money) setting up something that pleases people philosophically but really adds zero value -- in fact, it actually costs money (through very expensive developer time.)

I don't get the point of complaining about Slack. It works great, it's simple to use and it has an amazing feature set. IRC is pretty terrible. Try doing a drag and drop file transfer. Try using markdown. Try displaying images inline.

I don't get what the problem is with closed source Slack. Do we avoid the phone company because their software is closed source? There comes a point where this FOSS obsession sort of jumps the shark. Worrying about a 'walled garden' for a chat tool is kind of silly. If it bothers people so much, create a FOSS Slack with the ease of use and setup and maybe people would be more interested. But anything that requires me to 'self host' something that amounts to a service means that is a bad use of time. I can pay the Slack guys to maintain chat while my devs work on maintaining our products. IRC is terrible. Try and get someone from your marketing department to use IRC. The neck beard and almost hipster pontification about the 'bloat' of Slack is kind of ridiculous. We have better things to worry about. Slack works on all my devices perfectly. I have a searchable log of everything. I don't have to think or worry about anything. It's simple and works. Until there's a viable alternative that exceeds Slack's ease of use, that's what I recommend people use.

> IRC is terrible.

I didn't mention IRC in my comment :)

It's interesting how you compare Slack with a phone company. There are important differences between Slack and a phone company. 1. If you give me your phone number I could be talking with you in a few seconds without me even knowing the name of our phone company. 2. You could decide to change your phone service provider and (in some countries) even keep your number.

How would you do these things with Slack? Slack is great, and I like it, but it could stop being great at some point in the future.

(Yes, I realize that Rocket.Chat user couldn't chat with Zulip user, for example. That's why I'm excited about efforts like https://matrix.org/.)

I agree with you: it's expensive to self-host. [1] But when it is possible to self-host, you could hire a specialized company to host the chat system for you. And - if you are careful - you can later switch your chat-system-hosting provider if you want.

[1]: That's what https://sandstorm.io is trying to fix, by the way.

> Not sure why I would want to self host what is effectively a phone system

That's an interesting parallel. I suppose it would technically be possible for a company to out-source their internal phone system to an external third-party using VOIP. But I've never seen it done and I don't know how I would persuade a CTO that it's a good idea to make internal communication reliant on the Internet.

Yet companies are falling over themselves to out-source internal IM... why?

> Not sure why I would want to self host what is effectively a phone system.

Because you work in an industry were security matters. Such as banking, healthcare, government, government contracting, or any business with more than a couple hundred folks.

Because you provide support and want to customize / integrate that with rest of your data/systems to provide superior service to customers.

Let's chat: no mobile, no push notifications. Very fancy and not so useful UI (imho).

Don't know others yet, thanks for the list.

Rocket.chat has web, iOS, Android, Windows, Mac, and Linux clients, with push notifications.

I haven't figured out how to get the iOS client to connect to a custom chat server. It seems to only support the main rocket.chat server.

Unless things have changed, you have to recompile the mobile apps with the address of your own server and distribute them yourself.

> Update. And I would love to see a modern federated chat protocol to take off. Something like http://matrix.org/.


On my last evaluation, I found the two most interesting to look at matrix and tox.chat. But in the context of a slack-alternative, matrix is definitely the one to look at. Also has an IRC bridge: https://github.com/matrix-org/matrix-appservice-irc

As for XMPP, I think it is still entirely viable as an alternative to using a brand new protocol and brand new clients and servers. But if you want solid off-line messaging, server-side logging and scalable group chat -- there aren't any out-of-the box combination of free/open servers and clients that will work, as far as I've been able to figure out. I assume one would want a solid command line client, solid gui clients for Windows, OSX, Linux/BSD, Android, iOS and Windows phone, along with a good web client.

I don't think you can pick-and-choose a XMPP server and clients that will provide all that, today. It is certainly possible to make that, standing on the shoulders of various open projects -- but the effort would be anything but trivial. I'd be happy to be proved wrong, though!

Unfortunately XMPP didn't take off. Notice how it's nowhere near as ubiquitous as email and web standards. Also notice how nearly all modern chat services don't support XMPP. I'd argue there are technical reasons for this situation. Try searching for "XMPP" in this thread for details.

Except WhatsApp and until recently, Google Chat / Hangouts.

Yes, thank you. But none of them support XMPP federation (only Google supported it the past).

And I would add Facebook to your "until recently" example.

These services don't want federation. At all.

XMPP is an awful soup of incompatible servers and clients, though.

You can also host your own Rocket.Chat instance on their infrastructure by going to https://rocket.chat/deploy. There you can deploy it as https://[your_instance].rocket.chat which is pretty cool.

Matrix looks interesting!

It is reasonable to raise the point that building FOSS software while using a closed piece of software as a core tool bears consideration.

However, I am 25 and largely missed the boat on irc. I decided to start using it ~1 year ago. It is hard to use, but we will look at that in a minute. Often, we assume people have as clear an idea of what we are talking about as we do. That is often not the case. Let's explore IRC now.

* Integration has never been a problem ... build bots.

I feel silly and naive, should I know how to set this up? Maybe it is really easy and well documented, and I am an edge case here, but i don't know how to do this. I clicked 3 buttons to setup github for slack. It was very easy and I didn't haystack through building a solution to something that exists. Scope creep on tooling is dangerous as an aside. Thos takes that off the table.

* persistence

again, I have to set up an alternate tool to download the content. i assume this would backup the whole channel so any user could reference it, but it comes by default for free with slack. if each user must have a seperate tool, or go to a seperate place to see a conversation (which may be less searchable) it adds friction.

* code snippets

actually super reasonable to use pastebin. slack is at least as annoying for code as pastebin, if not more.

* etc

The point is, not everyone lnows as much as the author about IRC who is likely quite a talented developer who grew up on it. An 18 year old likely won't have used irc as much as older generations given the plethora of tools and chat clients.

FOSS is a choice and a philosophy and that should be given some degree of consideration. Utility, workflow and getting new devs onboard and contributing is important. I agree with the author that it bears consideration, but slack or hipchat are much easier than IRC.

It's worth mentioning that Zulip (https://zulip.org/) is a new open source option that has basically all the features IRC/Slack does. So using open source tools for open source development doesn't have to mean dealing with IRC's limitations.

(I'm one of the Zulip maintainers; happy to answer any questions about it).

I've been meaning to give Zulip a try. How many users can it handle?

Less importantly: What would you say its biggest missing feature is vs Slack? And conversely what does it bring to the table that Slack can't touch yet?

I'll field the latter. I've used both Zulip and Slack in small team (5-20 people) settings and I much prefer Zulip.

In particular I like how the zulip UI is single-stream by default. Messages from different channels are interleaved, so you can read all new messages at a glance, but still well separated by visual elements including color - I don't find it confusing. And I can focus down to any particular channel , or reply to that channel, in one click.

It goes all-in on this "many streams, one view" model with the concept of topics - lightweight "subject headers" for individual sub-streams of a channel. This neatly avoids the "two conversations at once" problems that can occur in other systems occasionally.

Some more minor points are a wider range of markup available than slack (including syntax highlighting for code), and better support for short-lived private groups (ie. "a PM between Alice, Bob and Charlie")

As to what I think Slack does better: More one-click integrations (and likely other backend admin stuff that I don't see as a simple user). AFAIK Zulip doesn't have an irc gateway. Also when I last used it (over a year ago) Zulip's mobile client was quite poor.

I'm sure others can come up with more differences - to be honest I tend to treat slack as "slightly smarter irc" so I don't pay attention to all the bells and whistles.

Finally I should caveat that these same features I like are things people dislike about Zulip - it's more dissimilar to existing solutions and people will always have their preferred ways of doing things. I personally find Zulip amazing for me.

FWIW Zulip does have a beta-quality IRC gateway (bots/irc-mirror.py); anyone interested in working on improving that should check out this issue: https://github.com/zulip/zulip/issues/249

I especially like the concept of topics in zulip. It helps maintain different subjects in a given channel, which is way more readable imo. I'm a big fan.

Other answers address the big user experience advantages (e.g. threading) that it has over Slack, but there's a bunch of smaller features we have that I don't think Slack does (e.g. you can configure regular expressions to automatically linkify patterns like T123 to link to your bug/ticket tracker).

In terms of features Slack has that Zulip doesn't, I think the biggest ones are features that Zulip has today on zulip.com (which isn't taking new users) but you can't easily setup for your own Zulip server (e.g. the Android app doesn't support talking to a custom server without patching it yourself, mobile push notifications aren't available with your own server, etc.). Contributions on those things are welcome -- they're all relatively easy problems for someone with some mobile experience.

In terms of features that aren't just missing configuration in the run-your-own-server model, I'd say the biggest one is that Slack has a really slick onboarding experience and it has more slick integrations. It's hard to compete on onboarding with a company with like a hundred engineers, but I don't see the integrations piece as being a long-term advantage for Slack -- they're easy to write and I expect the open source community to produce a lot of them for Zulip over time.

IMO, push notifications for mobile applications is a big hole. It's not an easy problem to solve, but as of right now I believe you have to release your own flavor of the mobile applications for this to work.

Yeah, the mobile apps support that on zulip.com but work needs to be done to make that work with running your own Zulip server...

I'm excited about Zulip as a Slack-style tool, especially for teams. (Separate from the discussion of whether FOSS project collaboration should be Slackish or IRCish.)

Are there any plans to support multiple teams / multiple servers from the native client? This is a particularly acute pain point on mobile; I'm reluctant to promote any tool that requires me to be logged in to only one project's instance of the tool at a time, because if it works well, it gets adopted for other projects, and then I'm having to juggle clients. I am unfortunately on two projects that use HipChat, and even there it's a huge pain that I can't be logged in to both simultaneously on my phone. (Some of their desktop apps finally support multiteam which is a huge help, but I still have to pick just one to participate in on mobile..)

Slack isn't perfect, but at least all the native clients will let me be logged in to 5 teams at the same time. (And no, opening multiple browser tabs is not an appropriate solution - it doesn't work at all on iOS, for example.) And obviously, this is something IRC does a great job of as well.

That isn't currently supported since it wasn't super important before Zulip was open sourced a month ago, but I definitely consider it one of the major problems that need work for both the desktop and mobile apps.

Very glad to hear that!

> basically all the features IRC/Slack does.

First, let me say that I'm really happy zulip was opened up, and grateful for you and your team to support it.

But does Zulip support server federation? Obviously slack doesn't allow self-host, so if slack is the alternative, that doesn't really make much of a difference. But that is one feature that http://matrix.org/ does support.

Just to say - we would love to work with Zulip to federate it into Matrix :)

Ping me over email (tabbott@mit.edu) and we can discuss; I'd definitely like to add a federation story. Haven't looked at Matrix's technical approach before...

do you have an android sdk that someone can use to integrate chat into an app ? I'm kind of comparing you to Pubnub or Pusher.

Ehh, as someone your age (a couple years younger even), I have a completely different take on IRC.

It's incredibly intuitive because it's so similar to all the other chat clients we grew up with (presumably because they're based on IRC).

Sure, figuring out bouncers and build bots is a little tricky at first, but so what? That's the fun part. It's kinda fun digging into the IRC protocol and figuring out how it works.

And ok, if that's not fun for you, there are plenty of really "click and install" tools for you (e.g. ZNC is super easy to setup).

Not to sound like an elitist prick, but if you can't figure out how to setup an IRC bouncer, I'm not sure I really trust you contributing to the linux kernel, yaknow?

Reducing friction is great: But the kind of friction we should be trying to reduce is bureaucratic friction. Throwing out PRs and yelling at people because they forgot to cc some particular maintainer - that's the kind of friction that sucks. Having to setup an IRC bouncer? Idk, I think that's fine.

Same age group: Which chat systems were similar to IRC, but not to Slack, outside of IRC clients?

And just because someone doesn't want to spend the time fiddling with IRC bouncers, IRC bots, getting clients to display things nicely doesn't mean that they are a bad developer. Just that they have different priorities for their time than you.

I'm not saying that Slack is perfect or frictionless, but neither is IRC. And especially if you don't do it all the time, getting people set up to work with Slack is way easier than IRC.

I really find these discussions half amusing and half depressing. 2 sides have something that is "good enough", both insist that nearly all you want can be solved with their solution, especially if you just do X1,X2,X3,Y1,Y5, and Z4 and you technically could build something that is perfect for both on top: but sadly (and understandably) no-one actually cares enough to do so. Because what they have is "good enough"(TM).

> Which chat systems were similar to IRC, but not to Slack, outside of IRC clients?

Slack is very similar to IRC at its core, so I'm not sure I see what you're asking here. I meant that IRC isn't foreign or alien to anyone who's familiar with chat clients - the basic concept of servers and channels and nicknames is pretty universal.

> And just because someone doesn't want to spend the time fiddling with IRC bouncers, IRC bots, getting clients to display things nicely doesn't mean that they are a bad developer.

I feel like I covered this point already:

> And ok, if that's not fun for you, there are plenty of really "click and install" tools for you (e.g. ZNC is super easy to setup).

> And especially if you don't do it all the time, getting people set up to work with Slack is way easier than IRC.

What are you referring to here by "getting people setup"? Like a corporate environment? It's fairly easy to setup bouncers and the like in a corporate environment using tools like chef, etc. I really don't feel like this is a strong argument for a corporate setting.

If you mean on a personal level for individual contributors to get up and running on contributing to FOSS, sure it's not 100% frictionless - but pretty much. Again, there are lots of bouncers that can be setup with <5 commands.

If the argument is that it takes an extra ten minutes to install ZNC vs. Slack, then I dunno - I guess I don't see that as very much friction when the tradeoff is using non-free software.

> I really find these discussions half amusing and half depressing

I feel the same way, but for different reasons. It's a little depressing to me how averse people are to spending 10 extra minutes to use FOSS, usually under the guise of "I have different priorities." I thought developers in the wild would at least be slightly more willing to invest the time, especially post-Snowden, to use FOSS. I guess that was just a college pipe-dream of mine.

I meant that software can be a philosophy or a project, and where you land on this concept will inform your decision making process. I agree with your above comment and don't find it contradictory to mine above.

Some great tools for software development:

* Microsoft * OS X * Linux * Free BSD

To some degree that represents a spectrum and I don't fault the author for having strong beliefs about how software should be built, and agree with them for the most part. I think he could have made a stronger point generally from a philosophical and technical angle, i.e the regular arguments for open source tools, and highlight Slack as an example.

IRC is quite similar to Slack, but for the reasons the author suggests, it is different.

tl;dr Stallman wouldn't use Slack.

I don't think you sound like an elitist prick, but rather the kind of person that enjoys tinkering with technology for fun. Perhaps unfortunately, this view is no longer representative of most people working in technology, and definitely not all of the users of Slack.

I think that's true, but I also think it's a little silly to contribute to FOSS but be unwilling to spend the extra time to use FOSS.

I guess it's kinda just sad to me that you'd be unwilling to spend the time to use FOSS while you're contributing to FOSS. If it was incredibly costly, sure, but IRC? I dunno.

We're interested in tinkering with a lot of technology. We're not interested in tinkering with boring (admittedly a very subjective judgment) technology like a chat server.

Good call!

Given how terrible the HipChat client is on Windows, it's really saying a lot that people end up choosing that over IRC.

Maybe Freenode could implement an enhanced IRC protocol and clients could opt-in to that.

I know at least one project that was very active on IRC, and they moved to HipChat for convenience. They also went full-on with the entire Atlassian stack (again, the fact anyone would choose JIRA is damning against everything else.)

I actively avoided IRC for years. I still avoid it whenever possible. And I've been developing and sysadmining for the web for more than 10 years now.

Frankly, it boils down to that I just don't like it. I'm more interested in getting better at programming, or learning about containers, or some other useful thing, than trying to figure out IRC's odd interface. Chat isn't something I should have to think about. It should just work.

So, I agree with most of what @vonklaus said, and disagree with the links pro-irc stance.

I've never used Slack, so I have no opinion on it.

You can master IRC with a few basic commands. In fact I rarely have to use anything more than /join, /leave and /msg <someone>. /me <some text> for announcing an action. That's about it.

(It probably helps that a lot of in-game chat interfaces use a lot of these same commands, as I'm a gamer as well as a programmer.)

There's a pretty nice web interface to IRC called irccloud.com which also persists your connection (so you can simply log onto irccloud.com somewhere else, and entire history is preserved).

For buildbots, it's not that hard. See http://docs.buildbot.net/current/tutorial/index.html

Instead of using slack, use IRC Cloud.

Does IRC Cloud allow new employees to get the entire history of the channel? I can't see how it would from looking at its page.

I don't believe so, but you should look into IRCv3. We need to fix this problem at the root.


That page/project desparately needs a bullet point list of what it wants to fix with IRC.

Agreed, but here is the list of specs: http://ircv3.net/irc/

I don't understand what on that page would let you read messages people sent while you're not connected, or let you participate in IRC over an unreliable connection such as a mobile network.

Or use Quassel (an open source project very similar to the proprietary IRC Cloud) and you can easily import the entire history of a channel into the backlog for a new user.

I’ve done exactly that.

Why do people talk like this is some impossible feat for IRC?

1. Have a bot that's in the channel from the start

2. cd into the bot's log directory and type python -m SimpleHTTPServer

3. put the url into the channel topic

How do some developers fail to rise up to this level of problem solving? I am amazed.

What if I didn't have the foresight to put that bot into the channel in the first place?

Or what happens when the bot goes down? So now I really need to build some alerting into it so that someone can restart the thing when it dies, or the server is upgraded, or it's moved.. because I'm losing valuable history along the way.

Or I can just use Slack.

The snark about developer skill is an interesting one, as you failed to actually solve the problem in your hypothetical.

Seems you've only explored failures for the IRC option.

What happens when Slack closes? Or they change their payment plan? Or they decide that they don't like your project? Or they're acquired by Microsoft and stop supporting your OS? What if a rogue Slack employee spies on your chat and steals your secrets?

So slack manages everything for you with their service. They ensure their logger is always running, their web services is always available and a Miriam of other things.

What you want is to outsource your messaging service. If you want this to be managed in-house, you must monitor the service as well. You can outsource IRC as well however, and they'll manage the boys and infrastructure for you.

Not sure if I understand what the issue truly is here!

I'm a developer. The problem is not that I'm "failing to rise up to this level of problem-solving". The problem is how much free time I have, and whether I can afford distractions from my main project to fiddle with IRC and get it to do what I want.

We use Slack because "it just works". You get invited, you join, and BAM! You're done. There is one uniform client for all platforms and a bazillion integrations already developed for you. And creating your own is usually a simple matter of sending a POST request to a channel's webhook using a unique token.

Essentially it comes down to this: IRC is a protocol that requires a fair amount of research and configuration to make it do exactly what you want it to do. Slack is a product that comes with the vast majority of features most teams need. That's why a ton of people are gravitating towards the latter.

But that's substantially less useful than Slack's search utility. Believe me, I've spent my fair share of time grepping IRC logs and it certainly works up to a point. What you describe is a pretty lightweight, low-utility solution (are you really going to download six months/a year/10 years worth of logs and depend on your browser's search?).

Plus, keep in mind there are other people besides developers. There are product managers, UX engineers, designers, translators, and any other number of people who might not be familiar with grep and would otherwise not need to be. Assuming that only developers need to chat is pretty naive.

Can it be done? Sure.

Should I take the time to create a solution that not only works for me, but is a pleasant user experience for my entire organization? That is a piece of work that is bigger than "python -m SimpleHTTPServer".

Or, I can trade money for a team that is actively solving the problem already.

Or, people who care could get a group together to tackle the inadequacies of IRC for the business use case as mattermost is trying. But let's not pretend that IRC fits the Slack use case well.

> How do some developers fail to rise up to this level of problem solving?

It does seem to solve the problem of how to set up a channel log in IRC but I sort of find this quite a narrow redefinition of the problem. The problem could also be:

* What is the best technology to use for collaboration?

* What kind of software and tooling is in line with our project philosophy.

I don't find either this comment, nor the one it is in reply to something that can be applied more generally. This is, at best, solving a problem that is a component of a much more expansive problem.

Why do you want that? At my company I don't think anybody has IRC logs enabled, and it is highly suggested that you don't do so - chat, much like real life conversations, is inherently ephemeral.

I can't tell you how many times I've went back and searched for a solution to a similar issue we had six months ago and solved it through collaboration in slack.

Should this end up in a separate wiki? Maybe. Will it? Not always.

I wrote a bot to serve log history search requests in my local IRC channel, because I got tired of fishing through my logs on behalf of other people, who wanted my history for basically the same reason.

At which point I got tired of whitelisting people instead, after abuse issues compelled me to disable anonymous access...

Neither does Slack, unless you pay.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact