De waarheid over Coronalert en gedecentraliseerde contact tracing apps

Inhoudstafel

Te lang om allemaal te lezen? Ga onmiddellijk door naar de conclusie.

Wie mij een beetje kent, weet dat ik privacy erg belangrijk vind. Daarom dacht ik dat contact tracing apps for COVID-19 een zeer slecht idee waren toen men daar enkele maanden geleden begon over te praten. Een app die contant bijhoudt waar je bent en wie je tegenkomt, dat is enkel iets dat je in ondemocratische landen en dictatoriale regimes verwacht, maar niet in Europa waar onze privacy gewaarborgd zou moeten zijn door de GDPR (AVG). En wat met de betrouwbaarheid van deze apps? Bluetooth was nooit voor dergelijke toepassingen ontworpen. Het zou leiden tot veel foutieve waarschuwingen. Geen denken aan dat ik zo’n app ooit zou installeren.

Althans, dat was mijn mening enkele maanden geleden. Ondertussen is mijn mening volledig veranderd. En dat is gebeurd na het lezen over gedecentraliseerde contact tracing apps gebaseerd op de Google en Apple Exposure Notification (GAEN) API en DP-3T. Ik heb reeds de Italiaanse contact tracing app Immuni gebruikt in Italië en ook in België gebruik ik de app Coronalert (Androidversie, iPhone-versie).

DP-3T

Decentralized Privacy-Preserving Proximity Tracing of DP-3T is een open protocol ontwikkeld door verschillende universiteiten waaronder ETH en EPFL uit Zwitserland, de KU Leuven uit België en TU Delft uit Nederland.

Volgende cartoon geeft een eenvoudig overzicht van hoe DP-3T werkt.

Elke dag wordt een nieuwe random seed (gebaseerd op de seed van de dag voordien) op de telefoon van elke gebruiker en deze dagelijkse seed wordt op te elefoon bijgehouden gedurende 14 dagen. Op basis van deze seed worden er ephermal identifiers (EphIDs) aangemaakt. Deze EphIds verandere verscheidene keren per uur.

EphIDs worden uitgewisseld met andere gebruikers van de tracking app via Bluetooth Low Energy (BLE) en elke telefoon houdt de EphIDs die hij ontvangen heeft lokaal bij op de telefoon, samen met de datum en de sterkte van het signaal, dat kan gebruikt worden om de afstand in te schatten.

Wanneer iemand positief test op COVID-19 kan die, met de hulp van de gezondheidsauthoriteiten, de seed van de eerste dag waraop hij besmettelijk was, uploaden naar een centrale server. Op dat moment worden alle voorgaande dagelijkse seeds gewist van de telefoon en wordt een compleet nieuwe random dagelijkse seed aangemaakt, zodat de gebruiker ook in de toekomst niet kan gevolgd worden.

De app downloadt regelmatig een lijst van al de dagelijkse seeds van de besmette gebruikers van de centrale server en kan op basis daarvan al de EphIDs berekenen. De app vergelijkt deze EphIDs met de lijst van EphIDs die hij onlangs is tegengekomen. Op basis van de het aantal overeenkomstige EphIDs kan de app berekenen hoe lang de twee in elkaars buurt zijn geweest en op basis van de opgeslagen signaalsterkte kan een inschatting gemaakt worden van de afstand. Als de twee langer dan een bepaalde tijd binnen een bepaalde afstand in elkaars buurt zijn geweest, dan zal de gebruiker een waarschuwing krijgen dat hij in contact is geweest met een besmettelijke persoon, samen met verdere instructies. Een contact met een besmette persoon wordt in het Engels “exposure” genoemad, Coronalert gebruikt in het Nederlands de term “blootstelling”.

Meer details zijn te vinden in de DP-3T white paper.

Apple/Google Exposure Notifications API

De Google/Apple Exposure Notifications API (soms afgekort tot GAEN) is een API die door Google en Apple is ontwikkeld en die gebruikt kan worden door gedecentralseerde contact tracing apps. Deze API is gebaseerd op de principes van het DP-3T-protocol en kan enkel gebruikt worden door apps die zijn goedgekeurd door Google en Apple: slechts één app per land, ontwikkeld door de officiële gezondheidsauthoriteiten, kan goedgekeurd worden. Enkel gedecentraliseerde apps die geen enkele informatie over de positie van gebruikers verzamelen, worden goedgekeurd.

