vendredi, mai 17 2019

Rust+GNOME hackfest in Berlin

Last week I had the chance to attend for the first time the GNOME+Rust Hackfest in Berlin. My goal was to finish the GstVideoDecoder bindings, keep learning about Rust and meet people from the GNOME/Rust community. I had some experience with gstreamer-rs as an user but never actually wrote any bindings myself. To make it even more challenging the underlying C API is unfortunatelly unsafe so we had to do some smart tricks to make it safe to use in Rust.

I'm very happy with the work I managed to do during these 4 days. I was able to complete the bindings as well as my CDG decoder using them. The bindings are waiting for final review and the decoder should hopefully be merged soon as well. More importantly I learned a lot about the bindings infrastructure but also about more advanced Rust features and nice API design patterns. Turned out it's much easier to write Rust when you are sitting next to the gtk-rs maintainers. ;)

I'm very grateful to Guillaume and Sebastian for all the time they spent answering my questions and helping fighting the Rust compiler. Thanks also to Alban for letting me stay at his place, to Zeeshan and Kinvolk for organizing and hosting the hackfest and to Collabora for sponsoring my trip.


vendredi, novembre 8 2013

Building a single GNOME module using jhbuild

I often see new contributors (and even seasoned hackers) wanting to hack on a GNOME module, say Empathy, trying to build it using:

jhbuild build empathy

This is obviously correct but asks jhbuild to build not only Empathy but also all its dependencies (62 modules) so you'll end up building most of the GNOME stack. While building a full GNOME stack may sometimes be useful that's generally not needed and definitely not the easiest and fastest way to proceed.

Here is what I usually do.

First I make sure to have installed all the dependencies of the module using your distribution packaging system. This is done on Fedora using:

sudo yum-builddep empathy

or on Ubuntu/Debian:

sudo apt-get build-dep empathy

If you are using a recent distribution, there are good chances that most of these dependencies are still recent enough to build the module you want to hack on. Of course, as you are trying to build the master branch of the project some dependencies may have been bumped to one of the latest developement releases. But first let's try to build just Empathy.

jhbuild buildone empathy

There are good chances that some dependencies are missing or are too old, you'll then see this kind of error message:

No package 'libsecret-1' found
Requested 'telepathy-glib >= 0.19.9' but version of Telepathy-GLib is 0.18.2

That means you'll have to build these two libraries in your jhbuild as well. Just check the list of depencies of the module to find the exact name of the module:

jhbuild list empathy | grep secret
jhbuild list empathy | grep telepathy

In this example you'll see you have to build the libsecret and telepathy-glib modules:

jhbuild buildone libsecret telepathy-glib

Of course these modules may have some extra depencies on their own so you may have to do some iteration of this process before being able to actually build the module you care about. But, from my experience, if you are using a recent distribution (like the latest Fedora release) the whole process will still be much faster than building the full stack. Furthermore, it will save you to have to deal with build errors from potentially 62 modules.

lundi, septembre 17 2012

GNOME 3.6 Brussels party

Next week GNOME 3.6 will be released upon the world. That's the perfect excuse to meet the day after the release (Thursday 27th) and share some beers together. All the infos are on the wiki.

lundi, juillet 30 2012

Empathy BoF at GUADEC

I'll lead an Empathy BoF session tomorrow (Tuesday) from 4 to 6 (room 2.2a) feel free to show up if you are interested about the recent redesign work we have done in Empathy and our plans for the future.

Btw, a bunch of people have asked me about two annoying Telepathy issues:

 * GTalk contacts not showing up. That's actually a telepathy-glib bug which has been fixed in 0.18.2. If you are running F17 you can upgrade by grabbing the package from updates-testing: yum --enablerepo=updates-testing update telepathy-glib
 * Not being able to chat with 'People Nearby' contacts. Turns out that's because of Fedora's stupid firewall blocking incoming connections; disabling the firewall should make you reachable with Salut.

vendredi, juin 15 2012

New Empathy contact list

I've been working for a while implementing a new Empathy contact list and I'm happy to announce that this work just reached master! It's based on a brand new design from Allan; I'm pretty happy with the result as it looks pretty similar to the mockups.

This new contact list has been implemented using Alexander's awesome EggListBox. This new GTK+ container has been extracted from Contacts to its own git repository to be easily usable by other applications using git submodule or subtree. If you've ever cursed at GtkTreeView for being such a pain to use you should really give it a try. It's a delight to use: you can pack any GtkWidget in it and so don't have to use GtkTreeModel and GtkCellRenderer any more.

New Empathy roster - no group

