Accepted Google Summer of Code projects for Empathy

I’m very happy to see that the 3 proposed GSoC projects for Empathy are now accepted. I’m the mentor of 2 of them.

Thanks to those 4 students and good luck!

Thanks also to Frederic Peters who triaged almost all empathy bugs and proposed lots of patch already committed in Empathy 0.23.1, help is really appreciated 😀

ANNOUNCE: Empathy 0.23.1

I released Empathy 0.23.1, the first release of the unstable 0.23.x branch proposed for inclusion in GNOME desktop 2.24. This release comes with tons of changes.

  • Drop libtelepathy and use telepathy-glib instead.
  • Beginning of support for MSN-like chats that becomes chatroom when a contact is invited.
  • Added user manual support, it’s being written by Milo Casagrande.
  • And the most important…… empathy now make easy to use TUBES !!!

What does “Tubes” means?

A tube is a way for applications to communicate. Traditionnally when I want to play a game with a friend I ask him the IP and the PORT on which he is hosting the server and I connect to it… And in most cases that fails because we are both behind a NAT.  Tubes is a way for a server to offer a socket to an IM contact, the remote contact accepts the socket and they can begin to write/read data on it. I works even if there is a NAT in both sides.

You can see screencast of ther sender and the receiver of a tube (other screencasts here). The code of that little game can be found on a darcs repository.

Empathy make easy for developpers to make that, what you have to do:

  1. When the user want to initiate a game (or share a doc in abiword, etc…) the application uses empathy’s contact list widget from libempathy-gtk to let the user select a contact
  2. The application creates unix, ipv4 or ipv6 socket on localhost and call (from libempathy) empathy_tp_tube_new_stream_tube (selected_contact, TP_SOCKET_ADDRESS_TYPE_IPV4, “127.0.0.1”, PORT, “MyGreatGame”);
  3. That’s all for the initiator side, the remote contact will see his empathy status icon blink.
  4. On the receiver side the application must register the DBus service “org.gnome.Empathy.StreamTubeHandler.MyGreatGame” by installing a .service file. When started the application must create a EmpathyTubeHandler object: empathy_tube_handler_new (TP_TUBE_TYPE_STREAM, “MyGreatGame”); and connect to the “new-tube” signal on that object.
  5. Each time someone offers a tube that “new-tube” signal is emitted and give a EmpathyTpTube object.
  6. When you get that tube object you can call empathy_tp_tube_accept_stream_tube (tube, TP_SOCKET_ADDRESS_TYPE_IPV4) and get the socket using empathy_tp_tube_get_socket (tube, &hostname, &port).
  7. Open that socket and both sides can communicate over it.

Now is time for Abiword, Inkscape, gnome-games, and all other network application to stop reimplementing an IM system! Please use libempathy and libempathy-gtk to make your live easier.

Important notes:

– MissionControl 4.65 now stores passwords in gnome-keyring, if you upgrade it don’t forget to retype the password of all accounts you configured with the old MissionControl to make sure the password get removed from gconf and added to gnome-keyring.

– Empathy 0.23.1 do not use MissionControl’s system to dispatch channels, that means that you have to make sure that you don’t keep .chandler and .service files from previous installations. If you are using packaged version of empathy it shouldn’t be a problem for you.

Various Empathy news

Question about GIT and SVN

Empathy is hosted on svn.gnome.org but I prefer using GIT for the development. In fact only translators are still using SVN, all regular empathy contributors have git branches that I can easily merge. I initially created the git repository using git-svn, then I cloned my repository on a public server so everybody can get a git clone of empathy. Other developers cloned that public repository that I keep in sync with SVN trunk.

I branched to keep 0.22.x stable and continue dev on 0.23.x. I created the gnome-2-22 branch on SVN but I don’t know how to use it with git. I would like to have that branch in my git repository and being able to cherry-pick patches from master to the gnome-2-22 branch. How can I do that? How does other GNOME maintainers that uses GIT?

You can see here how I work with git for empathy.

Audio and Video in Empathy

