
Today I’m extremely happy to officially announce the project I’ve been working on for the past few months. It’s called Synapse, and while it may look like just yet another instant messaging client, it’s actually much more than that.
The web has changed a lot over the past few years. Web applications now offer rich user experiences and beautiful interfaces, video has has become ubiquitous, the ability to mix and match content from different sources is now not only easy, but widely accepted by companies that would have once sued you for doing so. Most importantly, more and more of our daily lives continues to move into the “cloud”.
With all the focus on the web, a lot of people have been dismissing desktop operating systems as nothing more than something required to run a web browser. Unfortunately, Linux, which has suffered from unpolished UI applications for a while, has been hit especially hard by this trend.
Even though there have been lots of exciting advances to the platform (Mono, DBus, Cairo, Gstreamer, KDE4, etc.), few developers focus on supporting Linux, and Linux applications rarely receive the same polish and attention to detail as web applications.
Although it makes me unpopular, I’m not ready to give up on Linux software development. I feel strongly that there’s a place for both web and desktop applications, and exciting opportunities for integration between them.
The state of instant communication and collaboration, especially on Linux, has been stagnant for many years. In fact, there have been few advances since IRC, which was invented in 1988 – nearly 20 years ago.
For the most part, we’re still limited to expressing ourselves using only plain text. Image sharing and file transfer rarely work, we can’t make voice/video calls, there’s been little to no integration with the Web, and a lack of innovation all around.
Sci-Fi movies have been envisioning amazing communication tools for years – tools that appear infinately flexible and act like magic.
The goal of Synapse was to see if it was possible to bring this magic to reality.
Any sufficiently advanced technology is indistinguishable from magic.
- Arthur C. Clarke
History has a tendency to repeat its self, so my first step was to determine why other similar projects have failed to foster innovation. One of the failures, in my opinion, is the desire to be multi-protocol. If any new feature needs to work everywhere, the result is often that it works poorly everywhere, or not at all. What we’ve seen with many projects is that they implement only the lowest common denominator across everything, and then stop there.
Just as Apple understood when they decided to throw away OS9 and switch to something new that was designed from the ground up to do exactly what they needed, having a solid base is extremely important. Fortunately, there’s already a mature, open, and all-around wonderful chat protocol out there: XMPP.
Although I suspect this will be one of the most controversial features, Synapse is designed to only support XMPP. If this upsets you, relax and hear me out.
Unlike any of the legacy proprietary networks, XMPP is an open and distributed system. Anyone can run their own server and communicate with people on any other server. In addition, the “X” in “XMPP” stands for “Extensible”. Any piece of the protocol can be extended without breaking compatibility with software that doesn’t understand the extension. This is a perfect fit for Synapse because it means there’s never anything stopping you from implementing your great idea.
Many people will say that this all sounds great, but that it doesn’t matter if nobody else is using it. Standard chicken-and-egg problem? I think there’s already proof that it is possible to overcome this. Skype appeared out of nowhere and now has millions of users. XMPP can do the same, it just needs an awesome client that offers features nobody else has, just as Skype offered working voice chat when nobody else did. And of course, XMPP already has a huge head-start thanks to Google. Remember, Synapse can talk to any other XMPP server/client, including Google Talk.
All that said, legacy networks will likely be supported through server-side transports that translate other protocols into XMPP, but if Synapse is truly successful, I’m confident it just wont matter.
Synapse is a very new project. I’m confident that it already offers a few compelling features, but overall isn’t groundbreaking in its current state (and is certainly not bug-free). My hope is that Ive succeeded in expressing my long-term vision, and can interest other people to join the project.
Pre-built packages are available for Ubuntu, with support for additional distros on the way. If you want to get involved, or just want to share your ideas, you can join the conference room or post on the forums.
I look forward to your feedback!
Download Synapse »
