eric’s extremeboredom

adventures into and out of extreme boredom.

Announcing Synapse!

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 »


Digg!


Categorized as Open Source, Mono, Open Source, Technology, Software Development, Open Source, Synapse, Technology

34 Comments

  1. Interesting project. I wish you well on it.

    That said, I think you’re going to find that many people are going to write you off if all you support is XMPP. Calling the dominant players in the market “legacy” is nice and all (that smell is not the dog, it’s sarcasm–the Linux fanboys have been calling Windows “legacy” for years) but ignores that they’re the kings of the hill. Personally, I’ve got 4 AIM, 3 MSN, 2 YIM, and 4 XMPP accounts active at any time, plus an IRC session. I’m unclear on what your project offers me that would be worth splitting off my XMPP accounts from my integrated, everything-just-works Pidgin install.

  2. Visionary, yet the user must be portable and autonomous. The user needs to be able to import from Pidgin, it has to be easy for the user to bridge the gaps between old and new.

  3. Nice work eric.

  4. Importers for other apps are certainly something I’d like to work on. Thanks for the feedback!

  5. Unfortunately, I agree so much with Ed (also about wishing you the best of luck).

    So, in my case I will only migrate from Pidgin when I find a multi-protocol program that lets me do the same as Pidgin at least (and better if “plus something”). Being developed in Mono is a huge plus precisely because I could contribute with pleasure and without pain :)

    That being said, are you using Mono.Addins? I wonder if you could merge efforts and libraries in some way with any of the bunch of IM apps written in Mono that want to kick ass already. I think the best one so far is Galaxium, although I haven’t tried Synapse yet.

    BTW, I’m just curious: are you being sponsored to work on this or is this on your spare time? How many developers are besides you?

    Thanks!

  6. Looks interesting and I may give it a whirl. If I may, what was the rationale of using Qt for the widget toolkit instead of GTK?

  7. Hi, I just saw the name of this new project and I immediately thought it sounded familiar. Synapse is also the name of a network library in Delphi. (http://www.ararat.cz/synapse/doku.php) I don’t have any connection with this project, but I just wanted to let you know.

    BTW this looks like a very interesting project, especially your motivation :)

  8. I’d like to install your nice packages for ubuntu but it fails telling me that it’s missing your GPG keys for authentication:

    W: GPG error: http://ppa.launchpad.net intrepid Release: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 04508D5C1654E635

  9. Chris: WebKit integration and a very good drawing API (QGraphicsView) were the primary reasons. If you’re a GNOME user (like me), enable the GTK theme for Qt using qtconfig-qt4. You wont even know the difference!

    David: I looked around to see if the name was already in use but apparently I didn’t look hard enough! Thanks for the heads up, hopefully it wont be a problem.

    zeank: The key can be found here:

    http://keyserver.ubuntu.com:11371/pks/lookup?search=0x83419668F12469157BCD4BE904508D5C1654E635&op=index

    Directions are here:

    https://help.launchpad.net/Packaging/PPA#Adding%20a%20PPA%20to%20your%20Ubuntu%20repositories

    Or else you can just run this command:

    sudo apt-key adv –recv-keys –keyserver keyserver.ubuntu.com 83419668f12469157bcd4be904508d5c1654e635

    I’ll update the download page to explain this. I hope future versions of Ubuntu automate this process!

    Thanks for the feedback everyone.

  10. Ed, Andrés: server side transports work just fine (that is, if you have multiple IM, MSN etc. accounts, then it might not be for you). I specifically seek out XMPP-only clients (Psi currently, but Synapse looks interesting, and is also written in a language I could more easily participate with) because they tend to support the protocol better. See for example the lack of proper transport support in Pidgin.

  11. Lovely project!

    I just do not like to depend on the server to give me my other messages.

    And in general I am not going to give out my passwords to Google/Yahoo to a server side product hosted by another company to pass my credentials around. They both have too much personal information that I would not want to leak.

  12. I read the name , and the intro paragraph “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”.” and immediately thought of the movie Antitrust.. weird how your even using the same name…….

    http://en.wikipedia.org/wiki/Antitrust_(film)

  13. Given that you`re using QT – any thoughts on ports to other platforms – Windows, Mac etc ?

  14. This is some fancy looking stuff. I wish more work was put into creating extremely nice looking applications like this one, as long as they stay as usable as applications using default widget sets (for accessibility etc).

  15. FireRabbit: I cannot find this theme in the QT configuration settings, and a quick apt-cache search indicates that no such compatibility theme exists in Debian. (Or I’m just not searching correctly.)

    I do use other Qt applications, like VirtualBox, because they provide things present in no other Gtk application. I’m still unsure what I’m going to get out of Synapse that is not present in Pidgin.

  16. You’re missing on the new thing for IM, that is desktop-integration using a framework like Telepathy. Appart from the UI, I don’t really see how your project is different from Psi or Gossip or the gazillion of other XMPP clients. Anyway, good luck to you.

  17. @ChrisHowie , Search for QGtkStyle , Debian must have this. This extension rocks ;-)

    @FireRabbit , please consider adding transports only as optional extension. (so pro-users could activate it, but typical user won’t by bothered) Transports rarely work in real live (TM) – they are buggy, hard to understand, unstable, supporting only text chat, etc.

    In my opinion there are only two options for making succesful IM:
    1) Making multiprotocol IM with support for different protocols. And we in Kadu IM soon will try to design good multiprotocol IM ;) I have some concepts how to improve general usability of multiprotocol imessangers. Lets hope it will work ;) [However tendency to "implement only the lowest common denominator across everything" will by present, i know :( ]

    2) Make only XMPP IM- without transports – designing IM for only one protocol is so much easier and you have so much more flexibility. I hope you will succeed with you vision :)

    Gtalk popularity will surely help here, and now – my opinion is based on tendency in Poland – more and more commercial vendors are supporting XMPP so it will by only better.

    I wish you all the best.

    regards
    Piotr

  18. Stuart Crouch says:

    If you are aiming to be the best arent there certain gaps you need to fill?
    You reference skype, but as far as Im aware skype was the first web based phone app. You could use the thing to ring phone numbers and do web based chat. It got popular because it was the first to fulfill a need.

    Your app is trying to compete in an incredibly saturated market, but currently only works on one OS, and offers nothing over the products that work on multiple OSs.

    I’d love a decent messaging app on linux, but the point of a messaging app is that I can talk to my friends, most of whom are on windows, and most of whom would be unwilling to switch from MSN/yahoo or run another program. If the app had basic support for that, and its own enhanced video/sound support on XMPP, at least then you could start tempting people over.

    In summary, you probably need multi-OS multi-protocol support just to compete, otherwise your product offers nothing over pidgen (other than looking pretty).

  19. Looks like a dream-come-true for me (better Google Talk without loosing it’s best features).
    I migrated all people I know to XMPP anyway.

    When this works on Windows, I’ll give it a try.

  20. Great project! I’m a newbie developer and there aren’t many projects to look at if you need to get to know the C#+Qt combo. I’ll take a look at the code later tonight. Maybe I can even contribute something. :)

  21. I tried installing it on jaunty 64-bit alpha and this came up:

    $ synapse

    ** (/usr/lib/synapse/Synapse.exe:25797): WARNING **: The following assembly referenced from /usr/lib/synapse/Synapse.exe could not be loaded:
    Assembly: qt-dotnet (assemblyref_index=0)
    Version: 4.5.0.0
    Public Key: 194a23ba31c08164
    The assembly was not found in the Global Assembly Cache, a path listed in the MONO_PATH environment variable, or in the location of the executing assembly (/usr/lib/synapse).

    ** (/usr/lib/synapse/Synapse.exe:25797): WARNING **: Could not load file or assembly ‘qt-dotnet, Version=4.5.0.0, Culture=neutral, PublicKeyToken=194a23ba31c08164′ or one of its dependencies.

    Unhandled Exception: System.TypeLoadException: Could not load type ‘Synapse.QtClient.Client’ from assembly ‘Synapse, Version=0.1.3364.2511, Culture=neutral, PublicKeyToken=null’.

    Other QT applications are working fine though…

  22. Hi KhaaL,

    This error happens when you try to use the intrepid repository on a jaunty system. Switch to the jaunty repository then reinstall synapse.

  23. @Johan Would you like to help me write a language translation plugin so that it interfaces with Google’s machine translation API? This would allow users to type text and have it translated in real-time between languages.

  24. Eric: This is *fantastic*! I really like where you are going with this project. Don’t let the naysayers put you down — XMPP is undoubtedly the future. Looking forward more features and releases!

  25. Don’t let the typical negativist slow you down!

  26. Congrats for the great project!

    You picked up a great name and the website looks very professional.

    Fuck multi-protocol. Jabber ftw!
    Awesome for choosing qt, but mono will upset some of the geeks.

    Galaxium might be neat as well i guess, but chances are that most people will be using an XMPP/Jabber client or gmail with time (most of the people i know already do so), so i’m not really into supporting proprietary stuff.

    My guess is that Synapse will become cross-platform in a not very distant future.

    Once again, thanks for the great work you did with this project; i’m going right away to test the application :)

  27. Nice one Eric!

    I can’t help ypu with coding (well, not much:) but if you need some help with artwork/design, I’ll give it a go!

    All the best!

  28. Good Gods!
    I got all frustrated: it can’t install on my Intrepid… It can’t find libcairo2…

    Too bad, as a serial tester, I was eager to use something new and a bit more shiny than my usual IM client…
    I guess this is going to happen next week then.

    Looks good on the pictures though. ;)

  29. hi
    very beatiful synaptic…but in what way i can add my msn friend ?
    excuse me if this is a stupid question but i ‘n new of ubuntu

    i have another problem with the pubblic key.
    i have insered in terminal :
    sudo apt-key adv –recv-keys –keyserver keyserver.ubuntu.com 83419668f12469157bcd4be904508d5c1654e635
    but the problem is always here.i have 9.04

  30. Great job! I love this project! Grid view is fantastic! When can we use it with other protocols except jabber like MSN? I’m impatient to use only and exclusively Synapse!!!

  31. Any news on Synapse ?

  32. Stuart Crouch – No, Skype wasn’t the first…unless maybe you just got online like 2 years ago. There have been hundreds of web based phone services available, dating as far back as 1995 and possibly even before then. The early ones didn’t work so good though, mostly because there wasn’t much bandwidth since most everybody had dial-up connections and then if you only had a half-duplex modem then it only worked like walkie-talkies in that only one person could talk at a time. The quality was pretty gawd damn terrible too, at least for those on dial-up.

  33. Im really happy to hear you and the way you write.

    I was discussing the XMPP future in symbian council, in pidgin, in empathy, in fring and nimbuzz. But unfortunally no one seems to understand what is really important.

    Some useless minds try to improve emense over any other xmpp client. WTF!!

    Hope you improve fast. I want to see your XMPP client native in UBUNTU, with a nice remote desktop feature.

    Best regards.

  34. I forgot to mention…

    I WANT TO SEE LINUX / Gnome & KDE DROPING ANY OTHER IM PROTOCOL and SWITCHING to XMPP ONLY.

    I hope your XMPP Client be so great that the Ubuntu 11.04 come only with your XMPP Client and the other propietary corporcrime networks optional to be install.

    As soon as we switch to XMPP, Our next mobiles will come with XMPP enabled. Unfortunally I Have to pay phone bills because each one is divided in diferent networks, (skype, msn, Y!, pstn, etc)

    Hope soon we can communicate with each one in the same way as the email.-

    Hope you succed !
    Best regards!

Leave a Reply