I released Empathy 0.22.1 yesterday and I enabled VoIP support by default! It works pretty well with latest stream-engine (0.5.0). Audio should work with SIP. Audio/Video should work with jabber and compatible with google talk.

Google Summer of Code

We currently have 3 students for the Google Summer of Code 2008. They proposed 3 really interesting tasks:
1) Create a dedicated program for named chatrooms (IRC and Jabber) looking like xchat-gnome.
2) Improve webcam support. Porting empathy to the future libstream-engine using farsight2. Integrate with cheese for effects and things like taking a photo and use it as avatar. Etc…
3) Improve chat themes by plugins. Add optional use of webkit to display adium themes.

Edit: GSoC projects are not yet accepted, those are only proposed tasks for now.

ANNOUNCE: Empathy 0.22.0

GNOME 2.22.0 tarball due is today so everyone is releasing! I released Empathy 0.22.0, that’s the version that would be 2.22.0 if it was accepted in the GNOME desktop. I branched for GNOME 2.22 so work continue in HEAD to make 2.24 rock solid.

It is time to think  about Google Summer of Code, last year empathy had 2 succesfull projects: Adding filetransfer (work still need to be reviewed) and audio/video (merged but not activated by default yet). For 2008 I have cooked a quick list of possible works, if someone is interested by one of those please contact me.

• Move chatroom UI to a dedicated program looking like xchat-gnome.
• Implement file transfer spec in all known Connection Managers.
• Finish porting empathy to telepathy-glib to drop libtelepathy dep.
• Write user and API documentation for empathy.
• Improve call UI, make possible to embed it in chat window, etc. Move to libstream-engine or whatever will replace s-e’s DBus API.
• Meta-contacts
• import info in empathy from other clients like pidgin (logs, accounts, etc).
• Design a personal smileys interface and implement it in telepathy-butterfly and empathy.
• Design a xhtml-im interface and implement it in all CM and empathy.
• Make use of constructors in all objects instead of having code in empathy_*_new().
• Porting telepathy stack to Windows/OSX.
• Write unit tests and make sure empathy don’t have leaks using valgrind. Move current tests to GTest.
• Make a plugin system for chat themes, demonstrate with a theme supporting LaTeX math equations.
• Implement contact info in all known CM and empathy

ANNOUNCE: Empathy 0.21.91

Yet another empathy release! As empathy is not yet part of GNOME desktop I’m not following freezes, so this version has news features ;D

The VoIP support in empathy is now far better, but you’ll need not-yet-released versions of farsight and stream-engine which fixes lots of issues, we should get new releases of those modules rsn.

Empathy has now decent UI for configure Jabber/GTalk/Yahoo/ICQ/IRC/MSN protocols, I refactorised the code to generate those specialised UI and it’s now just a matter of a glade file with 15lines of C… So if you’re using another protocol (thanks to telepathy-haze empathy supprots all piding protocols)  and want to give a try using empathy, I would be happy to get patches!

For those of you wanting to contribute using git, please read the “commit message” topic on my git howto.

Empathy 0.21.5.x released

Monday was not a good day to release telepathy packages: Empathy 0.21.5 and 0.21.5.1 got released with FTBFS, MissionControl 4.53 and 4.54 got released but was unable to start, pymsn 0.3.0 and telepathy-butterfly 0.3.0 got released and bugs were discovered directly…

So we now have Empathy 0.21.5.2, telepathy-mission-control 4.55, pymsn 0.3.1 and telepathy-butterfly 0.3.1 ready and hopefully not too much buggy.

I proposed Empathy for inclusion into GNOME desktop 2.22 but it got rejected for various good reasons, mainly because it’s still a young and instable project and needs more polish. So if you like empathy and want a good IM client for GNOME 2.24 your help is needed to improve it.

pymsn and telepathy-butterfly 0.3.x are  a complete rewrite to support MSNP15, Empathy is the first free client supporting MSN protocol version 15 thanks to Ali Sabil and all pymsn/butterfly contributors. Work will continue to support more features like file transfer, audio/video, custom smileys, nudges, etc. If you like python language and want a better MSN support for telepathy clients you can help pymsn and telepathy-butterfly projects.