Op Apple iOS kunnen apps normaal geen Bluetooth op de achtergrond gebruiken, maar een uitzondering werd gemaakt voor apps die gebruik maken van deze API. Dit betekent dat op Apple iPhone, deze API de enige manier is om een betrouwbare contact tracing app te maken. Apps die deze API niet gebruiken, zoals de StopCovid France app, moeten via work-arounds de app in de achtergrond toch naar de voorgrond halen, wat hen potentieel minder betrouwbaar maakt en een negatief effect heeft op het batterijverbruik.

Het DP-3T framework werd aangepast om gebruik te maken van de Exposure Notifications API.

De Google/Apple Exposure Notifications API en DP-3T wordt gebruikt door de Belgische contact tracing app Coronalert. Andere apps die deze API gebruiken zijn Coronamelder (Nederland), SwissCovid (Zwitserland), Immuni (Italië), Corona-Warn-App (Duitsland).

De broncode van de de implementatie van het framework voor Android en iOS werd in de tweede helft van juli 2020 gepubliceerd.

Veel gestelde vragen (FAQ) – Enkele mythes ontkracht

Deze apps zijn soms onderwerp van moedwillige fake news campages, of lokken in ieder geval hevige reacties uit die het gevolg zijn van een een gebrek aan begrip van de werking van deze apps. Hier zal ik enkele belangrijke vragen beantwoorden.

Schenden deze apps mijn privacy? Zullen de authoriteiten weten wie ik ontmoet, waar ik ben en wat ik doe?

De apps die gebruik maken van de Google Apple Exposure Notification API houden geen persoonlijke informatie bij van de gebruikers: ze kennen je naam niet, je telefoonnummer, waar je woont of andere persoonlijke gegevens. Ze verzamelen ook geen locatiegegevens, dus ze weten niet waar je bent.

Het enige dat deze apps doen, is anonieme codes uitwisselen met andere mensen in je buurt. Deze codes veranderen verscheidene malen per dag, zodat het onmogelijk is om je te volgen door middel van deze codes.

De codes die de uitgewisseld worden, worden enkel lokaal op je telefoon bijgehouden en niet in een centrale databank. Er is dus geen manier voor de authoriteiten om te weten hoeveel mensen en wie u ontmoet heeft.

Contact tracing apps maken daarnaast gebruik van uitgebreide preventiemaatregelen om uw veiligheid en privacy te beschermen: zo doen ze dummy uploads om te vermijden dat door middel van netwerkanalyse zou kunnen ontdekt worden wie een positieve test heeft afgelegd, wordt er gebruikt gemaakt van CA of certificate pinning om man-in-the-middle-aanvallen te voorkomen, enzovoort.

Deze apps zijn geen hulpmiddel voor massarveillance en zijn ook geen Big Brother zoals sommigen beweren.

Hoe kan ik zeker zijn dat de app werkt zoals beweerd wordt en echt geen privé-informatie verstuurd?

Deze apps zijn gewoonlijk open source, wat betekent dat je de zelf de code kan onderzoeken om te zien hoe de app werkt en wat deze precies doet. Zelfs als je zelf de kennis niet hebt om de code na te kijken, dan mag je er zeker van zijn dat er genoeg experten zijn die hier naar kijken en zij zullen het wel luid en duidelijk laten horen wanneer iets niet zuiver op de graat is. Het moet gezegd: vaak zijn degenen die het luidst over deze apps roepen politici uit de oppositie en activisten die nooit naar de code of de documentatie hebben gekeken.

Hier zijn links naar de broncode van enkele contact tracing apps en de documentatie:

Op de issue trackers van deze apps kunnen problemen gemeld worden en vragen gesteld worden.

Ook de broncode van het Exposure Notifications framework, gebruikt door deze apps, is openbaar:

Een eerste analyse van de broncode van de Coronalert app toont aan dat deze inderdaad niet meer gegevens bijhoudt en verstuurt dan aangekondigd en dat Sciensano en Ixor (het Belgische bedrijf dat de backendservers beheert) nooit persoonlijke data ontvangen van de app.

Waarom zou ik Google en Apple, die een slechte reputatie hebben op vlak van privacy, nu moeten vertrouwen?

Eigenlijk hebben Google en Apple deze API zelfs niet nodig om je te volgen. Als je een telefoon gebruikt met iOS of Android met Google Play Services, heb je op zich al een veel groter privacyprobleem dan deze gedecentraliseerde, open source contact tracing apps. Dat is ook het geval als je Facebook, Twitter, Instagram, TikTok, NetFlix, Spotify, FaceAp, Tinder en dergelijk apps gebruikt: deze kennen uw naam, locatie, uw interesses, vrienden en dat allemaal zonder deze API. Gedecentraliseerde contact trcacing apps weten veel minder over u dan al deze apps. Dit beeld vergelijkt de verschillende permissies die SwissCovid, Facebook en Whatsapp kunnen aanvragen op iOS. Het is duidelijk dat het niet de contact tracing app is die het meeste informatie kan verzamelen.

Prof. Bart Preneel (KU Leuven), een cryptograaf die meegewerkt heeft aan het de ontwikkeling van het DP-3T framework, zegt dat “voor één keer Google en Apple kiezen voor de goede kant van de privacy”.

Daarnaast is er een manier om deze contact tracing apps te gebruiken zonder enige Google-services op je telefoon. Het microg-project heeft zijn eigen, volledig open source implementatie gemaakt van de Exposure Notification API. Deze kan geïnstalleerd worden op een Androiddistributie zoals LineageOS. Er is bevestiging dat SwissCovid en Immuni werken met de microg-implementatie van de API, dus andere apps werken wellicht ook. Op deze manier is het mogelijk om deze contact tracing apps te gebruiken zonder enige binaire code van Google of Apple.

Waarom vereist Coronalert dat Locatie aan staat op mijn Androidtelefoon als de app zogezegd mijn locatie niet bijhoudt?

Om te scannen naar Bluetooth-apparaten op Android, is het nodig dat de locatie-instelling aan staat op Android omdat dit in theorie kan gebruikt worden om uw positie te bepalen. Dit wordt bijvoorbeeld gebruikt door navigatie-apps om uw positie te bepalen in ondergrondse tunnels. In werkelijkheid is het voor apps die gebruik maken van de GAEN API niet toegelaten om uw locatie op te vragen. Het kan ook in de broncode van de app geverifieerd worden dat op geen enkel moment de locatie wordt bepaald. In Instellingen – Locatie – Machtigingen op app-niveau kan u ook nog altijd locatietoegang uitschakelen voor apps. Coronalert (of andere contact tracing app gebaseerd op de Expsoure Notificatoins API) zal in deze lijst niet verschijnen omdat deze geen locatie opvraagt.

In Android 11, uitgekomen in september 2020, is het niet meer nodig om Locatie aan te hebben op uw telefoon om contact tracing apps te gebruiken die gebaseerd zijn op de Exposure Notifcation API.

Zullen deze apps mij een waarschuwing geven telkens wanneer een besmette persoon voorbijgekomen is en dus heel wat valse waarschuwingen geven?

De apps zullen enkel een waarschuwing geven als aan bepaalde voorwaarden voldaan is. Die voorwaarden worden gewoonlijk door de overheid vastgelegd op basis van epidemioloigsche data. De Italiaanse Immuni app bijvoorbeeld, zal een waarschuwing geven wanneer iemand op een afstand van maximaal 2 meter staat gedurende minstens 15 minuten. SwissCovid zal pas waarschuwen bij een contact van minstens 15 minuten binnen een afstand van 1,5m.

De afstand wordt geschat op basis van de verzwakking van het signaal. Die verzwakking hangt helaas wel af van heel wat parameters, zoals het model van de telefoon dat gebruikt wordt, de richting waarin die telefoon wordt gehouden, enzovoort. Google past voor elk telefoonmodel een correctie toe op de verzwakking, zodat de waardes vergelijkbaar zouden moeten zijn tussen verschillende modellen. De drempelwaarden die worden gebruikt om waarschuwingen te geven, zijn gebaseerd op experimenten in verschillende omgevingen en kunnen in de toekomst nog aangepast worden om het aantal vals positieven en negeatieven aan te passen.

Dus nee, contact tracing apps zullen u geen waarschuwing geven telkens wanneer iemand die even kortbij gepasseerd is, positief wordt getest. Enkel wanneer zeer redelijke drempelwaarden worden overschreden, zal u een waarschuwing krijgen. Ook de authoriteiten realiseren zich dat deze contact tracing apps een hulpmiddel zijn voor tracing, maar nooit manuele contact tracing kunnen vervangen. Een contact tracing app kan ook nooit een COVID-19-test vervangen.

