Author: Alessandro

Senior information technology manager

Do not let social networks destroy your social skills

You see them every day. People at restaurants, bars, pubs, clubs, or even private parties, constantly looking at their mobiles… Rather than living their lives, they are validating their lives on social networks. They share their current location, tag their friends, upload pictures of their meals (rigorously altered with some cheap filter), and, since they are already on it, answer messages and leave likes and comments here and there. You name it. All this when they could mingle with the people around them.

Seriously, folks, social networks are are destroying your social skills. Do not let them win. Tonight, turn off your mobile. Spend a night out with the people you really love, talk to them, laugh with them, exchange positive vibes in a way that is possible in the real world only. That is socialising. The rest is just a surrogate of it.

The sad story of the vCard format and its lack of interoperability

I have tried to reach the zen of address book synchronisation for many years. However, I have always experienced that some contact information, especially instant messaging and social networking addresses, gets lost or corrupted during the synchronisation.

The most adopted format for representing contact information is the vCard, whose last version is the 4.0 (see IETF’s RFC 6350, 2011), while the most adopted protocol for accessing contact information is the CardDAV (see in the IETF’s RFC 6352, 2011), which is based on the vCard format. Therefore, I performed a little empirical study of the actual interoperability of the vCard format.

First, I defined a sample contact:

Joe Bloggs
me@joebloggs.com
+44 20 1234 5678
1 Trafalgar Square, WC2N London, United Kingdom
Web: https://joebloggs.com
Skype: joe.bloggs
Twitter: @joebloggs

Second, I added this contact to four different address books:

  • Apple Contacts (formerly Address Book)
  • Cobook
  • Google Contacts
  • Memotoo

Third, I exported each of the address books to a vCard file.

Fourth, I created a sample vCard file based on the vCard format 4.0.

Finally, I compared the exported vCard files and the sample vCard file among each other. The differences between these files blew my mind.

In the following, I show these vCard files and discuss the properties that are not interoperable. Note that I stripped the irrelevant properties and rearranged the remaining properties to make the comparison easier.

Sample vCard file

BEGIN:VCARD
VERSION:4.0
N:Bloggs;Joe;;;
FN:Joe Bloggs
EMAIL;TYPE=home;PREF=1:me@joebloggs.com
TEL;TYPE="cell,home";PREF=1:tel:+44 20 1234 5678
ADR;TYPE=home;PREF=1:;;1 Trafalgar Square;London;;WC2N;United Kingdom
URL;TYPE=home;PREF=1:https://joebloggs.com
IMPP;TYPE=home;PREF=1:skype:joe.bloggs
X-SOCIALPROFILE;TYPE=home;PREF=1:twitter:https://twitter.com/joebloggs
END:VCARD

In my opinion, the specification of the vCard is substandard. Believe or not, it does not support social networking addresses yet. Even worse, it supports constructs that prevent interoperability, namely grouped properties and non-standard properties.

Grouped properties are properties prefaced with the same group name. They should be grouped together when displayed by an application. I will show examples of grouped properties later.

Non-standard properties are properties defined unilaterally or bilaterally outside the standard. They may be ignored by an application.

For instance, I was forced to represent the Twitter address by a non-standard X-SOCIALPROFILE property:

X-SOCIALPROFILE;TYPE=home;PREF=1:twitter:https://twitter.com/joebloggs

Apple Contacts (version 7.1)

BEGIN:VCARD
VERSION:3.0
N:Bloggs;Joe;;;
FN:Joe Bloggs
EMAIL;type=INTERNET;type=HOME;type=pref:me@joebloggs.com
TEL;type=CELL;type=VOICE;type=pref:+44 20 1234 5678
ADR;type=HOME;type=pref:;;1 Trafalgar Square;London;;WC2N;United Kingdom
item1.URL;type=pref:https://joebloggs.com
item1.X-ABLabel:_$!<HomePage>!$_
IMPP;X-SERVICE-TYPE=Skype;type=HOME;type=pref:skype:joe.bloggs
X-SOCIALPROFILE;type=twitter:https://twitter.com/joebloggs
END:VCARD

The vCard file exported by Apple Contacts is only partially based on the vCard format 3.0 (see IETF’s RFC 2425 and RFC 2426, 1998) and its extension for instant messaging (see IETF’s RFC 4770, 2007).

The web address is represented by a standard URL property grouped together with a non-standard X-ABLabel property:

item1.URL;type=pref:https://joebloggs.com
item1.X-ABLabel:_$!<HomePage>!$_

This issue can be solved by changing the type of the web address from “home page” to “home”. This leads to a vCard file where the web address is represented by a standard URL property:

URL;type=HOME;type=pref:https://joebloggs.com

The Twitter address is represented by a non-standard X-SOCIALPROFILE property:

X-SOCIALPROFILE;type=twitter:https://twitter.com/joebloggs

Cobook (version 1.1.6)

BEGIN:VCARD
VERSION:3.0
N:Bloggs;Joe;;;
FN:Joe Bloggs
item1.EMAIL;type=INTERNET:me@joebloggs.com
item1.X-ABLabel:_$!<Home>!$_
item2.TEL;type=VOICE:+44 20 1234 5678
item2.X-ABLabel:_$!<Mobile>!$_
item3.ADR:;;1 Trafalgar Square;London;;WC2N;United Kingdom
item3.X-ABLabel:_$!<Home>!$_
item4.URL:https://joebloggs.com
item4.X-ABLabel:_$!<Home>!$_
item5.IMPP;X-SERVICE-TYPE=Skype:x-apple:joe.bloggs
item5.X-ABLabel:_$!<Home>!$_
X-SOCIALPROFILE;type=Twitter;x-user=joebloggs:https://twitter.com/joebloggs
END:VCARD

The vCard file exported by Cobook is only partially based on the vCard format 3.0. With the exception of the name, all the contact information is represented by either grouped properties or non-standard properties.

Google Contacts (15 November 2012)

BEGIN:VCARD
VERSION:3.0
N:Bloggs;Joe;;;
FN:Joe Bloggs
EMAIL;TYPE=INTERNET;TYPE=HOME:me@joebloggs.com
TEL;TYPE=CELL:+44 20 1234 5678
ADR;TYPE=HOME:;;1 Trafalgar Square;London;;WC2N;United Kingdom
item1.URL:https\://joebloggs.com
item1.X-ABLabel:_$!<HomePage>!$_
X-SKYPE:joe.bloggs
item2.URL:https\://twitter.com/joebloggs
item2.X-ABLabel:Twitter
END:VCARD

Google Contacts does not support social networking addresses natively, so I was forced to add them as URLs.

The vCard file exported by Google Contacts is only partially based on the vCard format 3.0 (see IETF’s RFC 2425 and RFC 2426, 1998).

The colon in all the URLs is unnecessarily escaped.

Similar to Apple Contacts, the web address is represented by a standard URL property grouped together with a non-standard X-ABLabel property:

item1.URL:https\://joebloggs.com
item1.X-ABLabel:_$!<HomePage>!$_

I guess this is because Google Contacts specifically targets Apple Contacts when exporting to a vCard file. This issue can be solved by changing the type of the web address from “Home Page” to “Home”. This leads to a vCard file where the web address is represented by a standard URL property:

URL;TYPE=HOME:https\://joebloggs.com

The Skype address is represented by a non-standard X-SKYPE property:

X-SKYPE:joe.bloggs

The Twitter address is represented by a standard URL property grouped together with a non-standard X-ABLabel property:

item2.URL:https\://twitter.com/joebloggs
item2.X-ABLabel:Twitter

Memotoo (15 November 2012)

BEGIN:VCARD
VERSION:2.1
N:Bloggs;Joe;;;
FN:Joe Bloggs
EMAIL;INTERNET;HOME:me@joebloggs.com
TEL;HOME;CELL:+44 20 1234 5678
ADR;HOME:;;1 Trafalgar Square;London;;WC2N;United Kingdom
URL;HOME:https://joebloggs.com
X-SKYPE-USERNAME:joe.bloggs
X-TWITTER:https://twitter.com/joebloggs
END:VCARD

The vCard file exported by Memotoo is only partially based on the vCard format 2.1.

The Skype address is represented by a non-standard X-SKYPE-USERNAME property:

X-SKYPE-USERNAME:joe.bloggs

The Twitter address is represented by a non-standard X-TWITTER property:

X-TWITTER:https://twitter.com/joebloggs

Conclusion

Given the results of this study, it is not surprising that the import/export of vCard files as well as the synchronisation via CardDAV do not behave as expected most of the time.

Common contact information such as email addresses, telephone numbers, postal addresses, web addresses, and instant messaging addresses can be represented in two ways: using standard properties, or using standard properties grouped together with non-standard properties. The second way is currently used by Apple (and other vendors targeting Apple); it is unnecessary, prevents interoperability, and promotes vendor lock-in.

Other common contact information such as social networking addresses are not supported at all.

So what should be done? Here is my suggestion:

First, the IETF should remove grouped properties and non-standard properties from the specification, since open standards should promote rather than prevent interoperability. Second, the IETF should add social networking properties to the specification. Third, the IETF should provide an official validator for vCard files. Finally, the vendors should implement the last version of the vCard format, and they should do it right.

