Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Subway, a persistent web client for IRC (github.com/thedjpetersen)
84 points by thedjpetersen on March 1, 2012 | hide | past | favorite | 38 comments



The other collaborator here. I started with a similar client called web-irc, to make a better open source web IRC client. I combined forced with thedjpetersen because his tech stack was almost identical. And it looked better, to boot :-)

Tech used: Node.js, node-irc, socket.io, Backbone.js, and MongoDB for optional message logging on persistent connections.

Feedback and contributions welcome.

This article is linked to the github repo, but you can use the client directly here: http://ridezap.com:3000/


I had tried to setup web-irc previously. It was just so sensitive to particular library versions, I never got around to getting it working.


The screenshots looks really beautiful. Unfortunately the demo link seems to be down at the moment


Should be back up.


One of the collaborators here. Subway came to me as an idea a few months ago when I heard one of my co-workers trying to explain how to set up screen and IRSSI. The project has taken about 3 months to complete. There is still things to add like better IRC support and search.

A quick disclaimer the logo right now is a Gowalla Icon, this is only a placeholder I am working on designing a new logo.


To me it looks like a G train - which is notorious in NYC for running behind an already crappy schedule. (The local nickname is the Ghost train, though it's apparently gotten better recently.)


Not to be negative, but what does this have that couldn't be done better with ZNC and a proper IRC client? I get a persistent connection to the IRC server, logs and push notifications to my phone when I'm not connected or paying attention, and I can connect from as any IRC client I want to, or connect from multiple clients simultaneously. [1] Granted, the web client does look really really nice, but as a whole it seems like an inferior solution to me.

I would really love to see that web client made so that it could connect to any server or bouncer, and not just your own proprietary backend.

1: http://noswap.com/articles/irc/


Main advantages are:

  1. Accessible to those who don't have expertise or interest in setting up their own IRC bouncer
  2. Usable from any web browser
  3. More friendly UI
  4. Usable by sites that want a chat room for their users (look at twit.tv -- embedded IRC client front and center).
There is no proprietary backend; the whole client, and the library powering it (node-irc), are open source.


Sorry, perhaps "proprietary" was a bad choice. What I meant was that I would appreciate if the web client itself didn't require or rely on the nodejs/mongodb backend, and could instead operate directly on top of an IRC server or bouncer.

Ie, I would like to run your web client on my machine, have it connect directly to my IRC bouncer (or directly to a remote IRC server), and not require a local database to use it. I'm interested in using it as just another IRC client that connects to my IRC bouncer, rather than it being my primary IRC client. From what I see, this isn't possible.


I would have loved to have this when I worked at a company that only allowed HTTP(S) through the firewall.


My point is there are already plenty of pure web IRC clients that don't rely on a local database; none of them (that I've seen) have any sort of nice interface like this does. There are also plenty of applications that will proxy non-HTTP connections over HTTP proxies. Corkscrew [1] also allows you to tunnel SSH connections over HTTP proxy, and you can use SSH to tunnel just about anything else you need.


I'm aware there are other solutions. Compared to all the work I did to properly tunnel SSH over HTTPS (it was a pretty good firewall, apparently), deploying a node app is trivial.


If you (still) think a IRC bouncer is a good tool then you'd be surprised by something like quassel :)

http://quassel-irc.org/


I actually looked into Quassel a while back, and although it looks interesting, the biggest issue I had with it was the apparent inability to mix existing IRC clients into a Quassel setup, not to mention it lacks a unified set of notifications.

With ZNC on my server, I can connect any standard IRC client to it, whether its Irssi or Weechat running in screen on my server, Xchat on my desktop machines, or AndChat on my phone. I also receive only a single push notification to my phone when I get mentioned or PMed, and can literally connect from anywhere to respond.


Looks a lot like Alice: https://github.com/leedo/alice which powers http://usealice.org


YES. This is exactly what I've been planning in my head since IRCCloud doesn't seem to be handing out invites. Too bad this is in node/mongo otherwise I would love to contribute.


What tech stack would you use, if you built a client like this?


It has less to do with technical reasons and more that node (and javascript in general) rubs me the wrong way. If the tech works for you then roll with it. Personally I think go works where node is often used, but fits my style of development better.

Not to throw more feature work on you guys, but I always thought it would be neat to have an IRC client email you if someone mentions you while you were away...


The majority of the code is in the front end... so even if you go with a different backend, you have to learn to love JavaScript when doing a project like this ;-)

JS used to really irritate me, but I've grown to appreciate it quite a bit after learning its idioms and getting more practice.


Use a bouncer like znc (or this) and you don't have to get emails, it'll just be there when you get back


I'm thinking more of a notification. Imagine monitoring a product support channel: if someone mentions you you want to know about it so you can pop into the channel if needed. I don't want to stare at a chat screen all the time.


If you have an iPhone, you can use ZNC and Mobile Colloquy to get push notifications on highlights.


Alternately, if you don't like Colloquy or don't have an iPhone, I wrote a module called ZNC Push that works with multiple push notification providers, including Boxcar, Prowl, and Notify My Android. I'm also happy to integrate more providers if someone has any requests.

http://noswap.com/projects/znc-push/ or https://github.com/jreese/znc-push


This is already a solved problem. Even emacs has notifications for IRC.


This same idea was my excuse to learn javascript/node :) I went the "re-invent the wheel" route and skipped node-irc and Backbone for extra javascript fun.

The interface looks good from the screenshots but how well does it work on a phone? For that reason I went with a minimal terminal-like interface to make it possible.

I will check this out tonight. Good job.


Haven't done any work (yet) on a mobile interface. I think it would scale down pretty well by simply cutting out the sidebars past a certain screen size threshhold (via media queries), and making them dropdowns or something at the top. I'm not a designer though, so making that look good is the challenge.


As soon as I fix the issues plaguing me from installing the dependencies for this, it's replacing Colloquy. Thanks!


If you have any questions about the installation, email me -- akavlie at gmail.


I tried it. Could not get authenticated by nickserv on Freenode, got no replies. If you enter a wrong server (i.e., freenode.net, instead of chat.freenode.net) it continuously tells me the server is wrong, there seems not to be a give up time.

Other than that, it looks good.


I like the interface, and I want to use it, but a lot of stuff seems to be missing, like I'd expect to double click on a user and open a private windows with him. Also most of the commands don't seem to work either.


Yeah, we realize that a lot of functionality and IRC commands are still missing, beyond the basics. It's still under active development, we just decided that it's in good enough shape now to post on HN.

It would help a lot if you could post issues on github for missing features.


There is a lot still missing. Mostly there is just basic command support. Messaging a user with /msg should work.


Wow, this is great!

I had to `npm install` the following modules in the lib directory: connect-assets irc bcrypt socket.io

I'd love to be able to connect to multiple servers and auto-signin with NickServ and such.


For those of you like me who are completely unfamiliar with node, in addition to the instructions on the README, you must also run `npm install` in the subway directory.


Looks nice, I couldnt install the irc module on node 0.4.10 though, if I get time later I will try to get that fixed


I've tried deployment on Nodester, which is running node 0.4.9. It had issues, though not caused by node-irc, as far as I could tell. Best to run it on 0.6 in any event; that's what we're using in development.



Actually, my work on web-irc started originally as an attempt to improve qwebirc. I found the code difficult to reason about, and thought we could do better with a clean start and socket.io-based messaging. So I started my own thing.

See the discussion that spawned the whole thing here: https://github.com/paulirish/lazyweb-requests/issues/31




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

Search: