Shout: The self-hosted web IRC client
shout-irc.com
shout-irc.com
I use vector.im for desktop and matrix console for android.
> Fully distributed persistent chatrooms with no single points of control or failure
but looking at vector.im, channels seem to be based at specific servers, like "#matrix:matrix.org". How does that work? Also, what's the plan to deal with banning spammers and so forth if there's no central control?
The API intro page[1] is a good start. Basically, a client authenticates with their homeserver. Multiple homeservers can "access" a single room. There is a server-server API for synchronization. I don't know how this maps onto vector.im / matrix.org
Lots of good discussion by official devs here https://news.ycombinator.com/item?id=8997844 and https://news.ycombinator.com/item?id=8267610
Spammers: each room can have mods / admins, just like in IRC. I don't know how bans are enforced on a technical level.
I've had a shout server running on my DO droplet for 8 months now, and I've never had any issues.
I run it using nginx and Passenger (and the setup was quite simple, I had never set up a node app in production before doing this).
I used it until I got the crashes just like parent.
http://shout-irc.com/docs/deployment/docker.html
I've seen some projects now even have "Deploy to Heroku" buttons, which is fantastic. I wish Digital Ocean had something similar. Looks like you should be able to run this on a cheap $5 droplet?
Unbounded storage is a leak. What kind of server would one build that would always eventually crash under completely normal usage?
We need an IRC-based Slack alternative badly!
Recently I had the need for a better gitter-irc two-way gateway than gitter-irc-bot. Specifically, I wanted to be able to run multiple mirrors off a single bot/account. I started writing a multi-protocol gateway and the goal was to support slack, gitter, mattermost, irc and possibly matrix with a plugin API.
Here's the prototype: https://github.com/jleclanche/gitterway
It's in python. I started rewriting it in Go and then found out toml support in go was lacking, then I sort of gave up... if anyone's interested in picking it up, file an issue on there!
That author also wrote a test suite in go that compares all the other toml implementations for interoperability. I'd say it's pretty high quality.
I'm kind of un-bullish on toml in general, sadly. I tried toml in a couple of projects, and found for structures nested beyond a certain level, it doesn't really seem all that simple anymore. I ended up going back to json or yaml (only with a parser that doesn't implement most of the fancy features of yaml, for conservation-of-sanity reasons, of course).
Emojis work just fine over IRC, https://i.imgur.com/2EeZYpP.png
Not sure what you mean with "auto expandable URLs", but there probably already exists a script for that.
An Android client, QuasselDroid ( http://quasseldroid.iskrembilen.com/ ), has been my best IRC experience on Android.
ETA is around April.
Disclaimer: Love Shout, just made this
The UI is clean, and once it's up and running the experience is pretty smooth for users. However : - Quite a hassle to install and maintain your own IRC server ... - The server stores everything in memory. Pretty neat the first time you use it, but it tends to leak. - Your user DB is just a bunch of json files, with no extensibility built-in. It could really use a "users" plugin, that connects to an external auth system ...
Disclosure: I'm one of the Kiwi devs.
What utilities were used to build? I see Node, obviously. Socket.io it looks like? Any sort of framework?