[Traduction française ci-dessous.] Usually when I start using an Internet protocol, I try to learn something about its modus operandi. So I can more or less grok HTTP, FTP, SMTP, NNTP, IRC and so on, and I've hand-decoded some TCP segments and IP datagrams (and Ethernet frames). This is useful when it comes to debugging errors on the protocol level. But I had decided I'd make an exception for ICQ: I don't wish to learn anything about the gory technical details of how ICQ works, for once, I'd like to just use it. Which means I'm totally clueless beyond the basic interface offered me by my client, Licq: I don't know why I get these “authorization requests” from time to time, nor why some people in my contact list are displayed in yellow (rather than the usual blue when on online, green when not available, and red when offline), nor why some people occasionally appear as their UIN and occasionally as their nickname; and I don't know whether the contact list is stored client-side, server-side or part both; and I really don't care. But it seems I may have to care: I tried switching from Licq to Gaim, and, of course, the client immediately died (segfaulted) when connecting to the server, so I had to look into the problem; these programs are excruciatingly painful to debug, but I managed to track the problem (for which I submitted a bug report) down to the ICQ server sending an invalid string, which the client assumed had to be properly encoded utf-8 (and it was not), when it should have sent the decimal representation of a number (the UIN of one of my contacts): I have no idea why—but if I am to find out more, I'll probably need to learn more about ICQ. Shit.
[French translation of the above.] D'habitude quand je me mets à utiliser un protocole de l'Internet, j'essaie d'apprendre quelque chose de son mode de fonctionnement. Donc je peux plus ou moins parler le HTTP, FTP, SMTP, NNTP, IRC et ainsi de suite, et j'ai déchiffré à la main des segments TCP et des datagrammes IP (et des trames Ethernet). C'est utile quand il s'agit de débugguer des erreurs au niveau protocole. Mais j'avais décidé de faire une exception pour ICQ : je ne veux pas apprendre quoi que ce soit des détails techniques pénibles sur comment ICQ fonctionne, pour une fois, je voudrais juste l'utiliser. C'est-à-dire que je suis totalement incompétent au-delà de l'interface la plus basique que me fournit mon client, Licq : je ne sais pas pourquoi j'ai des « authorization requests » de temps en temps, ni pourquoi certaines personnes dans ma liste de contacts sont affichées en jaune (plutôt que l'habituel bleu quand en ligne, vert quand indisponible et rouge quand hors ligne), ni pourquoi des gens apparaissent à l'occasion sous leur UIN et à l'occasion sous leur nick ; je ne sais pas si la liste des contacts est stockée côté client, côté serveur ou en partie les deux ; et je n'en ai rien à faire. Mais on dirait que je vais devoir en avoir à faire : j'ai essayé de passer de Licq à Gaim, et, bien sûr, le client est mort immédiatement (il a segfaulté) en se connectant au serveur, donc j'ai dû chercher à en savoir plus sur le problème ; ces programmes sont incroyablement pénibles à débugguer, mais j'ai réussi à remonter le problème (pour lequel j'ai soumis un bug report) au fait que le serveur ICQ envoyait une chaîne invalide, que le client supposait devait être de l'utf-8 proprement encodé (ce n'était pas le cas), quand il aurait dû envoyer la représentation décimal d'un nombre (l'UIN d'un de mes contacts) : je n'ai aucune idée de pourquoi — mais si je cherche en apprendre plus, je vais probablement devoir en apprendre plus sur ICQ. Merde.