In de praktijk zal Coronalert ook niet-risicovolle contacten weergeven: er zal dan in de app staan dat er een blootstelling geweest is, maar het risico blijft op laag staan en de app blijft groen. Enkel bij een contact langer dan 15 minuten op een afstand die minder dan 1,5m geschat wordt, zal het scherm rood worden en zal er een notificatie komen over een hoogrisico-contact. Enkel in dat laatste geval zal een quarantaine en test aangeraden worden.

Zijn deze apps nuttig als niet iedereen of ten minste een groot deel van de bevolking ze gebruikt?

Contact tracing apps zijn zeker nuttig, zelfs als enkel een deel van de bevolking ze gebruikt.

Een vaak geciteerd artikel van de Oxford University stelt dat als 60% van de bevolking een contact tracing app gebruikt, dit de epidemie volledig zou kunnen stillegen. Wat echter veel minder geciteerd wordt is het volgende deel van de zin: “zelfs met een lager aantal van gebruikers van de app, schatten we een vermindering in het aantal coronavirusgevallen en het aantal doden”. Ze schatten dat één besmetting kan vermeden worden voor elke 2 gebruikers van de contact tracing app.

Dus zelfs een adoptiegraad van minder dan 60% is nuttig om de curve te helpen afplatten of zelfs naar beneden te halen, waardoor mensenlenvens gered worden.

Zal dit nefast zijn voor het batterijverbruik van mijn telefoon?

Doordat gebruik gemaakt wordt van Bluetooth Low Energy, zou het batterijverbruik beperkt moeten zijn. Bluetooth Low Energy is speciaal ontworpen voor een laag energieverbruik en wordt ook gebruikt om verbinding te maken met smartwatches en draadloze hoofdtelefoons. Het batterijverbruik zou minder dan 5% moeten zijn in vergelijking met een situatie waarin Bluetooth volledig uitgeschakeld is op de telefoon.

Moet ik een andere app installeren als ik naar het buitenland ga?

Met de steun van de Europese Unie werd een gateway service gebouwd die de uitwisseling van keys van besmette personen tussen Europese landen mogelijk maakt. Op 19 oktober 2020 werd deze in gebruik genomen en sindsdien kunnen de Italiaanse (Immuni), Duitse (Corona-Warn-App) en Ierse app (COVID Tracker) hiervan gebruik maken. Het is de bedoeling dat de apps van andere EU-landen deze ondersteuning ook in de toekomst krijgen. Voor de Belgische app Coronalert wordt dit in verwacht tegen november 2020.

Merk op dat er geen uitwisseling mogelijk is met de StopCovid France app omdate deze een gecentraliseerd systeem gebruikt in plaats van het gedecentraliseerde DP-3T.

Wat vinden experts van deze apps?

Het is belangrijk om te herhalen dat DP-3T en dus het Google/Apple Expsoure Notifications framework dat erop gebaseerd is, ontworpen is door academici van universiteiten in verschillende landen. Prof. Bart Preneel (KU Leuven), een cryptograaf die meegewerkt heeft aan het de ontwikkeling van het DP-3T framework, zegt dat “voor één keer Google en Apple kiezen voor de goede kant van de privacy”.

Het British Information Commissioner’s Office (de nationale gegevensbeschermingsauthoriteit) “gelooft dat het CTF (Google/Apple’s contact tracing framework) van bij het ontwerp rekening houdt met de principes van gegevensbescherming, inclusief ontwerpprincipes rond dataminimisatie en veiligheid.

Prof. Douglas Leith (Trinity College Dublin) heeft analyse van het netwerkverkeer van contact tracing apps gedaan. In een rapport besluit hij: “We vinden dat de apps zich over het algemeen goed gedragen op vlak van privacy, alhoewel de privacy van de Ierse, Poolse en Letse apps kan verbeterd worden.” Hij bekritiseerde wel het feit dat het Google/Apple Exposure Notifcations framework niet open source was op dat moment (intussen is de code daarvan wel openbaar) en het feit dat de Google Play Services privégegevens verzenden naar Google (iets dat op alle Androidtelefoons met Google Play Services gebeurt, los van de aanwezigheid van dit framework.)

Analyses van de broncode van de apps zoals deze van Coronalert en deze van Immuni, tonen aan dat de apps geen persoonlijke data bijhouden en versturen.

De grootste kritiek op het framework komt van prof. Serge Vaudenay, cryptograaf van EPFL. Hij klaagt over het feit dat de GAEN (toen nog) closed source was en stelt dat een aantal aanvallen op het systeem mogelijlk zijn. Het DP-3T-team heeft geantwoord op de kritiek.

Conclusie

Vergeet al de samenzweringstheorieën en de bezwaren van privacy-activisten die nooit uitgezocht hebben hoe deze apps werken: gedecentraliseerde open-source contact tracing apps die gebruik maken van de Google/Apple Exposure Notification API zijn geen Big Brother en geen instrument voor massale spionage van de bevolking. Het protocol werd ontwikkeld door academici gespecialiseerd in IT-beveiliging en privacy en de broncode van de apps kan door iedereen nagekeken worden. Uitgebreide documentatie beschrijft de werking van de apps, en legt uit wat er allemaal gedaan wordt om de privacy van de gebruikers te beschermen. Door anonieme ephemerial IDs te gebruiken en geen locatiegegevens te verzamelen, weten deze contact tracing apps minder van u dan de meeste social network apps of dan het besturingssysteem van uw telefoon zelf. Als u zich zorgen maakt om uw privacy, hebt u belangrijkere dingen om u zorgen over te maken.

Contact tracing apps kunnen zeer nuttig zijn in het bestrijden van de epidemie, ook als slechts een klein deel van de bevolking ze gebruikt. Voor mij is het gewoon een kwestie van verantwoordelijkheid waarom ik gebruik maak van deze apps: om anderen te beschermen, om onze maatschappij en economie te beschermen en uiteindelijk om zelf beschermd te worden door anderen die de app gebruiken.

Meer informatie

Geschiedenis van dit artikel

Update 19 september 2020: voeg links naar broncode Coronalert toe – Voeg informatie toe over de implementatie van microg van de API

Update 29 september 2020: voeg informatie over EU gateway service toe

Update 13 oktober 2020: voeg informatie over laagrisico- en hoogrisicontacten in Coronalert toe

Update 19 oktober 2020: EU federation gateway actief in 3 landen

Samsung N210 netbook on Debian GNU/Linux

With the upcoming holidays in sight, I could not resist buying a netbook system to take along with me on my travel to Italy. So yesterday, I received a brand new Samsung N210.

I chose this system because it is not too expensive and it appeared about the best netbook in this price class according to many reviews. Especially the battery time, keyboard and matte screen are praised a lot. It also seemed to work nice in Linux, which was of course also an important requirement.

I have removed the Windows 7 Starter edition which was installed on this system and installed Debian GNU/Linux Squeeze (currently testing) on it. I decided to go for Debian because it is quickly becoming my favourite distribution, now that Mandriva has all kind of difficulties keeping up with innovation and I fear that its future does not seem too bright.

I booted the Debian installer using PXE. So on my DHCP server, I added this in dhcpd.conf:

group {
  allow bootp;
  next-server 192.168.100.1;
    filename "/pxelinux.0";
    host samsung-n210 {
        hardware ethernet xx:xx:xx:xx:xx:xx;
        fixed-address 192.168.100.10;
    }
}

With 192.168.100.1 being the address of the TFTP server (the same host as the dhcpd in my case).

I installed tftpd-hpa and xinetd, and created this tftpd file in /etc/xinetd.d:

service tftp
{
   socket_type   = dgram
   protocol   = udp
   wait      = yes
   user      = root
   server      = /usr/sbin/in.tftpd
   server_args   = -p -v -v -v -s /var/lib/tftpboot
   disable      = no
   flags        = IPv4
}

Then I dumped the contents of netboot.tar.gz of the Debian installer daily builds for AMD64 in /var/lib/tftpboot. Then set up the N210’s BIOS to enable PXE booting and set the network card as first boot device and you should get into the Debian installer.

I had some trouble with the network connection bailing out after some time, but after a few attempts at least I succeeded in installing the Debian base system without X and the system booted correctly. Maybe I was just using a bad network cable.

I installed the gnome-desktop-environment package with apt, which also pulled in X. The graphical environment was working perfectly fine out of the box without any manual configuration needed. Also the webcam was working fine out of the box with Cheese.

The wireless network card works fine once you install the firmware-linux-nonfree package from the non-free repository and to get a nice GUI to connect to wireless networks, I installed network-manager-gnome. Then connecting to my wifi AP protected by WPA2 was a piece of cake and the wireless connection works perfectly stable too.