One of the goals of this new design is to unify the way contacts are presented to users across the whole GNOME desktop, which is why it looks pretty similar to Contacts. We also wanted to make it look 'cleaner' so presence statuses are now only displayed if the contact explicitly defined one. Groups have been disabled by default as most users don't really use them (they are not as useful as they used to be as you can quickly find any contact using the integrated live search) but can easily be re-enabled in the preferences dialog.

A very nice feature of this new roster are the 'top contacts' which are always displayed at the top of the contact list. It contains the contacts you tagged as 'favourite' but also the contacts you to talk most often. This is done using Folks's Zeitgeist integration[1].

New Empathy roster - groups

I want to thanks all the people involved especially Alexander for his help with EggListBox, Allan for his design, Seif for the Zeitgeist integration, Danielle who reviewed my code, Intel who funded parts of the Folks and Zeitgeist work and of course Collabora who sponsored most of this work.


[1] It's actually disabled atm as we are waiting for a Folks release which should happen soon

lundi, avril 16 2012

GNOME 3.4 Brussels party this Thursday at 'Chaff'

GNOME 3.4 has been released since a short while and we didn't find the time to properly celebrate it here in Brussels. It's time to fix this critical mistake and so I'm glad to announce the GNOME Brussels Beer 3.4 party this Thursday. Feel free to join us if you're around and want to share some beers with us.

lundi, janvier 16 2012

GNOME Beer event at FOSDEM 2012

Despite what some stats may say, my biggest contribution to GNOME is not in bugs or code but in the organization of beer related events!

So I'm pleased to announce that, like each year, we'll have a GNOME Beer party on the Saturday night of FOSDEM (4th Feb). People seemed happy of the location of last year, so we decided to stay at "La Bécasse" in the city center. Feel free to add yourself to the wiki if you are planning to attend.

See you at FOSDEM!

mardi, septembre 27 2011

Calling phone numbers in GNOME 3.2

One of my favourite feature of my N900 is the ability to very easily call a contact using my SIP account. Calling phone numbers in Empathy through SIP is possible since a while using the New Call dialog but you have to enter the number manually which can be annoying. Thanks to Folks's evolution-data-server backend, GNOME 3.2 will allow you to very easily call contacts from your address book!

First step is to mark a SIP account as being able to call phone numbers. We added an option for that in the accounts dialog.


Then if an IM contact is linked to an Evolution one having at least a phone field, you can call him from the contact list! Soon you should be able to call IM contacts publishing their phone numbers in their personal personal info as well.


You can also call any contact using gnome-contact directly; just click on the phone icon next to the phone number.

gnome contacts

This is pretty cool because thanks to gnome-shell's contact integration it's now easier than ever to call a contact. Just search for him in the Shell overview and then start the call from gnome-contacts. That's the kind of integration we were aiming for when we started the Telepathy and Folks projects and it's great to see that we are finally getting there!

jeudi, septembre 15 2011

GNOME Brussels Beer 3.2

It's been a while since our first beer event and the GNOME 3.0 release party so I'm please to announce that the GNOME Brussels Beer 3.2 event will be the 22th Sept (next Thursday).

As you can see I synced the version with GNOME releases as a I think it's a good idea to have at least one per release. :)

So if you're around, feel free to add your name on the event page and join us!

See you there!

lundi, août 29 2011

Shiny new UI in Empathy 3.2

One of our main goals during this developement cycle was to continue improving Empathy's user experience by re-designing different parts of the UI. To do so our Empathy team at Collabora worked closely with designers from the awesome GNOME Design Team.

The log viewer has been completely re-written based on an original design from Matthew Paul Thomas (Canonical). As you can see, this new log viewer now displays calls and offers different options to easily search through the mass of logs.

Empathy 3.2 will also introduce a whole new experimental user interface for audio and video calls designed by Nick Richards (Intel). The new UI is based on Clutter and allows users to select the webcam and microphone used during the call, move the video preview around, etc. It should also gain support for video effects once Raluca finishes integrating her work with Nick's design. This new UI will be optional in 3.2 as it relies on new Telepathy API but will definitely become the default as soon as those API are stabilised.

Not actually me

I have to say that working closely with designers is a really enjoyable experience. It's good to have people to ask to when we are unsure about the best way to present a feature or an option to users. I'm really looking forward to continuing to improve Empathy with them.

jeudi, août 11 2011

GNOME IM integration BoF today at 4

As some people have to leave earlier today, the GNOME IM Integration BoF will a start at 4 rather than 5 today. See you there, room 1.204

vendredi, août 5 2011

GNOME IM integration BoF during the Desktop Summit

Like 36 other Collaborans, I'm going to attend to the Desktop Summit in Berlin.