Update 22 November

I have shared my concerns in IETF’s vCardDAV mailing list. You can follow the thread here.

A new beginning

Dear friends and colleagues,

I would like to thank you for these last five years in Bergen. They made me grow personally and professionally, and I will never forget them.

Now, however, it is time for me to move on. I have accepted a position as Research Scientist at SINTEF ICT in Oslo, and I am looking forward to starting.

My former supervisor Uwe once wrote me “Sometimes changes open unforeseen new perspectives.” This sentence has never seemed more appropriate.

See you in one month, Oslo.

Why I abandoned GNU/Linux on the desktop

I have experimented with GNU/Linux in dual boot with Windows from 1997 to 2000, and I have had GNU/Linux only installed on any of my computers, both at home and at work, since 2001. I have changed distribution relatively often—3 years with Red Hat (now Fedora), 2 years with Mandrake (now Mandriva), few weeks with SuSE (now openSUSE), 1 year with Slackware (don’t ask…), 3 years with Gentoo, few weeks with Debian and 6 years with Kubuntu—but I have not changed desktop environment that much—1 year with FVWM ’95 (those were the days…), 1 year with Enlightenment, 1 year with GNOME 1, and 12 years with KDE.

I have been a loyal KDE user, contributor and advocate since the release of KDE 2.0. I have donated 100 EUR to the KDE e.V. organisation each year since the announcement of the “Join the Game” campaign. Last but not least, I acknowledged the KDE community in my PhD thesis (at the end of the Preface, page xi). This was just in case anybody wonders about my credentials as a GNU/Linux and KDE user…

Unfortunately, KDE does not satisfy my needs anymore, and I was forced to look into other solutions. This post attempts to explain why I came to this decision, and I hope that the GNU/Linux and KDE communities will perceive this as a constructive critic.

KDE 4.0 was released before it had reached feature parity with KDE 3.5. This is because KDE developers intended KDE 4.0 as a technological preview aimed at developers, testers and early adopters only. However, the majority of KDE users did not understand that, which is legitimate considering that .0 means at least feature complete in any other project. As a consequence, many KDE users (including Linus Torvalds) found themselves with a desktop environment which was just half-baked, and eventually ditched KDE.

I expected KDE developers to adopt a more conservative release strategy in future major (point) upgrades, but apparently, they did not learn any lesson. In fact, KDE 4.4 was released together with a new version of KAddressBook which was rewritten from scratch and based on the Akonadi storage service. The new version introduced several regressions compared to the previous version shipped with KDE 4.3. As a consequence, once again, many KDE users found themselves with a half-baked KDE PIM suite, and eventually ditched KDE.

This time also my frustration started to mount. I wrote two verbose posts on the KDE forum to question this release management and propose a system of bounties for bug fixing. These two initiatives triggered a lively discussion in the community, but in the end, nothing happened.

KDE 4.9 was released one month ago. There are still many small nuisances with it, especially with the KDE PIM suite. And do not blame me or the packagers, please. Try to access an IMAP e-mail account with an unstable Internet connection: in the best case, Akonadi will spam the KDE notification system with connection error messages, which will eventually crash KNotify; in the worst case, Akonadi itself will crash. Try also to synchronise contacts and calendars with Google or any other well known social network: if you manage to make it work, consider yourself lucky if you do not have any loss of information.

Despite these years-old bugs, KDE developers keep spending resources on applications the world could probably do without, like the Rekonq browser and the Calligra office suite. Sometimes I ask myself if KDE developers use these applications for real, and apparently, the answer is that some do not: as you can notice in the official screenshot for the KDE 4.9 release, some prefer Chrome and LibreOffice over Rekonq and Calligra, which is not surprising at all. I often read complaints about the lack of resources to maintain the KDE project. Why not focusing on fewer applications of higher quality rather than more applications of questionable quality then?

I tried to look into other distributions and desktop environments, but the situation seems to be even more tragic. Let us have a look at the top ten distributions on Distrowatch:

And these are just ten distributions out of hundreds, as well as just seven desktop environments out of tens—among which I cannot resist mentioning Trinity, which is a fork of KDE 3…

Am I the only one thinking that this fragmentation is beyond ridiculous? The developers of these distributions and desktop environments are spending massive amounts of resources to develop redundant software and compete on a mere 2% of market share. Why not focusing on fewer distributions and desktop environments of higher quality rather than more distributions and desktop environments of questionable quality then?