Actually the only minor problem I met is that the brightness keys are not working. There is a documented solution available to change the brightness (execute # setpci -s 00:02.0 f4.b=ff for maximum brightness).

All in all, I am very happy with this system. Even though it has a 5400 RPM hard drive, which feels a bit slowish during the installation, and has only 1 GB RAM, the system is very fast during normal use in GNOME, especially if you use some more lightweight applications (for example Epiphany or Chromium as web browser). Also with a few adaptations to the desktop and application settings, the small resolution is not really a problem. But maybe I will write some more details about this in a later post.

Server and blog update

Tonight, I updated the server on which this blog is running from Mandriva 2010.0 to Mandriva 2010.1 Cooker. The update went very smooth. The only problem I discovered is that the bacula-fd init script seems pretty broken so I made some bug reports about that.

At the same time, I updated WordPress to the latest version 2.9.2 and installed a new theme, the Arjuna X which looked nice at first sight. All visitors using Internet Explorer will get a banner with a recommendation to update to a better browser thanks to the No IE Welcome plug-in. I hope more people will put up such a banner on their website in order to help spreading the word about better browsers. Especially in light of the current Theora vs. H264 video codec in HTML 5 discussion, I think we really need to promote those browsers that favour a really open codec. Firefox, Chrome and also Opera (from version 10.50, not yet available for Linux) are the good guys supporting Theora.

Enjoy life!

If you have been following this blog for some time, you will have noticed that lately I have been posting a lot less than in the past and that I also reduced my Mandriva packaging activity. There are many reasons for this, which all come down to this: I have the feeling I can spend my time in a more useful and pleasant way than by creating bunches of Mandriva packages every day and being active on the Cooker mailing list, like I used to.

I expect I will not be able to resist to updating a package now and then, but because I am considering switching to another distribution (which would likely be Debian testing), this might also end in the future. In any case, also don’t expect “Cooker noteworthy updates” posts any more on this blog.

Now it is time to enjoy life! :-)

Replacing Google

The last few weeks, Google is getting some very negative attention. Google’s privacy policy, its total domination and its lack of collaboration with the Open Source community are raising some questions:

Do we really want this, depending on one single company for so many features? Do we accept that one single company knows so much information about millions of users all over the world? Do we accept that a company creates more and more features, officially because they want to help the world, but which in reality give them more sources for collecting private data and thus more power? For me the answer to these questions is definitely no.

For this reason, I will not install Chromium on my or anyone other’s computer. I strongly recommend people to use another browser, such as Firefox or one of the many webkit browsers in Linux, which are making great progress now, such as Epiphany, Midori or Arora. For similar reasons, you do not want to use Chrome OS: it basically does not add anything to a standard Linux distribution. Quite on the contrary, there is not much more than just the Chrome browser which is installed, so it forces you to use all of Google’s online services to get anything done. I recommend Moblin as an alternative operating system on netbooks.

I had some kind of "trash" GMail account which I used for some mailing list. I have unsubscribed from those mailing lists and evenually I will resubscribe with the e-mail address of my ISP or a GMX FreeMail account. Or I will just read those lists online or with a news reader via GMane.

As default search engine, I currently switched to Ask.com. In some corner cases, it is lacking a bit compared to Google, but the majority of searches yield good results, so it is perfectly fine as default search engine for me. Be sure to enable AskEraser for a privacy level much better than what you get with Google.

Making your mixed KDE and GNOME desktop look cool

Most people use a mix of QT/KDE and GTK+/GNOME applications on their Linux system. Because both QT and GTK+ use their own widgets (which are all GUI elements, like buttons, toolbars, menus, checkboxes, etc…) and theme engine, QT and GTK+ applications look different from each other. This is especially bad if you use KDE in Debian: in that case by default no GTK+ theme is configured, making GTK+ applications, like Firefox, look like ugly Windows 95 applications. Mandriva on the contrary does use a common graphical theme for both GTK+ and KDE applications (called Ia Ora), but it’s not easy to change the GTK+ theme if you use KDE or the QT/KDE theme if you use GNOME.

Here’s a howto for Debian and Mandriva which explains how to make your desktop look nice if you’re using a mix of KDE and GTK+. Because Ubuntu is based on Debian, this howto might also apply to Ubuntu, but I have not verified this.

Pre-requisites

