It's neither free nor open-source and it's cloud-hosted, but IRCCloud (irccloud.com) probably deserves a mention. Like I said, it's a bit of a different solution since it's more than just a client, but what I like about it is that it basically solves every problem a typical IRC user is likely to encounter:
- It stays auto-connected with no configuration.
- It offers a great desktop (web-based) UI, including embedded images, videos, tweets, pastebins, and more.
- It offers fantastic mobile apps for both iOS and Android, for both phone and tablet form factors.
I got to meet some of the IRCCloud developers last weekend at EMFcamp. It's a fantastic app and a much more civilised way of keeping a persistent irc connection than any mix of irssi, shells or bouncers I've come across to date.
The web interface is lovely and the android/iphone apps are extremely usable. Can't recommend enough :)
One more thing:
Freenode has given me about ~20 slots to work with on this demo. If you can't connect, try another network, like `irc.rizon.net` or something.
KiwiIRC uses this protocol apparently. I asked the author about it and they said they have worked out special arrangements with some networks to implement it, and accept connections exclusively from Kiwi, I presume? After all, a password is required according to this spec:
https://kiwiirc.com/docs/webirc
The 20 slot limit being mentioned is just in regards to the demo connecting to freenode. The demo connects to freenode from a single IP address and freenode has limits on how many connections you can have from one IP. It's not something you need to worry about in a normal use-case.
Otherwise I see 4 open source web-based IRC clients with very few regular contributors each. And the only really good IRC web client will still be IRCCloud (which is proprietary).
One way to fix that would be to list a set of features that hipchats, et al. have that are desirable, and then think of the way to gracefully degrade them to plain-text format.
After that, it's just a matter of implementing few plugins for popular IRC clients that would improve the UI of their respective clients to support those new features.
If anyone is going to start such endeavour, I'm willing to put some man-hours (starting next month) into writing plugins for ERC and Weechat.el, and maybe help with others.
If I'm understanding correctly, you're talking about a web chat service with a UI that just uses IRC as a backend to communicate between users? If so, that sounds pretty sweet.
Not really; I was thinking about taking all those Awesome Features IRC Doesn't Have and actually implementing them in various popular IRC clients, web-based or not, in order to make IRC a viable alternative to HipChat, et al. for power users.
Yes, we switched over to Slack from IRC/Google+ at elementary (elementaryos.org) in the early summer. It's been a massive improvement. We're starting to feel the limitations of the free tier though, so we do wish it were a lot cheaper.
I can't speak for him, however as a programmer speaking to other programmers, I find Slack is pretty nice primarily for these reasons:
Pasting code snippets, preserving formatting and getting syntax highlighting.
Pasting screenshots, usually of code, error logs, or graphical bugs.
Inlining code with `def func_name()` or whatever, making things much more legible.
Easily sending files.
Basically all code manipulation at their root.
For actual normal communication, IRC works just as well for me.
If you host your source on GitHub, you should definitely check out Gitter. It's free for public repos and the integration is great; you get Markdown, integrations, IRC bridge, etc. Check for example the Marionette community to get a feeling of it: https://gitter.im/marionettejs/backbone.marionette. Disclaimer: I work at Gitter, feel free to ping me at https://gitter.im/malditogeek
I love IRC but Slack/hipChat has some features IRC can't provide. Especially, the "formatted"/"preview" (images, videos, URL preview, tables) messages.
Even if the IRC client supports some of theses features, the protocol is just text, you can't add meta/structured data to a message.
> I love IRC but Slack/hipChat has some features IRC can't provide. Especially, the "formatted"/"preview" (images, videos, URL preview, tables) messages
Those are all features of the client UI, not of the protocol. All can gracefully degrade to plain text for people whose clients don't support them. Image/video/URL preview is an UI feature over plain link. Tables... those you can either send as ASCII-art tables, or upload to whatever paste service you like (or host) and use the same preview mechanism to show a nice table on your rich UI client.
Along with the image previews, being able to just paste an image into chat (and have it automatically upload to S3) is a huge deal if you're working on anything visual.
Limechat shows image links inline, which is good enough for me anyway. In some ways it is even preferable to tying things to one particular storage solution like s3.
Which is what Slack does, the ideal use case I was describing.
The person I was replying to inquired as to why uploading the image and pasting a link was a problem. He said:
"Limechat shows image links inline, which is good enough for me anyway. In some ways it is even preferable to tying things to one particular storage solution like s3."
But you have to put the image online somewhere before the IRC bot can mirror it, so I don't see how that helps. Here's how I see the comparison:
Hipchat:
1) Paste image
Imgur + IRC:
1) New browser tab/window
2) Paste image
3) Click "Start Upload" button
4) Wait for upload + redirect to new page
5) Right click, copy image location
6) Switch back to IRC
7) Paste URL
I use this somewhere from 10-100 times a day, so it adds up. And it doesn't interrupt the flow of whatever I'm working on, just a single action that doesn't require any thought or aiming my cursor to click on things.
Could I write an automated tool that takes my clipboard, uploads it somewhere, and replaces the clipboard with an image URL? Probably. Or I could use a chat platform that supports images.
Edit: Trimmed one step with copy image location instead of actually navigating to the image
> Could I write an automated tool that takes my clipboard, uploads it somewhere, and replaces the clipboard with an image URL? Probably. Or I could use a chat platform that supports images.
Which is exactly that automated tool, but already written by someone else and embedded directly into your UI. It's not that those images magically go over the wire straight from your clipboard without being hosted somewhere (especially that, AFAIR, Hipchat is XMPP-friendly).
I do understand why Hipchat, et al. are getting more and more popular - I was under contract for few weeks at a place that used Hipchat as a company-wide communication tool and I admit it was super-convenient (as long as your machine had enough free RAM to run it, which wasn't always true; for a chat client, this thing is heavy). But the thing is, IRC could easily be on par with Hipchat-like solutions if someone wrote proper UI extensions to popular clients.
Of course until someone actually goes and does that, we'll be stuck with Hipchats.
> Which is exactly that automated tool, but already written by someone else and embedded directly into your UI. It's not that those images magically go over the wire straight from your clipboard without being hosted somewhere (especially that, AFAIR, Hipchat is XMPP-friendly).
Oh I'm aware that it's not actually a magical feature, it just feels that way from a user interaction perspective. They all go up on S3 and have a text link, which gets an inline picture just like other image URLs.
From what I've heard about IRC, there's not an actual well-defined spec anywhere that all of the clients follow, which I'm guessing is part of why there aren't a lot of better IRC clients being written. It's easier to come up with your own protocol where you understand how it works and know exactly how every client will behave.
I do wonder why there isn't an open source effort for fancy features on top of XMPP. Not enough interest? Most developers don't do visual work and see IRC as "good enough"? Or it does exist and I've just never heard of it?
Then the history if filled with stupid crap and you can't find any useful stuff in it. Stupid text can be easier to jump over, images spanning the whole page can be more annoying.
There's search if I'm trying to find something, but honestly it's easier for me to locate things when scrolling through and there are images. I scroll through as fast as I want and still say "Ok, there's the screenshot I sent of the texture generation graph, the thing I'm looking for was a bit earlier.
I don't see how a giant uninterrupted wall of text going back to the beginning of time is better.
Circa 1994: Even if the web client supports some of these features the protocol is just text, you can't add meta/structured data to a page.
HTTP and TCP are just plane text too. Its what you do with that text that matters.
Somebody just has to find a way to shoehorn it in. I'd propose using a basic system built on top of the basic AK meta-protocol for serial communication.
Hipchat/Slack bring a lot more to the plate than just text chat, I think there is room for a customized IRC system to fill that gap, but it would take a lot, including native apps, notifications and tight control over granular settings, as well as centralized permissions for larger teams.
Of course, nothing is one size fits all. I doubt slack or hipchat could supplant IRC, and I doubt they would try. I was addressing the parent comment - I think the same goes for IRC, a new interface for IRC doesn't negate the niche filled by Slack and Hipchat.
If you prefer something that doesn't force you to go all in, check out Glowing Bear. It's a WeeChat relay client that I've been contributing to. Basically, it connects to your existing WeeChat running on your server, meaning you can continue using that, or use both in parallel. Works great on mobile as well.
ZNC isn't any harder to set up than installing these web clients. In fact ZNC has it's own web interface for configuring it (and does so with a self contained webserver so you don't need node.js / mojo / etc frameworks).
I'm not trying to take anything away from these excellent projects though. Just saying IRC bouncers aren't any harder to install than these projects
There's some advantages to using a web-irc client. You get a clean way of scrolling back through your history. Unread message count is stored server-side. In general the state is synchronised where a bouncer can leave multiple clients out of sync with each other.
I've never had that issue with bouncers to be honest. In fact the whole point of bouncers is to:
1: hide your IP (moot point if you're hosting your own bounce though. And a lot of IRC networks hide your IP for you anyway)
2: offer a way of keeping your history
3: store your unread messages server side.
4: keep all your clients and states synchronised
I'm not saying there's anything wrong with a web client (in fact I'm tempted to try the one submitted here). But I think there's a lot of misconceptions about bounces too.
In an ideal world I'd use both; have a web client connect to ZNC. So I can log onto the IRC client when a guest on someone's PC (eg cybercafe) but also have the ability to use native clients from the same nick for when I'm sat on my own laptop or on my phone (there's some half decent native Android IRC clients)
But WeeChat in a terminal multiplexer + Glowing Bear offers you exactly that. When you read something in Glowing Bear, it is marked as read in WeeChat. You can access it securely from anywhere with any modern browser or smart phone / tablet. When you feel like using the native command-line client, just ssh/mosh into your server and attach to your tmux/screen session. There are other relay clients as well if you want to use those.
(Sync from WeeChat to Glowing Bear and between multiple instances is something we're working towards with the developer of WeeChat)
Why do you guys hate IRC bounces so much? You're investing a lot of time trying to convict me that I should ditch my ZNC and replace it with something that replicates its functionality in a longer winded fashion.
I don't want to run my bounce in a detached screen session, I want a proper daemon. It's easier to install and manage if it's a proper daemon. And if I'm going to be using a terminal based IRC client (which I often do) then I'd be running Irssi.
I don't want your stupid halfway solution when I already have a proper IRC bounce set up that does all that and more.
There are a lot of comments here about how IRC lacks features of HipChat/Slack/whatever. If you want to try going the other way around, here's how to upgrade your IRC to support Jabber (including Facebook chat), Twitter and some other stuff:
> There are a lot of comments here about how IRC lacks features of HipChat/Slack/whatever.
I really don't understand this. What features does IRC lack that Hipchat has? AFAIK, the advantage of Hipchat is the branding, the packaging, and the support.
The one thing I see ("image previews") is a feature of the client, not IRC itself. And many clients used to offer that, way back - the reason they turned it off was because it was a great vector to (e.g.) goatse someone. In any GUI-based IRC client, this is dead simple.
Most of what Hipchat seems to provide is branding and support, and I get that that's very valuable, but I don't see why that needs to be viewed as an either/or situation.
As always, the problem is not technical, it's packaging. Technically IRC can do all that Hipchat does, but Hipchat provides a simple bundle that any team can subscribe to/buy and use for all its use cases. To replicate the same thing with IRC, you'd need bouncers for everyone with full text search capability, a shared history of everything that happened on the server(s) of the network, support for filesharing for all clients, not just the desktop ones, you'd need some serious management of presence and profile information...
Never forget the "Show HN: Dropbox" and its immediate technical rebuttal [0], see where it is now.
Oh and Hipchat seems to do screen sharing, which AFAIK is not possible with IRC.
Looks amazing! My IRC server uses a password however, and I can't see anyway if inputting that. I tried using a straight /connect command, but that doesn't appear to work either. Might have a go at a pull-request!
Ah I was hoping that'd be the case, I tried a few commands that work in other ones, but I'll give that a try! Thanks!
Edit: wait, that's for password protected channels, right? I need to pass a password through on server connection otherwise my ircd boots you off and kills the socket :(
Related question; anyone got a decent IRC desktop client for Windows? I'm using HexChat now, but loved Limechat wayyyy more on OSX. So much simpler/clean.
Well, if you don't mind switching your operating system to Emacs, there's ERC, and if you are willing to run a WeeChat instance on a *nix/Mac/Win+Cygwin machine, you can connect to it with weechat.el. I recently switched from the former to the latter :).
I really like the looks of this! Great work! Might start using it instead of/together with wee chat for the ease of use.
A suggestion - (I know I can just use my own CSS but,) there are low contrasts in the default theme. I usually have very good vision but for me it's pretty hard to distinguish the green from the white background. Maybe you could edit the default colors a bit?
I'm using it now on freenode, so I guess I'm one of the fast 20. My first thought is that this is a really great and simple interface. I'd like to be able to hide the join/part messages, though.
Nice work. Out of curiosity, allowing someone to connect to a service via your servers could open you up to malicious activity. Do you rate-limit users from quickly and constantly opening and closing a connection?
True, but you would only be connected while your browser is open. I think it is preferable to have a client running somewhere on a server and connecting to that. Even better if it's not a third-party server but your own. In the end, what's the difference between attaching a screen session and connecting a web client? I use WeeChat in a terminal multiplexer and connect to it with Glowing Bear.
It would be nice indeed, but one advantage of web-irc clients like this, is that you can run it on a server for people who can't access IRC directly from their location (firewalls, private networks, etc).
For example, I run a web-irc instance for the people on the Montreal mesh network (which runs mostly on private/unique-local addresses).
- It stays auto-connected with no configuration.
- It offers a great desktop (web-based) UI, including embedded images, videos, tweets, pastebins, and more.
- It offers fantastic mobile apps for both iOS and Android, for both phone and tablet form factors.