Dropbox has open-sourced Zulip(zulip.org) |
Dropbox has open-sourced Zulip(zulip.org) |
Also there is a beta XMPP gateway at bots/jabber_mirror.py that can mirror traffic with an XMPP setup. It's beta because it's kinda annoying to setup; feel free to reach out on the development list for help if you have issues setting it up.
One note is that the a key feature of Zulip is thread-level topics which aren't really supported by XMPP; see https://news.ycombinator.com/item?id=10280817 for more discussion of this.
I just spotted this though: "Currently, the automated Zulip server installation process only supports Ubuntu 14.04 Trusty"
Not at all keen to run Ubuntu, if it was available on CentOS 7 or Debian I'd give it a go but I guess I'll hold off for now.
Prebuilt binaries aren't available quite yet because it's a lot easier to submit to a PPA once you're already open source :)
https://github.com/zulip/zulip/blob/b69c6228af03634061cba29f...
Also, generic webserver-side REMOTE_USER authentication is supported.
Also, how is zulip compare to slack in term of features, stability, pro/con?
I tried search youtube for any zulip demo/screencast, can't find anything - very strange.
https://github.com/zulip/zulip/blob/b69c6228af03634061cba29f...
/etc/ssl/certs/zulip.combined-chain.crt
But nginx looks for it in
/etc/ssl/certs/zulip-combined-chain.crt
Also during your installation you download this deb file to
/root/zulip/python-django-guardian_1.3-1~zulip4_all.deb
But the script then tries to install it from
/root/python-django-guardian_1.3-1~zulip4_all.deb`
https://groups.google.com/forum/#!topic/zulip-devel/8iz25Ad-...
It would be less than a day's work to have it support any additional version of Debian or Ubuntu (precise/wheezy would be quite easy since we've run both in production). It's probably also not hard to support something RHEL-based too but that'd be a bit more work.
RAM usage could also be brought down a lot for smaller environments with a bit of work; most of it is the fact that we run a set of like 15 queue processing workers that each import the entire application.
Where would one start if they were looking to disable that?
If you're interested in helping I'm more than happy to give you a bunch of pointers for how to do it :)
* that Slack was for sale too
* that Dropbox wanted the app, rather than the people who made the app
(1) How Dropbox chooses to satisfy internal requirements/demand for a group chat solution
(2) Why/whether Dropbox should have acquired/acqhired the Zulip team
I sometimes feel like Twitter is actually a better comparison for Zulip than Slack---in Zulip like on Twitter, it's easy to watch and participate in multiple conversations at the same time. Zulip's threading model exists somewhere between Slack's rigid "rooms" model and Twitter's everything-is-public model, so it's much lighter-weight to participate in multiple places at once than on Slack but it's also easier than on Twitter to have the right conversation with the right people without bothering others with something irrelevant to them. And Zulip's threading model makes it much easier to have multiple conversations within the same space without stepping on each others' toes or getting distracted.
Our remote folks rely on it particularly heavily. When Zulip got acquired it was our remote employees and their managers who were showing up outside my cube with pitchforks when I breathed a word of turning it off. It gives folks in other offices or working from home a watercooler and a way to virtually tap a group of coworkers lightly on the shoulder when they need help.
Basically we can't live without it, so I'm super-excited to see it finally open sourced. Thanks for making it happen. :-)
You mention considering to turn it off. Is open sourcing it a way to keep the project going? Any idea how many people at Dropbox will be tasked with maintaining it?
I think my blog post covers pretty well why we open sourced Zulip: https://blogs.dropbox.com/tech/2015/09/open-sourcing-zulip-a....
Hopefully if it's a truly valuable tool it will be forked and audited.
From https://zulip.org/clients.html:
> There's a Linux client, but we don't have binaries posted yet. We hope to have a PPA setup soon.[0] In the meantime, you can clone the git repo[1] and build from source.
[0]: https://github.com/zulip/zulip-desktop/issues/1
[1]: https://github.com/zulip/zulip-desktop
It's mostly a WebKit wrapper, just like the Mac and Windows clients, but it does provide an icon and a dedicated window and potentially better integration with system notifications etc.
Something has gone horribly wrong when a chat server can barely run on 2G.
edit: As a frame of reference, here's what Inspire IRCd needs:
> A network with 3000-4000 locally connected clients and 10000 open channels experiences a constant 1-4% CPU use with 70MB of RAM use. This won't go up drastically, but it will go up. Around 40000 local clients means you'll be expecting some 500MB of RAM. [1]
Historically most users were using the single cloud installation at zulip.com, and so having this significant fixed memory overhead wasn't a problem.
I expect someone will do the work the fix this before long; it shouldn't be hard.
If you spent even twenty minutes of developer time trying to reduce memory usage, you've already lost money.
It may still be worth the total savings if someone solves it globally, but from the perspective of an individual company who wants to run this, it doesn't matter at all.
This is a storage application front-end. Slack and hipchat charge the money for secure storage, file transfer and data. That is Dropbox's competitive advantage and a great way to break into the market discreetly.
Client looks cool, I will be downloading it.
Incidentally, if anyone has seen his Pycon talk, one of his ideas is "Bring Back the Old More's Law", and if you are curious it is ~2-3 minutes here[1]. I have always been wondering what he means when he says a "sufficiently smart compiler is a byword for impossible" is this an AI reference or a deeper computer science theory that I am missing. Always been really curious.
[0]https://youtu.be/R9ITLdmfdLI?t=7m40s [1]https://youtu.be/R9ITLdmfdLI?t=21m38s
I still prefer to host my own infrastructure, and I want to be able to archive and categorize a discussion (after it's happened) for searchability, but a couple of our people want an alternative to email and Google Hangouts for communications, and are pushing for Slack or XMPP. I've never been a big chat user and another of our people doesn't do chat at all (so we'd likely need some kind of email gateway for him). I'm not convinced anything exists that answers all these needs, but maybe I'm just way out of the loop.
Also, do any of these integrate with XMPP? Googling is inconclusive, but it seems neither connects to XMPP directly, which is unfortunate. I'd like to see an open standard backing whatever chat we choose.
There's no reason to use a font-weight of 200 (or anything less than 500) on body text, save that for the headlines.
Xft.autohint: 0 Xft.lcdfilter: lcddefault Xft.hintstyle: hintslight Xft.hinting: 1 Xft.antialias: 1 Xft.rgba: rgb Xft.dpi: 96
It will give you a place to start, anyway. Main things you will want to change are the rgba and dpi depending on your monitor. The filter and hintstyle depends on your preference. Just make sure to turn autohinting off.
If you are using something else, then I'm not sure how to fix it, but I can tell you for certain that it is broken ;-)
The font used is a fancy font with thinner strokes and then using a font-weight of 200 makes it that much smaller, making it illegible. There's no reason to make body text so skinny and it's often better to stick with normal system fonts.
Headlines and occasional larger text can have more styling. This is just a failure of design/UX on this site.
I'm viewing on a 1900x1200 24"
FWIW at Zulip we usually did our development environment on our laptop not inside a VM; it's not that hard to do, but the nice thing about the Vagrant setup (written as part of the Hack Week project) is that it's for people with no familiarity with the software to get to a running environment.
It should be feasible to make a Debian package for it that plays nicely; as you can see most of the dependencies are already packaged.
Everything scripts/lib/install downloads via https has a valid cert; I suspect the issue may be that we should bundle the verification chain.
I'd love to see notes on whatever issues you encounter in a github issue or sent to the mailing list so we can make things smoother.
It can be very frustrating to try and trace a conversation backwards in a crowded Slack channel. I haven't used IRC in a while, but at least my client had a feature to toggle highlighting on a back-and-forth conversation, but that wasn't perfect.
I'm not exactly sure how that'd be possible, but I wonder if they've managed to figure it out somehow. It's the one big problem with self-hosted chat apps like Rocket.chat and others - APNS and GCM are both centralized, and it's hard to federate them to provide push services for self-hosted instances of open source projects.
* It seems like one way you could make that possible would be to make it really easy to do white-label builds of the Zulip mobile apps. E.g. the "Zulip for example.com" app. Would be more overhead than is ideal for smaller deployments.
* It should be possible to have APNS/GCM traffic go through a central community-hosted service that dispatches the messages on to a set of configured Zulip servers.
We actually had functionality based on a similar concept for the Zulip desktop app login process, where it would query a service on zulip.com with e.g. "example.com" and that would return the URL of what zulip server hosts example.com, so that users don't need to fill that out in the login process.
For the open source release, we replaced this with in an explicit "what server are you doing prompt" but it would certainly be technically possible to go this route.
White-label builds of Zulip apps would work, but at least in our case wouldn't be ideal. Having a central community-hosted service would be much better.
This does look like a good product though. Personally I like the style of this more than slack at first glance. Running your own server and being open source are awesome. I can't wait to see what people build on it.
Zulip's use of redis right now is basically just for the API rate-limiting; it could be easily removed.
Wouldn't it be better if the multi-platform wrapper for Webkit web view was a separate project? Should be useful, if it doesn't exist already.
This is a group chat. It's value is in being restricted in reach and/or size to the group (team, startup, enterprise) deploying a version of it.
You don't need a blockchain for that! Looking at the docs, it looks like Zulip messages are visible to servers anyway; that means that there's no need to encrypt the messages to hide them from the servers.
Now, supporting end-to-end encryption for chat would be pretty cool, but it's not going to happen in a browser client (since browser clients are currently completely at the mercy of servers, and will be so for the foreseeable future).
1) Is there any support for federation? At first glance it looks like every installation might have multiple servers, but more for balancing load, than federation?
2) How well is the protocol specified? How hard would it be to par down the requirements to eg: just python and sqlite/lmdb or redis (or zodb...)? Say if one wants to support just ~100 users or so?
(2) There's a reasonably well-specific API, and you could imagine building an independent implementation that fit that API and feeling good about doing so. But I feel like that would probably be a lot of work and you could probably much more easier achieve whatever your actual goal without paring down the dependencies very much.
E.g. the relatively high minimum recommended RAM for a Zulip server is mostly due to running 20 Python processes for all the queue workers, most of which are idle all the time. If we wanted to decrease the memory requirements, there's a variety of ways to solve that problem directly that are a lot easier than doing a rewrite :).
In the end im happy with IRC. Its not the greatest but its the one that just works: Its the one everyone who's an engineer in the business knows how to use, bots work, automation work, and irccloud works if you like webuis.
I'm working on a Debian package[1], and we expect to iterate on the deployment process in general.
We'd love the chat improvements, but without screensharing and voice we're stuck on Skype. :(
I know it's got less of a "cool" factor because it wasn't invented last week, but I soooo wish everyone would just use IRC. Use irccloud if you want some nice apps and picture embedding.
Now, there's no single network that holds over 25% of them. Except facebook, but most of them don't actively use facebook every day, nor pay attention to it's IM.
An alternative solution would be a cross platform third party Contacts app that offers that kind of integration. I've seen multi-messenger apps (Trillian, IM+) for both platforms, but that's not quite the same thing and it inevitably leaves out important functionality from the official apps.
What parent is talking about is a real problem. There's micro-ecosystems out there around specific closed source products, all of them centralized, none of them compatible... and in the mean time, the only real decentralized, open source group chat solution (IRC) has a lot of issues [1] which shouldn't exist in 2015.
[1] https://plus.google.com/u/0/+JeromeLeclanche/posts/icC6gDToB...
We have had thousands of years to work out our nuances over interruptions and social signals when around the same campfire.
But suddenly (and from the past 20-30 years suddenly) we have phone conferences where half the conversation is "no, sorry, you go ahead" and email going from killer app to no longer being a way to get a reply in ten minutes but two days because the signal to noise ratio hit a tipping point somewhere around 2006. (No it's not spam, that's mostly a done problem. It's co-worker spam that's clogging our minds of not our inboxes)
So the differences between Zulip and Twitter and Slack and IRC and Microsoft bloody communicator why does it not know about tabs ffs! (Sorry). The difference with all of these is not their technology - it's pretty much the same all the time - but their social utility.
One day some comms package will get it all together (I think there is too little context to get it right yet) and we will all go"of course".
Until then we will try each different social choices baked into the code - rooms or tags or whatever. Maybe the next step is to have rooms for something, open cry for others.
Who knows - maybe we should look at pubs bars, libraries and streets for inspiration.
Whatever it is - Zulip is not the right solution nor is it the best - it is one more random mutation in the evolution of remote communication.
This is not our main feature, just something like side project.
This is the regrettable de-facto standard. I'd like to see the opposite: a network that provides native desktop clients. Telegram seems to be the only one taking this seriously up to now.
FYI notifications is misspelled as "notificaitons" in the paragraph under "I don't believe in messaging. Email is better".
I'd pay a good bit for that!
(Not to mention the fact that Slack is for internal teams, not for IRC-like discussions, though our open newsroom (http://newsroom.grasswire.com) and some other communities (http://fpchat.com) have repurposed it for that.
In truth many of us believe that the goal is enabling everyone - universally - to communicate without a single body holding centralised control of message history, reachability and access.
Quick review of the globally federated protocols:
Email is too slow and bulky and lacks "group" capability
IRC is deeply unreliable and lacks identity, archiving, and media management
NNTP is too amorphous, slow, and lacks any privacy or security controls
Everyone thinks SIP is just for telephony (it isn't)
XMPP is phenomenally complicated yet held great promise
- if only everyone could agree on the extensions and semantics.
- but was murdered by Google.I've recently given up on IM, and written about it recently:
https://hugo.barrera.io/journal/2015/09/21/giving-up-on-im/
If only zulip were federated. :(
Now that it's open source, could it be made to be federated?
We at sameroom.io do this in sort of backend-only way.
</shameless plug>
Voice+video just to begin with. The ability to work on poor networks (mobile?), read notifications, delivery notifications.
A timeline [1].
I guess it doesn't even need to be XMPP, specifically. But, some open standard and some level of interoperability would be nice. In googling I came upon matrix.org, which also seems promising, but has the same problem XMPP has of not having great clients (though I also found Kaiwa, which looks like a pretty good XMPP client with Slack-like features). Maybe one of these open source projects will formalize their protocol, and we can all move forward on interop with that.
Currently I'm "only" using Slack, Skype, iMessage, and Google+ Hangouts (very occasionally, with considerable loathing).
It strikes me the situation is inherently ridiculous, but after not far off 20 years of dealing with it, I can't say it bothers me that much anymore.
(Patches welcome!)
Mattermost team here. We've had requests for XMPP, and potentially it can be added in future. Feature idea can be tracked here (and more ideas welcome!): http://mattermost.uservoice.com/forums/306457-general/sugges...
That said, communication has changed significantly since the XMPP standard. For example, after we implemented markdown in Mattermost it's really hard to go back (http://www.mattermost.org/open-source-slack-alternative-adop...).
If you decide to try Mattermost, please let us know if we can help! Twitter at @mattermosthq or via community options at http://www.mattermost.org/
I don't mean to rant at you, of course. Mattermost looks great and it is open source, which means any complaints I have, I am free to put my money/time where my mouth is and fix it.
Not sure about the guy that "doesn't do chat", he might be out of luck. Time to adapt.
[0] https://confluence.atlassian.com/pages/viewpage.action?pageI...
puppet/zulip_internal in the server repo even has the zulip.com puppet configuration (sans secrets).
Even for higher font weights, the rendering in your example is atrocious. Compare the sibling post's thicker fonts to yours. Notice how yours are fuzzy on the outside? His are crisp. Now, pick a website with a font you like. Shrink the page down so the characters are really small. Look at the characters closely. Do you see how it looks smeared and how there are pixels of different colours (not just black and gray)? This is the result of the misconfiguration. Good hinting will allow you to shrink the font to a very small size and still have good anti-aliasing. Without playing with it, I don't know if it's just that you have the DPI set wrong, or if you have auto-hinting turned on (which you should never do now that the hinting algorithms are no longer patented), or possibly something else.
If you ever decide to look into it, probably the best keywords to search for is "anti-alias" and "hinting". It seems silly to me to put up with such awful rendering just because you are too stubborn to consider the possibility that you are wrong.
And FWIW, I'm on a stock MBP, and I just revisited this site and disabled the font-weight: 300 rule on the body text, and everything became a lot more readable for me (if less "stylish"). I think the site might simply need a slight design tweak for readability.
Two things you often want are at-least-once delivery and the ability to queue messages without requiring the consumer to be connected. It requires a fair amount of work to get this to work in Redis. It's not simple configuration.
That last one is really the key feature to me.
If something can just be locked to only talk inside the intranet/VPN it's better from something that can talk to arbitrary people the world over and is only configured not to via its own groups and permissions inside.
I miss Google Wave. Not the messy implementation, but the promise of a big influential company throwing its weight behind a modern, open communication protocol.
Google Wave, as an XMPP-based protocol, held enormous promise as a federated rich discussion standard. Sadly their first implementation was clunky and had a confused approach to standards and integration; it was effectively stillborn.
Then Google killed Google Talk by strongly favouring their closed "Hangouts" product which is practically inaccessible from chat clients. They went further, making it impossible to federate Google Talk to other XMPP services. Facebook and Microsoft followed suit, either ending XMPP support or closing their federation capability.
All three are therefore complicit in the worst abrogation of Internet interoperability since the early days of MSIE. And Google, in a land grab for consumer eyeballs, was the cheerleader.
Email was drifting off for me a handful of years back, but ever since smartphones ascended email has experienced a huge resurgence. I'm likely to use it in preference to SMS for (a) longer messages and (b) messages with multiple recipients (e.g. your standard activity planning emails).
I'm not sure why people claim IRC lacks archiving support. Isn't a bit like saying SMTP lacks archiving support? And doesn't basic IRC always go through a server? So there shouldn't be any technical barrier against a server archiving all chats (private and in channels)?
As for NNTP, I'm not sure if NNTP over TLS, peering with only trusted sites (aka for internal use) would make sense or not. I never did use Usenet much. At least the D language forums have made an effort to bring NNTP into the www era[d].
It's interesting that no one seems to do a decent job of (server side) archiving for XMPP -- partly I think it's because as you state, the XEPs have gotten out of hand -- and partly XMPP appears to be especially popular for users that want privacy -- and treat ephemeral chat as a feature.
[d] https://github.com/CyberShadow/DFeed
(format note, you probably should've just listed the protocols in separate paragraphs, as indented blocks with lines longer than ~50 characters doesn't format very well on hn).
The IRC protocol is neither sophisticated nor scalable enough that we can all federate our private trusted IRC servers. IRC services are severely limited by being a brittle undirected acyclic graph of servers with little but text forwarding in the protocol. Trying to do anything sophisticated like e.g. identity management, is an ugly business.
NNTP has no identity scheme and no private channel. Running it over TLS doesn't change that. You can forge an ersatz private channel with encryption (I once did so, using Usenet as a message queue to backhaul out-of-band service alerts) - but it's neither pretty nor grandma friendly.
I suppose the difference between our points of view is that I would much rather have a better tool than a publicly accessible archive of message history.
Please consider integrating zulip. Though even without gitlab integration, we'll still try it out anyway.
Although Zulip is far ahead of other open source solutions we are leaning towards Rocket Chat. Javascript and Meteor are the most popular language and framework so it would be easier to contribute. It is not who is ahead now but about speed of development.
Zulip is very heavy, they recommend 4GB for a production installation. This is due to the 15 workers that are not multi-threaded (GitLab has multi-threaded background workers).
We're proud that people can run GitLab on a Raspberry Pi 2. Forcing people installing the whole GitLab suite (GitLab itself and chat) to have a 8GB server is not acceptable. We're still hoping for multi-threaded unicorn foreground processes in GitLab so we can run it on 512MB.
By the way, Rocket Chat has 'native' clients on Android and IOS, although I think they use webview inside them.
I don't want to use the domain you provide, because I'm tied to a provider forever. I don't want to set up my server right now, because it's just too much work to try something that I may end up dumping (because nobody else I know uses it yet).
The overhead to get it is too high, when you're just betting it'll prosper.
1. "As the chief academic and chief budgetary officer of the University, the Provost is responsible for administering the academic program, including both instruction and research, and for the coordination of the administrative and support functions of the University with its academic purposes." (https://provost.stanford.edu/)
2. http://www.eweek.com/c/a/Security/Dropbox-Accidentally-Turne...
Completely true.
> Linux Desktop will never be more than a VM host or Web Browser host.
I did mention this on a developer-specific context. AFAIK, most developers tend to use Linux nowadays - at least in all the companies I've been in during the last 10 years, windows users have always been a minority.
(YES, I'm perfectly aware that this is not true for average users, or anything outside IT).
Probably will cost me karma, but I find this incredibly amusing, thanks!
All these problems are fixable but I don't see the tide ever actually changing direction and "hey suddenly XMPP is cool again, we should all use it".
One thing is for certain... humanity needs standard, open and widely-used protocols for communication. And there's a lot of ground to cover: Text, audio, video; single and multiuser; topical (IRC-like); social (invite-based/people I know); Synchronous (IM) and asynchronous (email/offline messaging)...
XMPP tried to do a lot of that. Maybe it tried to do too much. Maybe you just can't do all that in one protocol. I don't know, I just hope we'll get there soon - if nothing else, I'm tired of maintaining those "best way to reach me" charts JoshM33k is talking about.
Not even remotely true! Prosody on Debian works out of the box, including federation. You just have to configure the domain name.
It's not hard to set up an XMPP server. It's hard to set up Ejabberd. Ejabberd is not the only XMPP server. Prosody is very easy to set up.
Honestly, people, think before you speak...
I didn't just make this up on the spot, I've been dealing with these issues for years. So yes, I've thought about them a lot.
I used to run a prosody server on my home box. It is great software and a fantastic daemon compared to ejabberd (edit: Configuration-wise that is) but fat lot of good that does if you don't know what XEPs to set up when dealing with other servers. I shut it down because it was pretty much useless and I wasn't able to talk to my gtalk buddies from it anymore.
Was that really necessary?
I had never heard of Prosody, any major difference cons/pros between the two?
One of the best things that could happen today I think is Google open sourcing the Hangouts protocol. It's a reasonable alternative to XMPP and has a massive userbase. The clients are pretty horrible but that might be completely unrelated to how good the protocol is (Note: I have no idea how good it is. Because it's closed source.).
I was hopeful for a while but I don't really see it happening anymore :( Oh well...
Edit: Oh and the worst part: Communication is just one side of that coin. The other side is identity and it's one hell of a side. OpenID was a disaster. Mozilla got it mostly right with Persona but completely botched the marketing and has all but given up on it now. There is no decent foss protocol for identity/authentication today other than Persona, and nobody is working on one. There was a time indeed where I could've pictured Google working on solving this just for the hell of it. Just because it would improve the world. That Google is gone, and there's nobody with the appropriate reach that seems willing to do it now.
I have no idea what XEPs to set up when dealing with other servers. I did not have to set up any such thing. Like I said, federation (server to server communication) works out of the box, at least on Debian.
IRC was designed by hackers, for hackers and it shows. Twenty years ago, IRC was my talk destination of choice and I operated a server within a major IRC network; these days my startup uses Slack which I determined to be the "least irritating" of the 21st century options.
I had high hopes for Google Wave but it was sadly stillborn.
Most would probably prefer a web ui, with search -- but recording chat could still be done via a bot.
I wouldn't say you could get most of the whole slack experience with just IRC, and you'd probably have to do some work (if only configuring channels/bots/find a web ui etc).
Yeah me too. Google really effed that one up. RIP
But it's not possible to get what you're asking without breaking the IRC protocol - it's not easily extended and the formatting rules are icky mIRC crap.
Perhaps IRCCloud could be sold as a rebranded Enterprise app as an alternative to Slack? I'd love to see some competition as it looks like only HipChat and Slack are getting talked about.
There might be one -- but this is absolutely not what this and Slack are aiming to do.
>and closed source products do not cut it when we are talking about communication.
Not sure about that. As it seems, for 99% of the world who only uses "closed source products" for chat, they do cut it. (Interoperability is orthogonal of course).
Slack literally took the concept of IRC and put a bunch of cool bells and whistles on it. They updated it, centralized it and sold the idea as an enterprise solution. It works great, and the tech could be a kickass replacement to IRC, done correctly.
Persistent history is easy. Email notification is easy. Storage of various assets like text snippets and pictures is easy. I've never used any, but I'm assuming that at least one of the web interfaces for IRC works well...
I think the main thing that Slack has done is package it up so that you don't need to cobble together 100 different things -- which is, of course, very valuable. Or at least more valuable than the monthly cost that they charge ;-)
To be honest, I would really rather be using free software. I would be quite happy to pay for a service that made it easy for me (as Slack does), but software freedom is valuable to me.
That's kind of a weird statement to me, because every time I've sold a techie-type person on Slack it's been by describing it as "private IRC with persistent history and a bunch of other neat things".
It's not meant to be an IRC replacement. That it has point to point communication, channels etc, doesn't make it IRC.
Slack is all about the default stuff it bundles with it, and the features it includes as native for work teams.
So you can be connected with a universal "messaging" client to any of the available servers then send messages to someone on Google, or Slack etc.
I'm super excited Zulip is going open source. And it's both the proliferation of protocols and the closed-sourceness(?) of the products that is problematic.
Open source has two coupled benefits:
1. If the product becomes popular, it's easy to integrate with it, extend it, modify it, etc rather than just write an alternative from the ground up. This prevents the proliferation of new protocols just for the sake of an alternative. Right now, it makes no sense for me to go and build a FOSS alternative to Zulip. It would've made sense a few weeks ago. FOSS web services encourage/promote self-hosting. This also counts for something.
2. When extending a foss product, writing a gateway is a lot easier. Gateways don't slow down proliferation as much, but they do keep protocols somewhat close to one another and make it easier for users to migrate from one another. For example: It's been several years now and there is still no reliable open source XMPP-to-Hangouts gateway. But a Zulip/IRC gateway? If one doesn't exist already, I bet you there'll be one within weeks.
https://github.com/zulip/zulip/blob/master/bots/jabber_mirro... https://github.com/zulip/zulip/blob/master/bots/irc-mirror.p...
In addition to Zephyr mirroring, which we've had since 2012.
Maybe you guys should do another Show HN.
IRC is "You could do that ...", while Slack is "You can do that". So like you're saying, you could set up a bunch of channel bots (And for what it's worth, I think channel bots are fairly ugly. If I say "Let's work on #133", I want #133 to be linked, I don't want a different user spewing 3 lines of noise and a long link). But most people won't do that because it's too much of a hassle. So most of IRC does not showcase what's really possible.
Like I mentioned in the g+ rant I linked above, it'd be possible to improve this by adding scripting features and such to IRC servers. But nobody's doing that. The harsh reality is that "could" is a long, long way from "can".
> To be honest, I would really rather be using free software.
Me too, man. Me too. I don't use Slack out of principle, and I'm a heavy IRC user. Sadly it doesn't often compare :/
To dive a bit deeper, while XMPP/IRC exists, and it wouldn't be hard to make the Zulip server natively speak XMPP to clients, that in-and-of-itself wouldn't be quite useful. A message sent to stream "ops" with topic "prod deploy" might look like this†:
<message
from='coven@chat.shakespeare.lit/ops'
id='162BEBB1-F6DB-4D9A-9BD8-CFDCC801A0B2'
to='hecate@shakespeare.lit/broom'
type='groupchat'>
<subject>prod deploy</subject>
<body>Thrice the brinded cat hath mew'd.</body>
<delay xmlns='urn:xmpp:delay'
from='coven@chat.shakespeare.lit'
stamp='2002-10-13T23:58:37Z'/>
<addresses xmlns='http://jabber.org/protocol/address'>
<address type='ofrom' jid='crone1@shakespeare.lit/desktop'/>
</addresses>
</message>
But there aren't any existing clients that have the UI to:1. Show per-message subjects/topics in a meaningful way
2. Allow users to easily reply to a message preserving the subject
So we'd need client changes to make it truly useful.
†: Adapted from syntax specified in XEP-0045
You're commenting on their business model rather than the tech. For all you know, Slack could be planning to expand their business to hosting public chat rooms, then your comment wouldn't make any sense anymore.
I noticed this when the Bootstrap 4.0a announcement had a link inviting you to join their Slack:
> For those jamming on v4 with us, we also have a dedicated v4 Slack channel. Jump in to talk shop and work with your fellow Bootstrappers. If you haven’t yet, join our official Slack room![0].
My interest is in federated, reliable, ad-hoc messaging and IRC's acyclic forwarding graph and lack of any inherent identity model make that impossible.
So that just leaves you with an easier problem: how can I host conversations etc for my team/org/my friends? And I think a single, isolated irc server should work fine for that use case, and work fine with many different irc clients?
So no, it's not a universial solution -- I just think it's strange when people bring up slack as somehow "better". Sure it's "better" in that it's a product with backing from some fine people -- but if you wanted a solution based on open standard, Free code that you could self-host without worrying about license costs etc ... then a battle-tested IRC server still seems like a half-decent option?
Or put it a different way: if you have 100s of users, could you get many of the features with IRC, and some bots? (Or maybe a slightly tweaked IRC server etc etc)?
[ed: Not that I claim there aren't problems with IRC -- and I've yet to run a personal ircd, so I don't know a) how much work it is to force TLS+SASL[1] and disable plain IRC, or b) if there are other solutions that might be better, that are available right now.
Moreover, I'm really not interested in spending any time whatsoever on configuring and maintaining an IRC server and a fleet of bots, nor on teaching non-technical users in how to use the resulting heath-robinson system. Really, no. A world of no. I have run both a private IRC service and a public node of a very large network. It's a huge time sink. I've moved on.
As I see it, the only problem in this domain worth burning hours on is developing a protocol (and interoperable implementations thereof) that achieves everything the likes of Slack and Hipchat can do, only in a decentralized and federated manner.
I've worked with all three. The H.323 vs SIP battle was fought a long time ago... for better or worse, SIP won. Any H.323 systems still in the wild can probably be considered "legacy."
That being said, while H.323 has more "batteries included," its call flow is accordingly more complex. SIP is not too bad, there is some subtlety to it, but the main issue is that you have to piece together dozens of RFCs for an interoperable system, not to speak of implementation-specific quirks.
XMPP is the more appropriate protocol in this context -- IM and group chat -- because it has had presence and ad-hoc messaging baked in from the start, including reasonably supported MUC. Ultimately, XMPP's issues are similar to SIP's -- the patchwork of XEPs is too unwieldy to work with. For an example, compare the multimedia bits (eg, Jingle) and the corresponding SIP session setup flow. The stigma of being a XML-based protocol designed in the 90's doesn't help, either.
The biggest reason SIP is sticking around, however, is that it has major buy-in from the telcos with IMS/4G. However, SIP is also a more appropriate protocol for traditional telephony. In that respect, comparing SIP and XMPP is a bit like comparing apples to oranges. With the appropriate extensions, one could behave like the other, but it wouldn't be their strength.
It seems obvious multimedia calls is part of our future, and I refuse to let that be dictated by corporate lock-in -- be that Skype/Lync, Hangouts or whatever Facebook will launch when they enable videochat. And any videochat/conference needs text messaging/conversations too, so it seems like it would be nice to run everything through one server/service.
Which I had hoped made sense would be a h.323 server (along with open source clients+maybe a websocket/web-client bridge).
Guess it'll have to be SIP for phone (so I can ditch my regular cell service), maybe SIP for videochat (but I'm sceptical about the videoconferencing bit)... and XMPP for messaging.
As neither Facebook, Google nor Microsoft support either XMPP in general (making it feasible to set up a bridge server) anymore, nor federation (which would actually be useful), I suppose I'll just have to give up on the idea that there'll appear a chat network where I'll be able to reach most of my contacts with a Free/Open client that isn't forced to play catchup to corporate whims.
For a while, Facebook via XMPP worked (but not group chat), now it's back to sms. Which is annoying because sms is gated by the telcos, although it should be easy enough to make a xmpp<>sms gateway (eg: [s]) with a spare android phone. For personal use that wouldn't have to incur any sms fees (but would mean keeping a non-free cellular plan).
For others frustrated by the same, there's at least a "traditional" project to reverse-engineer working with FBs current chat: https://github.com/jgeboski/bitlbee-facebook
[s] http://projectmaxs.org/homepage/
[ed: Forgot to commend duckduckgo and fastmail on hosting proper XMPP with federation and registration (at least ddg[d]) enabled. That's one reason why XMPP is nice -- you can actually point non-technical users at a suitable client, and add a couple of screenshots how how to set it up with ddg -- and they can then federate/talk away (that is assuming you don't/can't/won't support registration on your own server -- in my case the main reason not to recommend people wanting to talk to me to register on my server, is that I wouldn't know what kind of "SLA" my own server would have -- so if they used XMPP for other things than talking to me, having an account with someone a little more dedicated to keeping a server open to the general public might be better. But the main point is that that just works with XMPP today. And it should've just worked with both Facebook chat and Google talk/hangouts/newnamehere. And it probably also should've worked with Microsoft accounts/skype/hotmail.
[d] https://duck.co/blog/post/2/using-pidgin-with-xmpp-jabber
]
SIP was adopted by 3GPP in 1999 to be used in the mobile networks. Of course, that trickled throughout the telcos, so it now is widely used in the telco space. H.323 was widely used for PSTN backhauling to reduce tolls. However, SIP is more prevalent there, I'd guess.
Enterprise networks still use both H.323 and SIP, with more desk phones using SIP and videoconferencing equipment split, but moving to SIP.
That said, any move to SIP these days is only because there is nothing better. WebRTC is the next big thing. It borrows SDP from SIP, but no signaling protocol is defined.
Personally, I'd like to realize the vision behind what was intended to be H.325, which was to be a JSON-based signalling protocol that is fully distributed. Each application could implement whatever protocol it wanted, and they would all be associated through H.325, giving the user the feeling that these different applications work closely together. That would be possible, even when applications run on different devices.
Alas, there seems to be no financial motivator for those that control the market to explore that concept, so we're stuck with H.323, SIP, and WebRTC (and various proprietary glue pieces). The trend these days seems to be toward proprietary solutions, providing limited interop with others through SIP. Limited, as in nothing but basic voice and video.
QUIC looks interesting, but a) is very concentrated on being a transport for http/2, b) is in flux, and c) Google apparently haven't donated any code that makes sense for production (excepting client-side in Chromium).
DTLS is closely connected with WebRTC, has several implementations (though, apparently no support in Erlang/Elixir yet?) and given the current push behind WebRTC appears to be here to stay.
Honestly, I don't know how interesting "hardware phones" are anymore. As long as one can get something to work over wlan with android, things "should" be real-world deployable. And I don't have 100s of SIP devices, so I don't need to care ;-).
It may turn out that wlan+android+WebRTC+DTLS never achieves the kind of latency needed for good live video/audio... I haven't experimented that much, but hopefully it's "good enough".
At any rate, appears that SIP really is the only interop that currently works. At first glance it does seem a little complex for the use-case of text messages, inconvenient in terms of addressing -- but maybe a core focused on WebRTC/IPv6 with gateways for SIP the way to go.
Either way, I guess as long as no big players want interop, it doesn't really matter. One'll just have to make a solution that works for inter-org/inter-friends communication, with the option to federate with those interesting in joining/building a new network. Doesn't look like it'll be easy to take a bite out of FB Messenger/Google Hangouts/WhatsApp etc.
I'm not sure how you can create a new venue without creating a new venue? Perhaps have Google/Facebook/Microsoft/BigCorp create one for you, and the use that? But none of the big players appear to care a whit about facilitating a distributed, self-hosted, open Internet, so that is not going to happen?
> As I see it, the only problem in this domain worth burning hours on is developing a protocol (and interoperable implementations thereof) that achieves everything the likes of Slack and Hipchat can do, only in a decentralized and federated manner.
Any particular reason why you think IRC is inherently not a good building block for such a set of protocols/implementations? I'm not talking about IRC with legacy client support, I'm talking about a system that explicitly breaks comparability with legacy IRC, but still try to build on the years of experience and battle-testing IRC has.
You might be right that it's better to burn IRC to the ground, of course. My takeaway (as an observer, not a server operator in the trenches) is that one takeaway from XMPP/IRC is that:
1) We need authentication of users
2) We need authentication of servers
3) Today, we have no need of plain-text; encrypt and authenticate, or go home.
It appears that 1+3 leaves us with TLS-only, SASL auth if we go the IRC route. For 2) I suppose manual mediation of some kind (eg: server certs with Trust-on-first-Use, possibly a community blacklist?). I'm not sure if this would work, but on the surface it would appear to enable less spam and better security than email currently does.
And it should be much easier to strip down/adapt existing clients and servers than to build an entire new stack?
All that said, it might very well be that IRC server-server federation is hopelessly broken, and there's no hope.
Perhaps some kind of server-auth/community-web-of-trust framework on top of XMPP federation would make more sense?
On the other hand, if you are trying to design a protocol to solve a domain specific problem (eg, in cryptography, multimedia, distributed systems, etc) then it becomes more of a research endeavor with all the associated pitfalls. In that case, there will always be the "shoulders of giants" to build off of. Unfortunately though, for every pioneering TextSecure, there are a dozen CryptoCats repeating the same mistakes of years past...
I guess you could try to run H.323 through a $protocol bridge, but I don't know why you would want to. Retrofitting modern features onto H.323 does not seem like fun. Because if SIP suffers from being too general, H.323 suffers from being way too specific in its architecture and technology requirements -- read through some of the associated specs, eg H.245, and it's not hard to see why SIP won. For the longest time, there was not even the notion of URI addressing...
> SIP for phone ... maybe SIP for videochat (but I'm sceptical
In SIP (and most well-designed protocols), there is no fundamental difference between an audio and a video call. It's just capability negotiation and RTP. Actual interoperability is the problem... and that is one of the reasons vendors like to create closed networks, so they can guarantee the experience end-to-end.
Regarding gating and lock-in: Part of it may be a desire for a proprietary walled garden [1], but a big reason is logistical as well -- one of the reasons Google disabled XMPP federation was because of abuse. This is the same reason you can't dial directly into the PSTN without going through a trusted trunk, and why unlicensed use of cellular frequencies (or any RF, really) is illegal.
[1] Actually, the reason the PSTN is federated is probably more an accident of history than anything else. If not for the AT&T monopoly (and subsequent breakup), people would have been complaining about siloed telephone services 50 years ago! See Tim Wu's The Master Switch for a nice treatment of this.
> Retrofitting modern features onto H.323 does not seem like fun. Because if SIP suffers from being too general, H.323 suffers from being way too specific in its architecture and technology requirements -- read through some of the associated specs, eg H.245, and it's not hard to see why SIP won. For the longest time, there was not even the notion of URI addressing...
Sorry to hear that. My general thought was that for a personal system, it would be way lower barrier to use existing h.323 server/clients, than to make a whole new protocol -- and that's probably true.
But if it has been effectively abandoned for a while, SIP might be better -- even if what one might effectively end up with is "proprietary" SIP, as one picks a subset that works for a particular use-case.
Personally I have to complementary goals: The first, and most important, is to build something that allows group chat with archiving, hopefully integrated with optional audio/video and some kind of media sharing (be that wiki, or something more traditional like straight up sharing of files/documents) [But it it should be obvious that by uploading to a wiki with shared authentication/authorization, one would only need to share an url over chat].
The second goal would be to enable federation, at least among those with the know-how/interest in running their own nodes.
Oh, and goal zero would be to retain control, so self-host (although option to get it "on tap" as a service would be nice), and Free/Open software/protocols.
In the end, perhaps XMPP along with just video/audio via WebRTC turns out to be the least worst option. I'm a little worried that the "web-centric" solutions like Mozilla Hello/together.js etc is difficult to pair up with command line clients, bots and/or make accessible for those that need it (eg: braille terminals). I guess audio might be preferred to braille in the general case, even for asynchronous messages, but text is very flexible (eg: text-to-speech system exists).