I assume that you are running either Debian Squeeze (testing) or Mandriva 2010.0 or a more recent version of these distributions. For Mandriva 2010.0, you also need to have activated the Backports repositories. You can activate them in the Mandriva Control Centre – Software Management – Configure media sources.

Using GTK+ applications in KDE

If you want to use a unified look for KDE and GTK+ applications, then I recommend using the QtCurve theme. Just like Mandriva’s Ia Ora, it consists of a theme engine for KDE and another one for GTK+ which looks exactly the same.

In Mandriva you install the kde4-style-qtcurve package. If you have urpmi’s “suggests” support enabled (it is by default), then this will automatically pull in both the KDE 4 and the GTK+ theme, and also systemsettings-qt-gtk, a tool which lets you choose the GTK+ theme to use in KDE.

In Debian you need the packages qtcurve and also system-config-gtk-kde to set up the GTK+ theme.

Once you have installed all packages, you can start KDE’s System Settings and go to Appearance. In the Style page, you can choose the theme to use in KDE applications, while in GTK+ Styles and Fonts, you select the theme used by GTK+ applications. If you choose QtCurve in both, KDE and GTK+ applications will look very similar and even use the same KDE icon set.

The QtCurve theme comes with different pre-defined styles. If you don’t like the default look of QtCurve, go to System Settings – Appearance – Style, and click on the Configure… button next to the QtCurve widget style box. Under the button Options there, you find the list of predefined styles.

Of course you can also further fine-tune the theme by going to the Colors and Windows pages in System Settings – Apperance, where you can choose a colour set and window manager theme to your liking (QtCurve has a matching colour set and window manager theme, but of course you can choose something else if you want).

Using QT/KDE applications in GNOME

If you are using GNOME and want to make QT and KDE applications look like all GNOME applications without using Ia Ora, you have to run the qtconfig application. In both Mandriva and Debian, you need to have the qt4-qtconfig package installed. Then in qtconfig you select GTK+ as the GUI style to use. If you run KDE applications, you will also need to set the KDE theme to GTK+. This can be done by running
$ kwriteconfig --file kdeglobals --group General --key widgetStyle gtk
in a terminal window. Before executing this command, you will need to have the kdebase4-runtime package installed in Mandriva or kdebase-runtime in Debian.

Debian Squeeze running KDE with the QtCurve theme.
Debian Squeeze KDE 4.3 running Dolphin and Iceweasel (Firefox) 3.5 with the QtCurve theme (Shiny Glass style), Slim Glow Plasma theme and desktop effects enabled.

Flash news flash

A quick update about my Flash rant from some time ago.

Today I wanted to listen to the music tracks on http://www.myspace.com/officialdaan. Because of all the annoyance with the Flash plug-in, I had removed it in May, and haven’t looked back since. Now I heard that there was a new pre-release of the Flash 10 plug-in for Linux x86_64 and some people said that it was working fine. So I thought this was the right moment to give it a try again.

What happened when I try to load the MySpace music player with this plug-in installed? As it did already months ago, my browser completely crashed. I wanted to know the cause of this, and so I ran firefox -g from a terminal. When it crashed, I was greeted with this error: “illegal instruction”. So it seems Adobe’s 64 bit Flash plug-in, actually does not work on all x86_64 systems and requires some newer instructions which my AMD Athlon 64 3500+ does not support (I guess it requires SSE3 or something similar) to work. Hence the browser crash when loading any Flash animation.

Then I tried on another machine, where I have the 32 bit plug-in with nspluginwrapper installed. I click on the FlashBlock icon to start the MySpace music player, but it does not appear at all. The Youtube videos on the same page, load fine though.

So, two systems, and two times Flash is not working as it should. I’ll happily remove it again, because no Flash plug-in is at least better than a non-working and potentially browser crashing Flash plug-in.

Open letter to Adobe

Dear Adobe,

You are the developers of the successful Flash plug-in. Your plug-in is successful in the sense that it’s almost impossible to browse the web without having your plug-in installed. Flash is widely used for movie clips, web radio, informative animations, navigation menus, stock graphs, ad banners and many more. Some sites are even written completely in Flash.

For that reason, I have been using Flash for many years on my computer systems. First I used it on Windows and later on Linux, which I strongly prefer now. In all those years, I have had many problems with your plug-in.

