I'll soon be flying to Greece for GUADEC but wanted to mention one of the things I worked on the past couple of weeks: the low-memory-monitor project is off the ground, though not production-ready.
low-memory-monitor, as its name implies, monitors the amount of free physical memory on the system and will shoot off signals to interested user-space applications, usually session managers, or sandboxing helpers, when that memory runs low, making it possible for applications to shrink their memory footprints before it's too late either to recover a usable system, or avoid taking a performance hit.
Ubuntu 18.04.3 LTS has just been released. As usual with LTS point releases, the main changes are a refreshed hardware enablement stack (newer versions of the kernel, xorg & drivers) and a number of bug and security fixes.
For the Desktop, newer stable versions of GNOME components have been included as well as a new feature: Livepatch desktop integration.
For those who aren’t familiar, Livepatch is a service which applies critical kernel patches without rebooting. The service is available as part of an Ubuntu Advantage subscriptions but also made available for free to Ubuntu users (up to 3 machines). Fixes are downloaded and applied to your machine automatically to help reduce downtime and keep your Ubuntu LTS systems secure and compliant. Livepatch is available for your servers and your desktops.
Andrea Azzarone worked on desktop integration for the service and his work finally landed in the 18.04 LTS.
To enabling Livepatch you just need an Ubuntu One account. The set up is part of the first login or can be done later from the corresponding software-properties tab.
Here is a simple walkthrough showing the steps and the result:
The wizard displayed during the first login includes a Livepatch step will help you get signed in to Ubuntu One and enable Livepatch:
Clicking the ‘Set Up’ button invites you to enter you Ubuntu One information (or to create an account) and that’s all that is needed.
The new desktop integration includes an indicator showing the current status and notifications telling when fixes have been applied.
You can also get more details on the corresponding CVEs from the Livepatch configuration UI
You can always hide the indicator using the toggle if you prefer to keep your top panel clean and simple.
After more than a year of work libfprint 1.0 has just been released!
It contains a lot of bug fixes for a number of different drivers, which would make it better for any stable or unstable release of your OS.
There was a small ABI break between versions 0.8.1 and 0.8.2, which means that any dependency (really just fprintd) will need to be recompiled. And it's good seeing as we also have a new fprintd release which also fixes a number of bugs.
Benjamin Berg will take over maintenance and development of libfprint with the goal of having a version 2 in the coming months that supports more types of fingerprint readers that cannot be supported with the current API.
From my side, the next step will be some much needed modernisation for fprintd, both in terms of code as well as in the way it interacts with users.
Christian recently released bolt 0.8, which includes IOMMU support. The Ubuntu security team seemed eager to see that new feature available so I took some time this week to do the update.
Since the new version also featured a new bolt-mock utility and installed tests availability. I used the opportunity that I was updating the package to add an autopkgtest based on the new bolt-tests binary, hopefully that will help us making sure our tb3 supports stays solid in the futur
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.
Gstreamer's logging system is an incredibly powerful ally when debugging but it can sometimes be a bit daunting to dig through the massive amount of generated logs. I often find myself writing small scripts processing gst logs when debugging. Their goal is generally to automatically extract some specific information or metrics from the generated logs. Such scripts are usually quickly written and quickly disposed once I'm done with my debugging but I've been wondering how I could make them easier to write and to re-use.
gst-log-parser is an attempt to solve these two problems by providing a library parsing GStreamer logs and enabling users to easily build such tools. It's written in Rust and is shipped with a few tools that I wrote to track actual bugs in GStreamer elements and applications.
One of those tool is a buffer flow analyzer which can be used to provide various information regarding the buffers exchanged through your pipeline. It relies on logs generated by the upstream stats tracer, so no modification in GStreamer core or in plugins is required.
First step is to generate the logs, this is easily done by defining these env variables: GST_DEBUG="GST_TRACER:7" GST_DEBUG_FILE=gst.log GST_TRACERS=stats
We can then use flow for example to detect decreasing pts or dts:
Or to detect gaps of at least 100ms in the buffers flow:
cargo run --release --bin flow gst.log gap 100
gap from udpsrc0:src : 00:00:00.100142318 since previous buffer (received: 00:00:02.924532910 previous: 00:00:02.824390592)
It can also be used to draw graphs of the pts/dts produced by each src pad over time:
cargo run --release --bin flow gst.log plot-pts
These are just a few examples of the kind of information we can extract from stats logs. I'll likely add more tools in the future and I'm happy to hear suggestions about other features that would make your life easier when debugging GStreamer.
Régulièrement, j’entends des utilisateurs se plaindre de ce format de paquet, qui occuperait un peu plus d’espace disque ou qui aurait encore quelques bugs de jeunesse, comme le thème de l’application qui pourrait différer de celui de l’utilisateur ou, plus ennuyeux, l’impossibilité de pouvoir jouir de certaines fonctionnalités, qui seraient pourtant disponibles dans la version standard, non exécutée dans un « bac à sable ».
Mais il faut voir sur le long terme. La version 1.0 est enfin sortie au mois d’août 2018, après plusieurs années de développement, ce qui permet de franchir un premier cap. Maintenant, il faut savoir que si elles n’ont pas été directement pensées pour ce mode de fonctionnement, certaines applications ont besoin d’être adaptées pour pouvoir fonctionner parfaitement. Mais ce n’est qu’une question de temps et ça ne doit pas éclipser pour autant les nombreux avantages déjà permis.
Tout d’abord, nous pouvons citer la sécurité. Les applications Flatpak sont exécutées dans un environnement « bac à sable » (sandbox) sûr, isolé du reste du système. Mieux encore, comme pour les applications mobiles, les développeurs doivent déclarer dans un manifeste de quelles autorisations ils souhaitent pouvoir bénéficier : accès au dossier personnel de l’utilisateur, à certains périphériques (webcam, micro…), à la géolocalisation… Droits que l’utilisateur est libre d’accorder ou révoquer à tout moment. Alors oui, pour un logiciel libre dans lequel l’utilisateur a toute confiance, ça n’a pas forcément grand intérêt, mais dans le cas de logiciels propriétaires, véritables boîtes noires dont on ne sait rien, ça peut tout de suite être plus intéressant.
Autre avantage important, la possibilité offerte aux développeurs de pouvoir atteindre directement l’ensemble de leurs utilisateurs sans attendre le bon vouloir des différentes distributions. Une nouvelle version vient de sortir, un Flatpak est proposé et tout le monde peut en bénéficier, sans avoir à se soucier du système de paquet utilisé par la distribution (DEB, RPM…) ou de la compatibilité des bibliothèques.
Non seulement les développeurs pourront proposer un paquet universel dès la publication de leur application, mais ce dernier pourra représenter la version idéale telle qu’ils l’ont souhaité.
Parce qu’il faut savoir que les paquets des différentes distributions sont souvent bien loin de correspondre à cet idéal. Par exemple, pour des raisons philosophiques ou juridiques, les distributions peuvent très bien désactiver certaines fonctionnalités au moment de la compilation. Des distributions comme Debian ou Fedora, qui font très attention aux quatre libertés du logiciel libre ainsi qu’aux brevets logiciels, préfèrent ainsi se passer de certaines fonctionnalités (par exemple, un algorithme qui serait protégé par un ou plusieurs brevets), plutôt que de se priver de l’application dans son ensemble. Sans parler des nombreux patchs que les distributions peuvent appliquer, dans le but de modifier volontairement le comportement de l’application. Que ces changements soient ou non positifs, l’utilisateur peut très bien préférer la vision des développeurs officiels.
Puis comme les paquets sont identiques pour tous et que les applications sont exécutées dans le même environnement, là encore identique, si l’application fonctionne bien chez le développeur, elle fonctionnera tout aussi bien chez les utilisateurs. Et si l’utilisateur rencontre un bug, ce dernier devrait être plus facilement reproductible par le développeur. Il sera donc bien plus simple d’offrir des garanties et de corriger certains problèmes.
C’est également un gain de temps pour les développeurs, qui n’auront plus à se soucier que d’un unique Flatpak, plutôt que de créer de nombreux paquets pour différentes distributions (quand ils ne se contentent pas, bien souvent, de ne viser qu’une ou deux distributions majeures, laissant les autres sur le carreau).
Alors bien sûr, on se dit que les différentes distributions ont leurs propres contributeurs pour empaqueter toutes ces applications (petite parenthèse pour rappeler que les distributions ne se préoccupent, en général, que de logiciel libre, et que l’éditeur d’une application propriétaire ne bénéficiera pas de toute cette main d’œuvre). Mais quand on y pense, que de temps humain gaspillé à recréer tous ces paquets, chacun dans leur coin, pour les mêmes applications… Sans parler des plus petites distributions, qui n’ont pas forcément les moyens humains de gérer tout ça. Ne serait-il pas plus intéressant de pouvoir créer un paquet universel une fois pour toute, et de pouvoir ensuite se concentrer sur des tâches plus gratifiantes ou plus utiles ?
Autre avantage auquel on ne pense pas forcément, la possibilité d’installer sans risque plusieurs versions en parallèle. Que ce soit une version stable et une version de développement à des fins de test, ou une ancienne version stable qui pourrait proposer des fonctionnalités dont on a besoin mais qui auraient malheureusement été supprimées des versions plus récentes (l’évolution des logiciels que l’on utilise ne nous convient pas toujours).
La compatibilité dans le temps devrait également être renforcée. Aujourd’hui, de souhaiter utiliser de vieilles applications abandonnées par leurs développeurs (et donc non adaptées à des systèmes modernes) peut rapidement devenir compliqué, pour ne pas dire impossible pour la plupart des gens, puisque toutes les distributions n’acceptent pas forcément le risque et la charge de travail supplémentaire que représentent de vieilles applications abandonnées ou des bibliothèques obsolètes. Et si ce n’est pas géré par la distribution ou la communauté, ça implique bien souvent de devoir mettre les mains dans le cambouis et de compiler soi-même. Tandis qu’avec un Flatpak et son runtime d’époque associé (qui contient les différentes bibliothèques nécessaires à son bon fonctionnement), la distribution n’a plus besoin de s’en préoccuper.
Donc même si ça ne vous intéresse pas et que vous ne prévoyez pas de changer vos habitudes, on ne peut honnêtement pas dire que cette technologie n’a aucun intérêt (ne serait-ce que pour tout le temps que ça fait gagner aux développeurs de logiciels libres, qui travaillent bien souvent bénévolement). Tout comme il faut arrêter de penser que les distributions de type rolling release telles que Arch Linux ou Manjaro soient le Saint Graal. La première exclut tous les néophytes et la seconde, qui désactive (à raison) le dépôt communautaire AUR par défaut, n’offre donc pas forcément le même catalogue applicatif ou les mêmes versions. Et bien évidemment, en dehors de leur capacité à proposer des versions plutôt à jour, ces distributions ne règlent aucun des différents problèmes soulevés (sécurité, reproductibilité, compatibilité, gain de temps…).
Il est donc préférable de se mettre un instant à la place de l’utilisateur néophyte qui peut enfin bénéficier, à tout instant et de façon sécurisée, des dernières versions de ses applications préférées sans avoir à se soucier de toutes les questions techniques sous-jacentes, qui ne l’intéressent pas et ne l’intéresseront jamais : le choix de la distribution et du format de paquet qui en découlera, les éventuels dépôts tiers à activer (parfois gérés de façon plutôt hasardeuse, pour ne pas dire risquée), les dépendances nécessaires, l’installation d’éventuels outils de développement pour compiler soi-même et bien faire attention à chaque installation ou mise à jour à ne surtout rien casser…
La question est donc de savoir si l’on souhaite ou non démocratiser l’utilisation de GNU/Linux auprès du grand public. Et si c’est le cas, Flatpak pourrait grandement nous y aider.
I am re-reading “The Great Gatsby” – my high-school son is studying it in English, and I would like to be able to discuss it with him with the book fresh in my mind – and noticed this passage in the first chapter which really resonated with me.
…I went out to the country alone. I had a dog — at least I had him for a few days until he ran away — and an old Dodge and a Finnish woman, who made my bed and cooked breakfast and muttered Finnish wisdom to herself over the electric stove.
It was lonely for a day or so until one morning some man, more recently arrived than I, stopped me on the road.
“How do you get to West Egg village?” he asked helplessly.
I told him. And as I walked on I was lonely no longer. I was a guide, a pathfinder, an original settler. He had casually conferred on me the freedom of the neighborhood.
In particular, I think this is exactly how people feel the first time they can answer a question in an open source community for the first time. A switch is flipped, a Rubicon is crossed. They are no longer new, and now they are in a space which belongs, at least in part, to them.
I recently moved home and got FTTC with PlusNet, the speed is good when measuring (almost the advertised 80Mb/20Mb) but the connection was unusable due to TCP connections hanging every few minutes (very annoying with ssh but screen helps, worse when using a website for a payment and needing to retry and trust you will only be charged once).
Yesterday I decided to sit down and investigate. Router has logs which were quite helpful. A lot of things like OUT: BLOCK  Packet invalid in connection (Invalid tcp flags for current tcp state: TCP [192.168.1.73]:54426->[18.104.22.168]:443 on ppp3)
This followed the laptop being seen moving from interface ath10 to interface ath00 and it was moving back and forth quite often.
Looking at the logs on one of the laptops those switches looked like wlan0: disconnect from AP b8:d9:4d:41:76:fb for new auth to b8:d9:4d:41:76:fa
What happened is that default settings on PlusNet router is to have “identical” 2.4GHz and 5GHz networks so the devices believe they are the same network and switch between AP, but they are actually different and the connection tracking gets reset each time such switch happens.
Disabling the 5GHz network made my connection usable, I could probably just change its settings to make it separate.
We are pleased to announce the Call for Participation in the FOSDEM 2018 Software Defined Networking and Network Functions Virtualization DevRoom!
Nov 16: Deadline for submissions
Dec 1: Speakers notified of acceptance
Dec 5: Schedule published
This year, as it has for the past two years, the DevRoom topics will cover two distinct fields:
Software Defined Networking (SDN), covering virtual switching, open source SDN controllers, virtual routing
Network Functions Virtualization (NFV), covering open source network functions, NFV management and orchestration tools, and topics related to the creation of an open source NFV platform
We are now inviting proposals for talks about Free/Libre/Open Source Software on the topics of SDN and NFV. This is an exciting and growing field, and FOSDEM gives an opportunity to reach a unique audience of very knowledgeable and highly technical free and open source software activists.
This year, the DevRoom will focus on the emergence of cloud native Virtual Network Functions, and the management and performance requirements of those applications, in addition to our traditional focus on high performance packet processing.
A representative, but not exhaustive, list of the projects and topics we would like to see on the schedule are:
Low-level networking and switching: IOvisor, eBPF, XDP, DPDK, fd.io, Open vSwitch, OpenDataplane, Free Range Routing, …
SDN controllers and overlay networking: OpenStack Neutron, Calico, OpenDaylight, ONOS, Plumgrid, OVN, OpenContrail, Midonet, …
NFV related features: Service Assurance, enforcement of Quality of Service, Service Function Chaining, fault management, dataplane acceleration, security, …
Talks should be aimed at a technical audience, but should not assume that attendees are already familiar with your project or how it solves a general problem. Talk proposals can be very specific solutions to a problem, or can be higher level project overviews for lesser known projects.
Please include the following information when submitting a proposal:
The title of your talk (please be descriptive, as titles will be listed with around 250 from other projects)
Short abstract of one or two paragraphs
Short bio (with photo)
The deadline for submissions is November 16th 2017. FOSDEM will be held on the weekend of February 3-4, 2018 and the SDN/NFV DevRoom will take place on Saturday, February 3, 2017. Please use the FOSDEM submission website to submit your proposals (you do not need to create a new Pentabarf account if you already have one from past years). You can also join the devroom’s mailing list, which is the official communication channel for the DevRoom.
Le mois d'août, depuis plus de dix ans, c'est souvent l'occasion de deux billets, un billet sur le GUADEC, rencontre annuelle du projet GNOME, cette année à Manchester, et un autre sur radio Esperanzah!, la radio du festival du même nom.
Certaines années, les agendas se calent parfaitement et ça fait deux semaines intenses, d'autres ça s'est mal mis et j'ai du choisir, cette année ça aurait pu se caler, tout juste, mais étant donnée ma participation déclinante dans GNOME, je suis resté sur le continent pour être en grande forme au festival.
Ne pas arriver épuisé et avoir réduit la voilure pendant l'année, ne plus assurer la captation des concerts, mais surtout être entouré d'une super équipe technique (Leslie, Susie, Pascal, Dimitri, Sylvain), ça a fait de cette édition quelque chose de neuf et très agréable, à en redemander.
Radiophoniquement, c'était aussi l'occasion d'organiser l'antenne différemment en inventant des blocs thématiques, bien sûr ce n'était pas parfait mais c'était ici aussi du neuf qui a pas mal revigoré le groupe. Il y a quantité de podcasts souvenir sur le site de la radio, d'autres à venir encore selon ce qu'on arrive à produire.
Et puis c'était des concerts, des nuits blanches, de l'antenne à pas d'heure, une perf d'AN5, une interview pour Radio World International pas vue venir, des éclats de rire à en mourir.
Last week was SUSE Hackweek and one of my projects was to get Let's Encrypt configured and working on my NAS.
Let's Encrypt is a project aimed at providing SSL certificates for free, in an automated way.
I wanted to get a SSL certificate for my Synology NAS. Synology now supports natively Let's Encrypt but only if the NAS accepts incoming HTTP / HTTPS connections (which is not always what you want).
Fortunately, the protocol used by Let's Encrypt to validate a hostname (and generate a certificate), Automatic Certificate Management Environment (ACME) has a alternative validation path, DNS-01, based on DNS.
DNS-01 requires access to your DNS server, so you can add a validation token used by Let's Encrypt server, to ensure you own the domain name you are requesting a certificate for.
There is a lot of ACME implementations, but very few supports DNS-01 validation with my DNS provider (gandi.net).
I ended-up using acme.sh, fully written in shell script and tried to plug Gandi DNS support in it.
After some tests, I discovered Gandi current DNS service is not allowing fast changing DNS zone informations (which is somehow a requirement for DNS-01 validation). Fortunately, Gandi is now providing a new LiveDNS server, available in beta, with a RESTful HTTP API.
I was able to get it working quite rapidly with curl, and once the prototype was working, I've cleaned everything and created a pull request for integrating the support in acme.sh.
Now, my NAS has its own Let's Encrypt certificate and will update it every 90 days automatically. Getting and installing a certificate for another server (running openSUSE Leap) only took me 5 minutes.
Février arrive, et le FOSDEM aussi ! L'occasion de revoir des amis,
boire des bières et manger des carbonnades flamandes. Tiens, justement une
recette qui aurait toute sa place dans GNOME Recipes. Cette nouvelle
application aura d'ailleurs une petite
conférence de présentation (20min). N'hésitez pas non plus à passer au
stand GNOME poser vos questions ou faire un coucou, ou prendre des stickers
Our annual gathering of GNOMies took place in sunny Karslruhe earlier this
month and as usual it was great to meet again, and this year again GUADEC was
the perfect reminder of the "GNOME is people" spirit.
Nice thing this year was that almost everyone was staying in the same place, or
close; this favoured social gatherings even more than in the previous years.
This was also helped by the organized events, every evenings, from barbecue to
picnic, from local student-run bar to beer garden (thanks
Centricular), and more.
And during the days? Interesting talks of course, like the one offered by
Rosanna about how the foundation runs (and how crazy is the US bank system), or
the Builder update by Christian, and team meetings.
Release team meeting by the pool
Thanks again to the GNOME foundation for supporting travels and accomodations
for lots of persons (including me), and to the organizing committee, you made
one great GUADEC.
After missing the last few GStreamer hackfests I finally managed to attend this time. It was held in Thessaloniki, Greece’s second largest city. The city is located by the sea side and the entire hackfest and related activities were either directly by the sea or just a couple blocks away.
Collabora was very well represented, with Nicolas, Mathieu, Lubosz also attending.
Nicolas concentrated his efforts on making kmssink and v4l2dec work together to provide zero-copy decoding and display on a Exynos 4 board without a compositor or other form of display manager. Expect a blog post soon explaining how to make this all fit together.
Lubosz showed off his VR kit. He implemented a viewer for planar point clouds acquired from a Kinect. He’s working on a set of GStreamer plugins to play back spherical videos. He’s also promised to blog about all this soon!
Mathieu started the hackfest by investigating the intricacies of Albanian customs, then arrived on the second day in Thessaloniki and hacked on hotdoc, his new fancy documentation generation tool. He’ll also be posting a blog about it, however in the meantime you can read more about it here.
As for myself, I took the opportunity to fix a couple GStreamer bugs that really annoyed me. First, I looked into bug #766422: why glvideomixer and compositor didn’t work with RTSP sources. Then I tried to add a ->set_caps() virtual function to GstAggregator, but it turns out I first needed to delay all serialized events to the output thread to get predictable outcomes and that was trickier than expected. Finally, I got distracted by a bee and decided to start porting the contents of docs.gstreamer.com to Markdown and updating it to the GStreamer 1.0 API so we can finally retire the old GStreamer.com website.
I’d also like to thank Sebastian and Vivia for organising the hackfest and for making us all feel welcomed!
For this contest, the rules came with a list of penalties and bonuses which made it easier for people to participate. And indeed, there were quite a number of participants with the schedule for booking slots being nearly full. While deploying Kilo was a goal, you could go with older releases getting a 10 minutes penalty per release (so +10 minutes for Juno, +20 minutes for Icehouse, and so on). In a similar way, the organizers wanted to see some upgrade and encouraged that with a bonus that could significantly impact the results (-40 minutes) â€” nobody tried that, though.
And guess what? SUSE kept the crown again. But we also went ahead with a new challenge: outperforming everyone else not just once, but twice, with two totally different methods.
For the super-fast approach, Dirk built again an appliance that has everything pre-installed and that configures the software on boot. This is actually not too difficult thanks to the amazing Kiwi tool and all the knowledge we have accumulated through the years at SUSE about building appliances, and also the small scripts we use for the CI of our OpenStack packages. Still, it required some work to adapt the setup to the contest and also to make sure that our Kilo packages (that were brand new and without much testing) were fully working. The clock result was 9 minutes and 6 seconds, resulting in a negative time of minus 10 minutes and 54 seconds (yes, the text in the picture is wrong) after the bonuses. Pretty impressive.
But we also wanted to show that our product would fare well, so Adam and I started looking at this. We knew it couldn't be faster than the way Dirk picked, and from the start, we targetted the second position. For this approach, there was not much to do since this was similar to what he did in Paris, and there was work to update our SUSE OpenStack Cloud Admin appliance recently. Our first attempt failed miserably due to a nasty bug (which was actually caused by some unicode character in the ID of the USB stick we were using to install the OS... we fixed that bug later in the night). The second attempt went smoother and was actually much faster than we had anticipated: SUSE OpenStack Cloud deployed everything in 23 minutes and 17 seconds, which resulted in a final time of 10 minutes and 17 seconds after bonuses/penalties. And this was with a 10 minutes penalty due to the use of Juno (as well as a couple of minutes lost debugging some setup issue that was just mispreparation on our side). A key contributor to this result is our use of Crowbar, which we've kept improving over time, and that really makes it easy and fast to deploy OpenStack.
Wall-clock time for SUSE OpenStack Cloud
These two results wouldn't have been possible without the help of Tom and Ralf, but also without the whole SUSE OpenStack Cloud team that works on a daily basis on our product to improve it and to adapt it to the needs of our customers. We really have an awesome team (and btw, we're hiring)!
For reference, three other contestants succeeded in deploying OpenStack, with the fastest of them ending at 58 minutes after bonuses/penalties. And as I mentioned earlier, there were even more contestants (including some who are not vendors of an OpenStack distribution), which is really good to see. I hope we'll see even more in Tokyo!
Results of the Rule the Stack contest
Also thanks to Intel for organizing this; I'm sure every contestant had fun and there was quite a good mood in the area reserved for the contest.
A couple of months ago, I was meeting colleagues of mine working on Docker and discussing about how much effort it would be to add support for it to SUSE OpenStack Cloud. It's been something that had been requested for a long time by quite a number of people and we never really had time to look into it. To find out how difficult it would be, I started looking at it on the evening; the README confirmed it shouldn't be too hard. But of course, we use Crowbar as our deployment framework, and the manual way of setting it up is not really something we'd want to recommend. Now would it be "not too hard" or just "easy"? There was only way to know that... And guess what happened next?
It took a couple of hours (and twopatches) to get this working, including the time for packaging the missing dependencies and for testing. That's one of the nice things we benefit from using Crowbar: adding new features like this is relatively straight-forward, and so we can enable people to deploy a full cloud with all of these nice small features, without requiring them to learn about all the technologies and how to deploy them. Of course this was just a first pass (using the Juno code, btw).
Fast-forward a bit, and we decided to integrate this work. Since it was not a simple proof of concept anymore, we went ahead with some more serious testing. This resulted in us backporting patches for the Juno branch, but also making Nova behave a bit better since it wasn't aware of Docker as an hypervisor. This last point is a major problem if people want to use Docker as well as KVM, Xen, VMware or Hyper-V â€” the multi-hypervisor support is something that really matters to us, and this issue was actually the first one that got reported to us ;-) To validate all our work, we of course asked tempest to help us and the results are pretty good (we still have some failures, but they're related to missing features like volume support).
All in all, the integration went really smoothly :-)
Oh, I forgot to mention: there's also a docker plugin for heat. It's now available with our heat packages now in the Build Service as openstack-heat-plugin-heat_docker (Kilo, Juno); I haven't played with it yet, but this post should be a good start for anyone who's curious about this plugin.
In case some readers of this blog would be interested in working with Open Source software and VoIP technologies, Be IP (http://www.beip.be) is hiring a developer. Please see http://www.beip.be/BeIP-Job-Offer.pdf for the job description. You can contact me directly.
Current Status Ekiga 5 has progressed a lot lately. OpenHUB is reportin a High Activity for the project. The main reason behind this is that I am again dedicating much of my spare time to the project. Unfortunately, we are again facing a lack of contributions. Most probably (among others) because the project has been […]
Everyone has been blogging about GUADEC, but I’d like to talk about my other favorite conference of the year, which is GNOME.Asia. This year, it was in Beijing, a mightily interesting place. Giant megapolis, with grandiose architecture, but at the same time, surprisingly easy to navigate with its efficient metro system and affordable taxis. But the air quality is as bad as they say, at least during the incredibly hot summer days where we visited.
The conference itself was great, this year, co-hosted with FUDCon’s asian edition, it was interesting to see a crowd that’s really different from those who attend GUADEC. Many more people involved in evangelising, deploying and using GNOME as opposed to just developing it, so it allows me to get a different perspective.
On a related note, I was happy to see a healthy delegation from Asia at GUADEC this year!
A while back, I made a Vinagre build for OSX. However, reproducing this build needed lots of manual tweaking, the build was not working on newer OSX versions, and in the mean time, the recommended SPICE client became remote-viewer. In short, this work was obsolete.
I've recently looked again at this, but this time with the goal of documenting the build process, and making the build as easy as possible to reproduce. This is once again based off gtk-osx, with an additional moduleset containing the SPICE modules, and a script to download/install most of what is needed. I've also switched to building remote-viewer instead of vinagre
This time, I've documented all of this work, but all you should have to do to build remote-viewer for OSX is to run a script, copy a configuration file to the right place, and then run a usual jhbuild build. Read the documentation for more detailed information about how to do an OSX build.
I've uploaded a binary built using these instructions, but it's lacking some features (USB redirection comes to mind), and it's slow, etc, etc, so .... patches welcome! ;) Feel free to contact me if you are interested in making OSX builds and need help getting started, have build issues, ...
Then, at the end of July, I’ll attend Debconf again. Unfortunately, I won’t be able to participate in Debcamp this year, but I look forward to a full week of talks and exciting discussions. There, I’ll be chairing two sessions about Ruby in Debian and Quality Assurance.
It’s been a long time since I blogged about Libgda (and for the matter since I blogged at all!). Here is a quick outline on what has been going on regarding Libgda for the past few months:
Libgda’s latest version is now 4.2.4
many bugs have been corrected and it’s now very stable
the documentation is now faily exhaustive and includes a lot of examples
a GTK3 branch is maintained, it contains all the modifications to make Libgda work in the GTK3 environment
the GdaBrowser and GdaSql tools have had a lot of work and are now both mature and stable
using the NSIS tool, I’ve made available a new Windows installer for the GdaBrowser and associated tools, available at http://www.gnome.org/~vivien/GdaBrowserSetup.exe. It’s only available in English and French, please test it and report any error.
In the next months, I’ll work on polishing even more the GdaBrowser tool which I use on a daily basis (and of course correct bugs).
I have been toying with webkit lately, and even managed to do some pretty things with it. As a consequence, I haven’t worked that much on ekiga, but perhaps some of my experiments will turn into something interesting there. I have an experimental branch with a less than fifty lines patch… I’m still trying to find a way to do more with less code : I want to do as little GObject-inheritance as possible!
That little programming was done while studying class field theory, which is pretty nice on the high-level principles and somewhat awful on the more technical aspects. I also read again some old articles on modular forms, but I can’t say that was “studying” : since it was one of the main objects of my Ph.D, that came back pretty smoothly…
I found a few minutes to enter a brick-and-mortar shop and have a look at the ebook readers on display. There was only *one* of them : the sony PRS-600. I was pretty unimpressed : the display was too dark (because it was a touch screen?), but that wasn’t the worse deal breaker. I inserted an SD card where I had put a sample of the type of documents I read : they showed up as a flat list (pain #1), and not all of them (no djvu) (pain #2) and finally, one of them showed up too small… and ended up fully unreadable when I tried to zoom (pain #3). I guess that settles the question I had on whether my next techno-tool would be a netbook or an ebook reader… That probably means I’ll look more seriously into fixing the last bug I reported on evince (internal bookmarks in documents).
With the beginning of the year comes new releases of Libgda:
version 4.0.6 which contains corrections for the stable branch
version 4.1.4, a beta version for the upcoming 4.2 version
The 4.1.4’s API is now considered stable and except for minor corrections should not be modified anymore.
This new version also includes a new database adaptator (provider) to connect to databases through a web server (which of course needs to be configured for that purpose) as illustrated by the followin diagram:
The database being accessed by the web server can be any type supported by the PEAR::MDB2 module.
The GdaBrowser application now supports defining presentation preferences for each table’s column, which are used when data from a table’s column need to be displayed: The UI extension now supports improved custom layout, described through a simple XML syntax, as shown in the following screenshot of the gdaui-demo-4.0 program:
I have been a little stuck for some weeks : a new year started (no, that post hasn’t been stuck since january — scholar year start in september) and I have students to tend to. As I have the habit to say : good students bring work because you have to push them high, and bad students bring work because you have to push them from low! Either way, it has been keeping me pretty busy.
Still, I found the time to read some more maths, but got lost on something quite unrelated to my main objective : I just read about number theory and the ideas behind the proof of Fermat’s Last Theorem (Taylor and Wiles’ theorem now). That was supposed to be my second target! Oh, well, I’ll just try to hit my first target now (Deligne’s proof of the Weil conjectures). And then go back to FLT for a new and deeper reading.
I only played a little with ekiga’s code — mostly removing dead code. Not much : low motivation.
So, I’m back from the Rencontres Mondiales du Logiciel Libre, which took place in Nantes this year. It was great to see all those people from the french Free Software community again, and I look forward to seeing them again next year in Bordeaux (too bad the Toulouse bid wasn’t chosen).
I spent quite a lot of time with the Ubuntu-FR crew, which I hadn’t met before. They do an awesome work on getting new people to use Linux (providing great docs and support), and do very well (much better than in the past) at giving a good global picture of the Free Software world (Linux != Ubuntu, other projects do exist and play a very large role in Ubuntu’s success, etc). It’s great to see Free Software’s promotion in France being in such good hands. (Full disclosure: I got a free mug (recycled plastic) with my Ubuntu-FR T-shirt, which might affect my judgement).
I gave two talks, on two topics I wanted to talk about for some time. First one was about the interactions between users, distributions and upstream projects, with a focus on Ubuntu’s development model and relationships with Debian and upstream projects. Second one was about voting methods, and Condorcet in particular. If you attended one of those talks, feedback (good or bad) is welcomed (either in comments or by mail). Slides are also available (in french):
On a more general note, I still don’t understand why the “Mondiales” in RMLL’s title isn’t being dropped or replaced by “Francophones“. Seeing the organization congratulate themselves because 30% of the talks were in english was quite funny, since in most cases, the english part of the talk was “Is there someone not understanding french? no? OK, let’s go on in french.“, and all the announcements were made in french only. Seriously, RMLL is a great (probably the best) french-speaking community event. But it’s not FOSDEM: different goals, different people. Instead of trying (and failing) to make it an international event, it would be much better to focus on making it a better french-speaking event, for example by getting more french-speaking developers to come and talk (you see at least 5 times more french-speaking developers in FOSDEM than in RMLL).
I’m now back in Lyon for two days, before leaving to Montreal Linux Symposium, then coming back to Lyon for three days, then Debconf from 23rd to 31st, and then moving to Nancy, where I will start as an assistant professor in september (a permanent (tenured) position).
On September I finish my studies of computer science, so I start to search a job. I really enjoyed my current job at Collabora maintaining Empathy, I learned lots of things about the Free Software world and I would like to keep working on free software related projects if possible. My CV is available online here.
Do you guys know any company around the free software and GNOME looking for new employees? You can contact me by email to firstname.lastname@example.org
I’ve been working wit git lately but I have also missed the darcs user interface. I honestly think the darcs user interface is the best I’ve ever seen, it’s such a joy to record/push/pull (when darcs doesn’t eat your cpu)
I looked at git add --interactive because it had hunk-based commit, a pre-requisite for darcs record-style commit, but it has a terrible user interface, so i just copied the concept: running a git diff, filtering hunks, and then outputing the filtered diff through git apply --cached.
It supports binary diffs, file additions and removal. It also asks for new files to be added even if this is not exactly how darcs behave but I always forget to add new files, so I added it. It will probably break on some extreme corner cases I haven’t been confronted to, but I gladly accept any patches
Add file: newfile.txt
Shall I add this file? (1/1) [Ynda] : y
Binary file changed: document.pdf
Shall I record this change? (1/7) [Ynda] : y
@@ -1,3 +1,5 @@
Shall I record this change? (2/7) [Ynda] : y
@@ -1,17 +1,5 @@
-# git-darcs-record, emulate "darcs record" interface on top of a git repository
-# git-darcs-record first asks for any new file (previously
-# untracked) to be added to the index.
-# git-darcs-record then asks for each hunk to be recorded in
-# the next commit. File deletion and binary blobs are supported
-# git-darcs-record finally asks for a small commit message and
-# executes the 'git commit' command with the newly created
-# changeset in the index
# Copyright (C) 2007 RaphaÃ«l Slinckx
# This program is free software; you can redistribute it and/or
Shall I record this change? (3/7) [Ynda] : y
@@ -28,6 +16,19 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# git-darcs-record, emulate "darcs record" interface on top of a git repository
+# git-darcs-record first asks for any new file (previously
+# untracked) to be added to the index.
+# git-darcs-record then asks for each hunk to be recorded in
+# the next commit. File deletion and binary blobs are supported
+# git-darcs-record finally asks for a small commit message and
+# executes the 'git commit' command with the newly created
+# changeset in the index
import re, pprint, sys, os
BINARY = re.compile("GIT binary patch")
Shall I record this change? (4/7) [Ynda] : n
@@ -151,16 +152,6 @@ def read_answer(question, allowed_responses=["Y", "n", "d", "a"]):
- global GIT_DIR
- GIT_DIR = os.getcwd()
- while not os.path.exists(os.path.join(GIT_DIR, ".git")):
- GIT_DIR = os.path.dirname(GIT_DIR)
- if GIT_DIR == "/":
- return False
- return True
Shall I record this change? (5/7) [Ynda] : y
# On branch master
# Changes to be committed:
# (use "git reset HEAD file..." to unstage)
# modified: document.pdf
# modified: foobar.txt
# modified: git-darcs-record
# new file: newfile.txt
# Changed but not updated:
# (use "git add file file..." to update what will be committed)
# modified: git-darcs-record
What is the patch name? Some cute patch name
Created commit a08f34e: Some cute patch name
4 files changed, 3 insertions(+), 29 deletions(-)
create mode 100644 newfile.txt
Get the script here: git-darcs-record script and put in somewhere in your $PATH. Any comments or improvements is welcome !
Voilà, j’y pensais depuis longtemps et c’est maintenant chose faite, je me suis acheté un tout nouveau ordinateur portable.
Je l’ai acheté sur le site français LDLC.com et me suis renseigné pour savoir si il était possible d’acheter les ordinateurs de leur catalogue sans logiciels (principalement sans windows). Je leur ai donc envoyé un email, et à ma grande surprise ils m’on répondu que c’était tout a fait possible, qu’il suffi de passer commande et d’envoyer ensuite un email pour demander de supprimer les logiciels de la commande. J’ai donc commandé mon laptop et ils m’ont remboursé de 20€ pour les logiciels, ce n’est pas énorme sur le prix d’un portable, mais symboliquement c’est déjà ça.
Toutes fois je me pose des questions, pourquoi cette offre n’est pas inscrite sur le site de LDLC ? En regardant sous mon tout nouveau portable je remarque une chose étrange, les restes d’un autocollant qu’on a enlevé, exactement à l’endroit où habituellement est collé la clef d’activation de winXP. Le remboursement de 20€ tout rond par LDLC me semble également étrange vue que LDLC n’est qu’un intermédiaire, pas un constructeur, et donc eux achètent les ordinateurs avec windows déjà installé. Bref tout ceci me pousse à croire que c’est LDLC qui perd les 20€ et je me demande dans quel but ?!? Pour faire plaisir aux clients libre-istes ? Pour éviter les procès pour vente liée ? Pour à leur tours se faire rembourser les licences que les clients n’ont pas voulu auprès du constructeur/Microsoft et éventuellement gagner plus que 20€ si les licences OEM valent plus que ça ? Bref ceci restera sans doutes toujours un mistère.
J’ai donc installé Ubuntu qui tourne plutôt bien. J’ai été même très impressionné par le network-manager qui me connecte automatiquement sur les réseaux wifi ou filaire selon la disponibilité et qui configure même un réseau zeroconf si il ne trouve pas de server dhcp, c’est très pratique pour transférer des données entre 2 ordinateurs, il suffi de brancher un cable ethernet (ça marche aussi par wifi mais j’ai pas encore testé) entre les 2 et hop tout le réseau est configuré automatiquement sans rien toucher, vraiment magique ! Windows peut aller se cacher, ubuntu est largement plus facile d’utilisation !
Eye of Gnome comes with some nifty features like support for EXIF data in jpegs. But this depends on a library that isn’t a part of Gnome.
So what do I write in the user manual for EOG?
‘You can see EXIF data for an image, but you need to check the innards of your system first.’
‘You can maybe see EXIF data. I don’t know. Ask your distro.’
‘If you can’t see EXIF data, install the libexif library. I’m sorry, I can’t tell you how you can do that as I don’t know what sort of system you’re running Gnome on.’
The way GNU/Linux systems are put together is perhaps great for people who want unlimited ability to customize and choose. But it makes it very hard to write good documentation. In this sort of scenario, I would say it makes it impossible, and we’re left with a user manual that looks bad.
Planète GNOME-FR est un aperçu de la vie, du travail et plus généralement du monde des membres de la communauté GNOME-FR.
Certains billets sont rédigés en anglais car nous collaborons avec des gens du monde entier.
Dernière mise à jour : 16 November 2019 à 21:44 UTC Toutes les heures sont UTC.
Planète GNOME-FR est propulsée par l'agrégateur Planet, cron, Python, Red Hat (qui héberge ce serveur).
Le design du site est basé sur celui des sites GNOME et de Planet GNOME.
Planète GNOME-FR est maintenue par Frédéric Péters et Luis Menina. Si vous souhaitez ajouter votre blog à cette planète, il vous suffit d'ouvrir un bug. N'hésitez pas à nous contacter par courriel pour toute autre question.