Index

Rhaaa à chaque fois qu'on parle d'IRC on entend : “IRC c'est compliqué”

Du coup on se retrouve à expliquer un peu comment ça fonctionne pour un utilisateur et on donne des commandes et tout.

Mais en fait, malgré tout cela, c'est simple. IRC n'est pas plus compliqué que le web. Au contraire même. C'est juste que le web vous en faites depuis des années mais vous ne vous rendez pas spécialement compte de la complexité de la chose. D'autant plus que chaque site est différent avec une interface qui peut varier du tout au tout. Alors qu'IRC c'est un ensemble de réseaux où tout est identique (à l'exception de la gestion d'identité mais ça reste optionnel).

Bref, si vous apprenez les quelques commandes de base (moins de dix) vous pourrez vous débrouiller sur IRC (et depuis trente ans, elles n'ont pas changées et ne changeront probablement pas).

Et il existe même des logiciels qui planquent toutes ces commandes et remplacent ça par des jolies boutons pour diminuer la courbe d'apprentissage nécessaire.

La force d'être standardisé

Contrairement à d'autres protocoles plus en vue comme Skype, Discord, Slack, Mattermost et pleins d'autres, IRC est défini par ce que l'on apelle une RFC, c'est à dire une norme d'Internet.

Du coup, la façon de communiquer est strictement définie et documentée et ce document (en vrai il y en a plusieurs maintenant) est disponible publiquement sur le web sans inscription ni paiement ni rien. Il est donc possible pour à peu près n'importe qui d'écrire un logiciel compatible.

C'est pour cela qu'il existe tout pleins de logiciels différents pour se connecter à IRC. Alors que pour les protocoles cités précédemment, il n'existe que le logiciel officiel. Il y a bien des fois des tentatives d'avoir des logiciels alternatifs mais ceux-ci ne sont pas officiels et ont tendance à ne pas être bien vu par les éditeurs des logiciels officiels qui leur mettent des bâtons dans les roux, que ce soit techniquement ou légalement.

Un autre avantage, c'est qu'IRC n'est pas contrôlé par une seule entité. Aucun risque d'une faillite qui impacterait les réseaux IRC. Parceque oui, il n'y a pas 1 réseau IRC mais une myriade. Donc dans le pire des cas 1 réseau tombe mais les autres seront toujours là.

Lorsque Microsoft décidera que Skype ne rapporte plus suffisamment, ils couperont sans trop y réflêchir, pareil pour Discord et les autres. IRC n'a pas d'enjeu financier derrière et les réseaux sont en plus très souvent maintenus par des entités à but non lucratif.

La rengaine

Les reproches communément fait envers IRC sont les suivants :

  1. C'est compliqué
  2. L'interface est moche
  3. On voit pas les messages quand on est déconnecté
  4. C'est pas synchronisé entre mon ordinateur, mon laptop, mon smartphone…

1 & 2 : complexité et esthétique

Alors en fait les deux premiers arguments sont liés. Il existe des clients IRC dont l'interface a été pas mal travaillée et du coup, ils ne sont pas moche mais en plus ils sont simple d'accès, ce sont juste pas les plus populaires. Si par exemple, vous prenez le logiciel the lounge vous vous retrouvez avec un truc qui ressemble à Discord, Slack… C'est pas moche du tout, et l'interface est simple à prendre en main.

3 : la déconnexion

Pour le troisième argument, je vous avoue être plus mitigé. Ouai, ne pas voir les messages quand on est déconnecté c'est super chiant. C'est pas pour rien que les gros utilisateurs d'irc passent par des serveurs pour être connecté en permanence (via bouncer ou via un client irc accessible via ssh).

Mais d'un autre côté avoir un historique persistant c'est quand même problèmatique. Si le serveur est à même de vous envoyer l'historique d'un salon de discussion c'est qu'il le stocke. Dans le cas de Geeknode, nous ne logguons pas ce qui se dit sur les salons de discussions ou dans les conversations privées. Les seuls logs sont les logs applicatif (connexion/déconnexion des serveurs, les éventuels erreurs) et les logs d'administration (les kill,glines et messages en provenance des services). C'est largement suffisant pour l'administration du réseau, logguer plus nous mettrait en capacité de violer les conversations privées ou non de nos utilisateurs. Ne pas pouvoir le faire est un soulagement.

Qui plus est, il me paraît normal que si à l'instant t une personne n'est pas présente sur le salon, elle n'ait pas accès à ce qui s'y est dit. Le contraire pousse des gens à s'auto-censurer. Il est d'ailleurs tout à fait courant que de nouveaux salons de discussions soit créé exprès pour "fuire" certains utilisateurs.

Mais sachez qu'IRC évolue encore légèrement et qu'il devient possible pour le serveur de logguer et d'envoyer les messages qui se sont dit même hors connexion. C'est juste rarement installé (pas encore sur Geeknode).

4 : synchro multi client

Ouaip, ça c'est pas possible sans passer par un intermédiaire.

Comparaison avec Matrix

Oui, oui, oui Matrix blabla bla. Matrix ceci… Matrix cela…

J'ai un ptit compte Matrix depuis quelques mois et franchement… bha… Meh.

Déjà, pas de bol, un seul réseau fédéré c'est cool, mais 90% des utilisateurs sur un seul Homeserver ça se ressent méchamment. Le Homeserver officiel est à l'agonie. Du coup ça rame que ça en peut plus.

Riot le client officiel c'est un client web lourdingue qu'il en peut plus. Synapse le homeserver officiel se nourrit de cartons de barettes de ram. Et même pour une instance mono-utilisateur la base de données grossit à vue d'œil.

Du coup le premier contact avec l'engin ne fait vraiment pas envie. Ça se traîne, remonter l'historique rappel les heures sombres de l'Internet par RTC multiplexé…

Sérieux, récupérer 5 lignes de texte prend plus de dix secondes… Et ce même sur un serveur moins peuplé.

Et puis au final, envoyer des images, des vidéos, des trucs divers et variés, ça n'apporte pas grand chose et c'est très souvent abusé. (vla t'y pas que sur un salon d'entraide on se retrouve à voir des screenshots de message d'erreur parceque la pauvre personne en galère ne peut même pas prendre le temps de recopier deux phrases). Et puis il est possible de passer par un paste, envoyer une image/vidéo sur le web.

Bref, même si Matrix pourrait être un remplaçant d'IRC, il apporte beaucoup superflu et se traîne qu'il en peut plus. C'est pas super agréable à utiliser. Un protocole qui arrive trente ans plus tard et qui est radicalement plus lent qu'irc c'est bien le reflet du web et de l'informatique globalement. Plus on avance, plus les machines sont performantes, moins le logiciel est performant du coup à l'utilisation on a pas la sensation d'avancer mais de régresser.

L'écosystème est encore vraiment jeune avec le protocole qui évolue encore pas mal ce qui est compliqué pour les différentes implémentations pour suivre. Les salons doivent changer de versions, les clients compatibles avec toutes les fonctionnalités sont assez rares (seul Riot intègre tout) ce qui fait qu'on se retrouve légèrement dans la situation d'xmpp avec des clients et serveurs partiellement compatibles).

Bref, IRC c'est simple.

Et vous voulez voir à quel point c'est simple ?

On va se connecter manuellement à un serveur irc et discuter sans même avoir de client irc mais en écrivant tout avec nos mimines.

Bon il va vous faloir un client telnet/netcat/nc ou carrément on va être encore plus moderne et on va passer directement par openssl.

Dans un terminal entrez openssl s_client -connect irc.geeknode.org:6697 .

Le serveur vous répond tout un tas de trucs
CONNECTED(00000003)
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
verify return:1
depth=0 CN = hivane.geeknode.org
verify return:1
---
Certificate chain
 0 s:CN = hivane.geeknode.org
   i:C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
 1 s:C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
   i:O = Digital Signature Trust Co., CN = DST Root CA X3
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIGlzCCBX+gAwIBAgISA6LoBQCbzTgc5LavZKLAgJ7LMA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0yMDA0MjkwMjI1MDlaFw0y
MDA3MjgwMjI1MDlaMB4xHDAaBgNVBAMTE2hpdmFuZS5nZWVrbm9kZS5vcmcwggIi
MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDo8Bnlnw3/piIVTlEPWUka+vh/
EQEiByFv0Saxn/whNXcrhiejADoEqHpx2nzUiWEcDXXW+1sUr4GqikVQmJY9R8Z5
Jx8vP86rlTLHhHsgoXp4jtAbPO8BzsvqFI0KRPf6GRu83df5qQDL6M4wamy3KpOm
e0gnwGKbjbW8SSyyE1olOtk20rJC2gZhnIKtVrbYfkwnZysM9DKGRKI0y9fvgW1O
kLltFGNdWF5gc0fppgdKyghZMG+7HNbqDDn8dOQE6V6l+6ZaZD8dGIDpebywe3cQ
ZieEseDD8+jz/95KtWEFSn8dLQptRv5lzh3IzVJvtNRZnrgn4nsnUtpvynxC1+FO
MrAbpDxK76NzzuclQhcMDF8oti/AshlznsEL49efAT6azc1xCETvkVjGi/8oVK1/
Ow/yXucnO1+nVEnVuyvNTL3kX/8UAUKvEroSDAzq7/PFCH44GaKJNrfqSr/QWMlE
vAeMgeXbZ2jB5HP54E+esFsxuQl8xNNuxWpFEb+jGjLM/32w9uIAtWXFtTjQaZUr
thUKDf1UQFai01fX9pkcskfQqIX2vc3fdvub+8VPccMVYW60i9LzUaA8NG2RHjXs
muvBangMNbx4v1ugj9SpGlArRtHZCrmNmFfMd06aR0M5RX1lD9j6pPIE1oLiu4Vq
ox1rkX2U1OWDPyNGpwIDAQABo4ICoTCCAp0wDgYDVR0PAQH/BAQDAgWgMB0GA1Ud
JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQW
BBShKUfc6De2x77U1WYMlTrdwqEzXTAfBgNVHSMEGDAWgBSoSmpjBH3duubRObem
RWXv86jsoTBvBggrBgEFBQcBAQRjMGEwLgYIKwYBBQUHMAGGImh0dHA6Ly9vY3Nw
LmludC14My5sZXRzZW5jcnlwdC5vcmcwLwYIKwYBBQUHMAKGI2h0dHA6Ly9jZXJ0
LmludC14My5sZXRzZW5jcnlwdC5vcmcvMFgGA1UdEQRRME+CE2hpdmFuZS5nZWVr
bm9kZS5uZXSCE2hpdmFuZS5nZWVrbm9kZS5vcmeCEGlyYy5nZWVrbm9kZS5vcmeC
EWlyYzYuZ2Vla25vZGUub3JnMEwGA1UdIARFMEMwCAYGZ4EMAQIBMDcGCysGAQQB
gt8TAQEBMCgwJgYIKwYBBQUHAgEWGmh0dHA6Ly9jcHMubGV0c2VuY3J5cHQub3Jn
MIIBAwYKKwYBBAHWeQIEAgSB9ASB8QDvAHUAsh4FzIuizYogTodm+Su5iiUgZ2va
+nDnsklTLe+LkF4AAAFxw/d/IgAABAMARjBEAiAFBe3+77xwVk/PUmgBOGfes86i
XoqjJWfyPIl9g28pCAIgehMPGnSo3TabsFIE50MNk0RE3kor7EBxtbUXFVua0fgA
dgBvU3asMfAxGdiZAKRRFf93FRwR2QLBACkGjbIImjfZEwAAAXHD93/nAAAEAwBH
MEUCIQDttTwmykhjiGZvSCToiI3Wdfq4bE0Te0T7jv5YmxarSAIgdaLF2LtMW9pg
LIM3mR3Oi8ZRqLP3bKO8DT9Tj0FZ1WswDQYJKoZIhvcNAQELBQADggEBAJPyo0NZ
gsvyq28knOXevVuEz+/l5MGm4OVOLS45YZRcQkbZhrEWh6LKuAiyabIfXEIO3VqE
gUknlpab+ULFOuEc+4BR8EG63QkRBef8kahPGJI57MSO9yg6qOPIyrSWIAGy0XU9
tuEvRS8ISTUw3SyhpweAwYgzMpt6hbJ6edbuoRq+9yjgnq+/TwGxpLWhrngWJ7hZ
d6DYFb+encYcjoQt6qeDUWSEeWUubY7MDGWhDJSLpWvd5mXXmCa5QgGeWdxBNRoR
kvSk+5ZTW8oBP7s3jjYFZa+tie3bQ+tWal2Ets71Vt7SaUHU4Rt8TVILSvu8RLZ9
LWpdBOlbDJaIvos=
-----END CERTIFICATE-----
subject=CN = hivane.geeknode.org

issuer=C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3 No client certificate CA names sent Client Certificate Types: RSA sign, DSA sign, ECDSA sign Requested Signature Algorithms: RSA+SHA512:DSA+SHA512:ECDSA+SHA512:RSA+SHA384:DSA+SHA384:ECDSA+SHA384:RSA+SHA256:DSA+SHA256:ECDSA+SHA256:RSA+SHA224:DSA+SHA224:ECDSA+SHA224:RSA+SHA1:DSA+SHA1:ECDSA+SHA1 Shared Requested Signature Algorithms: RSA+SHA512:DSA+SHA512:ECDSA+SHA512:RSA+SHA384:DSA+SHA384:ECDSA+SHA384:RSA+SHA256:DSA+SHA256:ECDSA+SHA256:RSA+SHA224:DSA+SHA224:ECDSA+SHA224:RSA+SHA1:DSA+SHA1:ECDSA+SHA1 Peer signing digest: SHA512 Peer signature type: RSA Server Temp Key: ECDH, P-521, 521 bits SSL handshake has read 3714 bytes and written 516 bytes Verification: OK New, TLSv1.2, Cipher is ECDHE-RSA-CHACHA20-POLY1305 Server public key is 4096 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE No ALPN negotiated SSL-Session: Protocol : TLSv1.2 Cipher : ECDHE-RSA-CHACHA20-POLY1305 Session-ID: Session-ID-ctx: Master-Key: DCB0E95A32340C7509F73CDDB93C523917F5DE1A0CD221A005C9016F4D718EB986640BA161F3DE5B3ED32E75D60AB69B PSK identity: None PSK identity hint: None SRP username: None Start Time: 1592556345 Timeout : 7200 (sec) Verify return code: 0 (ok) Extended master secret: yes

Voilà, là vous avez juste établit une connexion réseau sécurisée.

Maintenant que la connexion réseau est établie, il faut parler dans le langage irc pour vous initier la session et vous connecter à un salon. C'est un peu comme si vous aviez composé un numéro de téléphone pour le moment, maintenant vous allez commencer le dialogue en vous présentant et en faisant vos demandes.

user $PSEUDO * * :$DESCRIPTION donc là vous définissez le pseudo que vous voulez mettre et vous mettez une ptite description (vous pouvez vous contenter de remettre votre pseudo).

nick $PSEUDO là vous entrez le pseudo que vous voulez utiliser (ouai c'est redondant et la subtilité avec la commande précédente n'a que peu d'intéret mais faut le faire).

Là, le serveur devrait vous renvoyez un message de type PING :$XXXXXXX . Vous avez quelques secondes pour lui répondre pong :$XXXXXXX en sachant que la valeur va changer à chaque fois. Si vous ne le faites pas assez vite vous serez déconnecter et il faudra recommencer.

D'ailleurs même plus tard quand vous serez connecté il vous enverra des ping régulièrement. Il faudra toujours y répondre promptement.

Une fois répondu avec le pong, le serveur vous connectera réellement et vous enverra tout un tas d'informations le concernant : son nom, sa version de logiciel, ce qu'il s'ait faire, sa population, un message de bienvenue, vos modes…

Maintenant vous allez pouvoir rejoindre un salon de discussion pour ça il suffit de taper join #fediverse et hop vous voilà connecté au salon. Vous recevrez la liste des utilisateurs actuellement connecté au salon.

Voilà, vous allez pouvoir envoyer des messages en entrant privmsg #fediverse coucou tout le monde \o/ . Ça y est votre message est parti.

Vous recevrez les messages du salon qui auront cette allure

:Lord!Lord@geeknode.fuckyeah PRIVMSG #fediverse :hello

Voilà, irc c'est aussi simple que ça. C'est juste du texte qui se balade comme ça, c'est vraiment basique.

Donc pour résumer se connecter / rejoindre un salon / envoyer un message ça se résume à ça :

openssl s_client -connect irc.geeknode.org:6697
user monpseudo * * :monpseudo
nick monpseudo
pong $XXXXXX
join #fediverse
privmsg #fediverse coucou le salon !

Voilà, n'hésitez pas à tester cette manipulation, on se croirait un vrai hacker. Ça nécessite quasiment aucune installation et puis c'est assez amusant de parler au serveur irc.

Pour aller plus loin

Le protocole en lui-même n'a pas de notion de comptes. C'est géré par ce qu'on apelle les services et c'est parfaitement optionnel.

IRC utilise ce qu'on apelle des modes pour donner des droits mais là aussi, on peut très bien utiliser irc basiquement pendant des années sans s'en soucier.

J'ai écrit une petite série de guides permettant d'en apprendre un peu plus sur les rouages. FIXME