Maybe there is a question of ego, or maybe there is a problem with the bazaar itself. But the fact remains: GNU/Linux has missed all the chances to become a mainstream desktop operating system, and I do not want to use a niche operating system anymore. This was a difficult decision, and I am sorry for that, but I need something that just works, and I need it now.

So long GNU/Linux, so long KDE, you served me well.

My new desktop operating system? Mac OS X. Do I love it? No, I hate it at times, but I will come back to that another day.

The last four years of my life

From the PhD thesis Diagram Predicate Framework meets Model Versioning and Deep Metamodelling, defended on the 7th December 2011:

Preface

The last four years of my life have been dedicated to writing this thesis and to making it as perfect as possible. These years have witnessed days and nights of hard work, discussion, stress, frustration, anguish, insomnia, as well as praise, relief, travelling and fun.

If you are going to read this thesis, I hope that you will find it interesting. If you are just going to browse through it quickly, I hope that you will find the models as beautiful as I do. If you are only interested in this preface, I hope it will leave you with a nice memory.

Bergen, 3rd October 2011

Acknowledgements

This thesis would not have been possible without the contribution of the outstanding individuals I have met during these four years.

First of all, I would like to thank my supervisor Uwe Wolter, for teaching me a lot of interesting knowledge which spans from mathematics to philosophy and history, as well as for giving me invaluable feedback about my research. He deserves much of the credit for this thesis, and I am indebted to him for all his help and inspiration, scientifically and otherwise. I would also like to thank my co-supervisor Khalid A. Mughal, for suggesting that I enrol in a PhD programme and for supporting all my choices when I finally followed his suggestion. With time I realised that his initiative saved me from becoming a frustrated software engineer.

A special thanks goes to Adrian Rutle, for helping me to get started with my research and for sharing many good times with me, both in Bergen and while travelling. He has been a brilliant colleague and a good friend, and I have many good memories from these years.

I am grateful to my parents Pompilio and Loretta, for all they have done for me, especially for setting my life on what I believe is the right path. I hope that this thesis will make them as proud of me as I am of them.

“Tusen takk” to Synnøve Solberg Tokerud, for her love and friendship, for teaching me about Norwegian and Norway, as well as for her beautiful smile which always helped me to stay positive.

The Department of Informatics at the University of Bergen has given me a private office, a good salary and great financial support, and I am thankful for that. I would like to thank the Programming Theory group, especially Marc Bezem, Torill Hamre, Anya Helene Bagge, Valentin David, Dag Hovland and Federico Mancini, for creating a stimulating environment to work in, for all the chats about informatics and teaching, for all the empirical studies on espresso and on chocolate spreads, as well as for all the feedback they gave me about my work. I am also grateful to the administration of the Department of Informatics, especially Ida Holen, for patiently listening to my rants every time I needed to vent my frustration, Petter Bjørstad and Torleiv Kløve, for supporting my stays abroad, and Steinar Heldal, for guiding me through the bureaucracy of the University.

My research was carried out in cooperation with fellow researchers from the Department of Computer Engineering at the Bergen University College. Thanks to Yngve Lamo, for his suggestions about how to deal with the Norwegian system, and Florian Mantz, for being an excellent flatmate and for preparing pancakes every Sunday.

Part of this thesis was written during my 4-month stay at the Department of Computer Engineering at the Autonomous University of Madrid. “Muchas gracias” to Juan de Lara and Esther Guerra, for taking care of me during my stay and for giving me plenty of insights which ended up being almost half of this thesis.

I would like to thank my opponents Reiko Heckel and Einar Broch Johnsen, for all the time they have spent reviewing this work, and Michal Walicki, for coordinating the committee. I am also grateful to all my fellow researchers and anonymous reviewers who pointed out flaws and suggested possible improvements in my research.

Despite all the time spent preparing this thesis rather than hanging out, I still have many friends left, and they should all be awarded for their patience. In Bergen, Mikal Carlsen Østensen helped me with practically everything before and after my move to Norway. Diego Fiore has been one of my closest friends, who shared countless discussions about the grotesque society we live in with me and was a perfect companion on many suffocating trips around the world. Paolo Angelelli has also been a very good friend, who contributed a lot to the discussion about how to develop an ideal society. My stay in Madrid would not have been the same without Lucia Cammalleri, Teresa Terrana and Daniele Sidoti, who treated me like a close friend since the first day we met. In Italy, my good, old friends Maura Brandimarte, Albert Marsili, Marino Di Carlo, Graziano Liberati and Angelo Di Saverio have been there every time I was back home, and I really appreciate it.

Finally, this thesis would not have reached this level of art without the free and open source software I use and enjoy. A special thanks goes to the communities behind GNU, Linux, KDE, Firefox, Kile, Inkscape, Subversion and Git.