When I was using Flash (I think it was version 4) on Windows 98 on my trusty Pentium II 350 Mhz, full screen Flash sites would make my computer very unresponsive. It also happend to me and also to a friend that different Flash versions were installed together, probably one we downloaded from Macromedia’s site and another older version which was included in some software, probably Microsoft Encarta. Because of these conflicting versions, we had Flash immediately crashing our browser when visiting certain web sites.

Then when I moved to Linux, there were times that I could not visit certain web sites because they required a newer Flash version which was not yet available for my OS. I also could not use my distribution’s package manager to install your software, because you did not permit others to include your software in my distro’s online repositories.

A few years later, I built a new machine with an AMD Athlon 64 3500+ processor. I installed a 64 bit Linux distribution, but there was no 64 bit Flash plug-in. I contacted your company Macromedia, creator of the Flash plug-in, to request a 64 bits versions of the plug-in, but I did not receive any positive answer, in spite of many other people requesting the same thing. Fortunately, the number of sites which were totally unusable without Flash, were not that high, so I accepted to live without your plug-in. One more year later, nspluginwrapper was born, and finally made it possible to view Flash animations on my 64 bits machine again.

In 2007, I started using an Apple PowerPC machine at work. Because Linux was (and currently is) still my preferred OS, I installed Debian GNU/Linux on this machine. But again, no Flash plug-in was available for this system.

We are now May 2009. Many new Flash versions were released in all those years, and finally you started developping a plug-in for the x86_64 architecture. However, things are not much better yet. When I try to view a Flash animation with your 64 bit development version of the plug-in, my browser often crashes hard. If I try to use your 32 bit plug-in with nspluginwrapper, the plug-in itself is not very stable: often when switching tabs in my browser, Flash animations suddenly die and streaming video clips on some Belgian websites do not work at all: the video applet just shows it is buffering, but the video never comes up. The same thing works fine another machine I own. Maybe your plug-in does not work well together with the NVidia drivers, another piece of proprietary sofware I need on this system? Or maybe your plug-in needs some extra libraries which are missing on this system? Unfortunately, I could not find a complete requirement list for your plug-in. The requirements on your download page are very general; only in a blog posting I found that I also need Curl, but I do have libcurl4 installed in both 32 and 64 bit versions on my Mandriva system.

Today, I can only conclude that I’m fed up with this situation. In all those years, I have had lots of problems with your plug-in and with every new version, new problems were introduced. Not only does your plug-in have many problems, the use of Flash is preventing universal access to information for everyone, no matter what kind of system, OS or browser they use. I uninstalled your plug-in today on this system, and I will continue my quest against your software in full force. I will actively search for non-Flash web sites and promote these as alternatives to Flash based web sites. I will also actively promote alternatives to your technology. Good web sites should be based around real open standard file formats, which Flash most definitely is not.

I hope you, Adobe, will finally see the light some day, and start publishing a really complete specification of your proprietary format under a totally Free license and that you will actively support and promote Free Software implementations. However, until then, I see no other option than boycotting your software.

With kind regards,

Frederik Himpe

Futher reading:

“The Great Firewall of Belgium” active

Since today, Belgium has got it’s own version of “The Great Firewall of China”. The biggest Belgian ISPs are blocking access to several web sites, often related to child porn.

The idea already existed for several months, but the implementation was probably accelerated after a Dutch guy recently created a website where he posted detailed personal information about child abusers in Belgium. While publishing such detailed private information is forbidden in Belgium, it was very difficult to take real action against the website, because it operated from abroad.

So now this website is not accessible anymore from most Belgian ISPs. People who try to access this website, get redirected to a web page which explains that the web site is not accessible because it is considered illegal in Belgium.

Technically, it’s not really a firewall. The redirection happens on the DNS level. Instead of returning the real IP of the server, the DNS servers now return the address of a server in Belgium containing the warning page.

While I agree (like every sane person) that things like child’s pornography are completely sick and should be severely acted against, I think that creating a blacklist of websites which people cannot visit any more is a very dangerous precedent. It’s not clear at all how it is decided to put a website on the blacklist. Currently this is not based on a judge’s decision after an official juridical procedure. Also how long will it take until someone makes a mistake in the list and blocks half of the Internet by error (which is not unrealistic, it happened to Google recently!), or worse, until sites of political dissidents are blocked? For this reason, I have decided to stop my internal Bind DNS server at home from forwarding its requests to my ISPs DNS and instead I let it do iterative recursion now.  I read that many others are starting to use OpenDNS now, but this seems to have privacy issues by itself too.