I'll lead the GNOME IM integration BoF session on Thursday. It will basically be a follow up of our Hackfest in June so if you are interested into instant messaging integration in GNOME feel free to join us.

mercredi, juin 8 2011

IM, Contacts & Social hackfest

I'm happy to announce that next week a bunch of developers and designers from Telepathy, libsocialweb, Empathy, Folks and GNOME will meet in Cambridge (UK) for the first IM, Contacts & Social GNOME hackfest.

We are going to work on making GNOME a more social desktop. This includes improve IM and contacts integration into the Shell, the new Contact app, the Online accounts panel, etc.

Thanks to my employer, Collabora, for hosting and allowing me to organise this event.

So stay tune next week for more info. :)

mardi, avril 12 2011

GNOME 3.0 Brussels party this Wednesday at 'Chaff'

The GNOME 3.0 Brussels Launch Party will be this Wednesday at Chaff (the same place where we did our first GNOME beer event) from 6:30 pm.

We'll order food around 8 and we'll have a bunch of GNOME 3 goodies to give away.

I know it's pretty short notice, sorry for that, but we had some troubles to find a place. We were initially looking for a place that would have allowed us to do some presentations but didn't find any. Anyway, we'll have beers which is certainly the most important thing. :)

See you there!

mercredi, mars 16 2011

New Empathy icon!

Since its first release, Empathy was using the Telepathy logo as icon.

This icon suffers different problems, the main ones being its look in smaller sizes. Also, 2 blue heads may not be the best way to present an IM client to users.

So, after lot of discussions and different propositions, Empathy has now, thanks to Jakub Steiner, a new icon! As you can see, we now have slightly different versions depending on the size.

I hope you'll like it!

mardi, décembre 7 2010

GNOME Brussels Beer 1.0

We have a ressonably good Belgian GNOME community (for such a small country) but even so we only see each other once or twice per year. In order to try to improve that I'm happy to announce the first GNOME Brussels Beer event which will take place the 15th December[1].

The idea is pretty similar to the London Beer events: meet at some nice place to discuss around some beers (except ours will be proper beers ;).

So if you're around Brussels this day, feel free to join us!


[1] I know it's a bit short notice, sorry for that. Hopefully the next ones will be announce earlier

vendredi, octobre 1 2010

What's new in Empathy 2.32.0?

GNOME 2.32 was released a few days ago. As most of the developers focused on the upcoming 3.0 it's not exactly the most exciting release ever but I'm glad to say that Empathy is one of the modules with the most user-visible changes.

  • The main one is definitely meta-contacts. Thanks to the awesome work of Travis Reitter and Philip Withnall, it is now possible to easily link contacts together. This has been achieved using Folks, our new contacts aggregator library. See Travis's post if you want to know more about Folks.

  • Another new feature I really like is the contacts list live search implemented by Felix Kaser and Xavier Claessens. It allows you to very quickly find any of your contact by typing in the contact list. I hope to see more GNOME applications using this feature in the future as it's a very efficient way to dig through a treeview. Xavier even proposed to add this feature directly to GTK+. See Felix's post if you want to see it in action.
  • Notifications bubbles now have actions buttons allowing you to quickly accept or decline incoming events such as calls, file transfers, room invitations, etc.

  • Server certificates have been improved thanks to Cosimo Cecchi. Empathy can now ask the user if he wants to accept an untrusted certificate.

  • The IRC account widget has been improved to make it easier to select your IRC network. You can easily search through the list of networks using the live search feature and you can now create IRC accounts using the accounts assistant.

  • Empathy is now able to display vCard of your contacts and allow you to edit your own.

  • The audio/video pane gained a Details page displaying technical info about the call such as the codecs used which is always nice when you want to know what's going one without digging the logs

  • Some preferences have been added, by popular request, such as the ability to disable chat logging or automatically display incoming events (without blinking in the status area).
  • Connection error messages have been improved. Hopefully it should now be easier to understand the problem when an account fails to connect.
  • Empathy is now using status icons from the theme so artists can easily tweak them to fit well with the rest of your desktop.

Once you'll update your distribution you'll probably also update your Telepathy components. These upgrades should bring you some nice new features as well:

  • GTalk compatible p2p file transfers allowing you to exchange files with users of Google's GTalk desktop client. See Youness's post for details.
  • MSN file transfers and the return of MSN audio/video calls
  • And, last but not least, proxy support! Telepathy-gabble and telepathy-butterfly should now be able to make use of your proxy settings when connecting. Once again, best to check the blog of the one who implemented the feature if you are interested in details: Nicolas

