

Show HN: Subway, a persistent web client for IRC - thedjpetersen
https://github.com/thedjpetersen/subway

======
akavlie
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/>

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

~~~
thedjpetersen
Should be back up.

------
thedjpetersen
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.

~~~
pavel_lishin
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.)

------
nuclear_eclipse
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/>

~~~
akavlie
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.

~~~
nuclear_eclipse
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.

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

------
wickedchicken
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.

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

~~~
wickedchicken
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...

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

~~~
wickedchicken
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.

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

~~~
nuclear_eclipse
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>

------
ds206
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.

~~~
akavlie
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.

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

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

------
davidcollantes
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.

------
switz
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.

------
nextparadigms
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.

~~~
akavlie
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.

------
mattdeboard
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.

------
daleharvey
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

~~~
akavlie
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.

------
hikkymemo
Why not <http://qwebirc.org/> ?

~~~
akavlie
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>