Most of this work has been sponsored by my employer Collabora. But let's not forget all the contributors who have done a great job at reporting and triaging bugs, submitting patches, writing documentation, translating, etc. Your hard work is greatly appreciated!

jeudi, juillet 8 2010

Empathy ported to GTK+3

As a good GNOME citizen, Empathy 3.0 will have to be able to build with GTK+3. As Ubuntu is not going to ship GTK+3 by default in its next release, we decided to stay compatible with GTK+2 for this cycle.

Empathy already built with GSEAL checks so porting was just a matter of playing with autoconf. Libraries linking to GTK+ itself have to be updated as we can't use GTK+2 and GTK+3 in the same process:

  • libcanberra-gtk, webkit-gtk and libunique now have releases using GTK+3 instead of GTK+2 so all we had to do was to change the PKG_CHECK_MODULES calls to check for the -3 flavour of the libs.
  • nautilus-sendto plugin has been ported as well since 2.90.0 but it breaks its public API so we had to do some #ifdef magic to stay compatible with older versions.
  • Since 0.5.1 libnotify doesn't link on GTK+ any more but use GModule instead (Thanks Bastien!) so we just had to make sure that this version was used when building with GTK+3.
  • Unfortunately clutter-gtk and champlain haven't been ported to GTK+3 yet so we had to disable champlain support for now. I hope to see a port of these libs soon.

During configure, we check if GTK+3 is present; if it is then we check for these new version of the deps. If it's not or if Empathy has been configured with --enable-gtk3=no then we continue to use GTK+2 and the old versions of the libs.

If you're interested in details, everything has been merged to master so you just have to look at Empathy's file.

This should hopefully make all the distributions happy during the transition. Once Empathy 3.0 is released we'll drop GTK+2 compatiblity and will start using the fancy new features offered by GTK+3.

mercredi, octobre 21 2009

Empathy 2.30 Roadmap

More and more distributions are now planning to ship Empathy as their default chat client: Fedora, Mandriva, Moblin, OpenSuse, Ubuntu, and so on. As a result of this, and because we want to offer the best experience to our users, we at Collabora decided to put more resources on the Empathy project. That's why, as of this Monday, I'm now working full-time on Empathy, and have become co-maintainer with Xavier.

One of my first tasks has been to write a roadmap for Empathy 2.30. As I said on the wiki page, these are really just guidelines detailing the general direction we want to give to the project. We'll, of course, continue to review patches[1] from contributors and to fix nasty issues such as regressions and crashers reported by users.

So don't hesitate to report any issue you could have experienced with Empathy and join the Empathy/Telepathy community to help us to make 2.30 rock!


[1] yay for the new review feature on the GNOME Bugzilla!

mardi, septembre 22 2009

Empathy 2.28: Easy Desktop Sharing

One of my favorite new feature in Empathy 2.28 is definitely the Vino and Vinagre integration. Users can now easily share their desktop with their contacts by a simple click in Empathy. The contact then receives an invitation which will automatically launch Vinagre and connect it to the Vino server of the sharer. No need to worry about sending your internet IP or open and forward a port in your firewall; all the technical details are hidden to offer the easiest user experience as possible.

This integration between IM and application is done by using Telepathy tubes in Vino and Vinagre. Kudos to Arnaud Maillet who worked on this as his internship project at Collabora and to the Vino/Vinagre developpers who welcomed our work with lot of enthusiasm.

With the switch to Mission Control 5, I hope to see more and more projects starting to use Telepathy in order to increase the collaborative user experience in the GNOME desktop.

What next?

Better integration

Mission Control 5 and the new ContactCapabilities interface will allow us to improve the integration during the 2.30 cycle. We'll be able to hide the 'Share my desktop' button if Vino hasn't been built with Telepathy support and to unsensitive it if the contact doesn't have a tube enabled Vinagre installed.

Better performance

Currently telepathy-gabble tries to connect the tube to the peer using the following algorithm:

  • If available connect to peer's IPv6 address
  • Try to connect to peer's IPv4 address
  • Try to use a SOCKS5 proxy
  • Fallback to IBB

That means that if your are on a different LAN than your contact, without IPv6, and that your Jabber doesn't provide a fast SOCKS5 proxy, the connection will be pretty slow. We hope to solve this at some point by implementing stream tube Jingle NAT penetration in telepathy-gabble. Thanks to the Telepathy abstraction, Vino and Vinagre won't have to change a single line of code to benefit from this improvement; they'll magically start to use it as soon as Gabble gains this feature!

KDE interoperability

George is also working on implementing similar feature in KDE using Kopete, krdb and krdc. Easy cross desktop sharing is coming!


Share your desktop in one click

- page 1 de 3