1 points par GN⁺ 2023-10-01 | 1 commentaires | Partager sur WhatsApp
  • Ce que les hackers connaissaient autrefois naturellement — la structure binaire de l’ASCII, le RS-232, les terminaux matériels et les modems — n’est plus transmis à l’initiation, car le matériel et l’environnement réseau ont changé
  • Des expressions comme tty, SIGHUP, core dump, README ou Ctrl-D sont les vestiges d’outils disparus ; en connaître l’origine aide à mieux comprendre l’Unix moderne et les pratiques de développement
  • L’ASCII, les machines 36 bits, l’octal, les réglages RS-232, MIME, termios, curses et le contrôle de terminal ANSI montrent les couches de compatibilité historique encore présentes dans les systèmes actuels
  • Avant l’Internet grand public, UUCP, USENET, les BBS, FidoNet, FTP, Gopher, le timesharing commercial et les WAN universitaires se répartissaient les rôles de transfert de fichiers, courrier, forums et collaboration
  • Le développement fondé sur des dépôts publics s’est formé en passant par les bandes DECUS, FTP et l’e-mail, les groupes de sources USENET, patch(1), SCCS/RCS/CVS, SourceForge et Subversion, jusqu’à Git en 2005

Les traces d’Unix laissées par un matériel disparu

  • Si les jeunes hackers ne connaissent plus la structure binaire de l’ASCII ni certains caractères de contrôle particuliers, ce n’est pas un problème individuel mais la conséquence de la disparition des terminaux matériels et du RS-232 au quotidien
  • Autrefois, un terminal n’était pas une fenêtre logicielle mais un terminal vidéo (VDT) relié à un ordinateur central ; avant cela, on utilisait des appareils de type teletype qui imprimaient sur papier
  • Le tty d’Unix vient de l’abréviation de teletype, le lp de /dev/lp signifie line printer, et le /dev/drum de certains BSD Unix vient des premiers périphériques à tambour rotatif
  • \r, Carriage Return, correspond au mouvement qui renvoie la tête d’impression au début de la ligne ; Unix traite la fin de ligne avec un seul \n, mais d’autres systèmes d’exploitation continuent d’utiliser \r\n
    • Si l’ordre est \r\n, c’est parce que sur les premiers matériels le carriage return prenait plus de temps qu’une transmission de caractère et devait donc être lancé en premier
  • Le mode où plusieurs utilisateurs se partageaient le CPU d’un ordinateur central s’appelait le timesharing, et on en retrouve encore des traces dans la structure des multiples terminaux virtuels des Unix modernes

RS-232, modem et commandes AT

  • Le RS-232 est un protocole matériel développé au début des années 1960 pour faire communiquer les téléimprimeurs et les modems ; avant l’USB, un lien « serial » désignait généralement du RS-232
  • Un modem était un appareil permettant d’envoyer des signaux numériques sur une ligne téléphonique, et les hackers utilisaient souvent des modems externes sous forme de boîtier séparé
    • Les modems internes étaient sensibles au bruit RF à l’intérieur du boîtier, et les voyants des modems externes étaient utiles pour diagnostiquer les problèmes
    • On pouvait distinguer dans une certaine mesure une connexion réussie d’un échec de synchronisation au son des bips et sifflements du modem
  • Dans le SIGHUP d’Unix, HUP signifie Hang Up et désignait à l’origine la situation où la connexion modem était coupée et où le terminal de contrôle disparaissait
  • La vitesse des modems est passée de 110 bps à 56 kbps à la fin des années 1990, et pendant la période de stabilité autour de 1984–1991, 9600 bps était courant
    • C’est pourquoi beaucoup d’équipements à protocole série encore présents utilisent 9600 bps comme valeur par défaut
  • Le préfixe de commandes AT du Hayes Smartmodem s’est imposé de fait à partir de 1981, et on pouvait composer un numéro en ajoutant celui-ci après ATDT
    • Le motif binaire de AT était facile à reconnaître pour le récepteur même sans connaître le débit de transmission, ce qui favorisait la synchronisation automatique
    • En 2017, on trouvait encore des commandes AT dans les fonctions de contrôle des modems cellulaires 3G/4G des smartphones, et dans un type largement diffusé, AT+QLINUXCMD= servait de préfixe pour transmettre des commandes à une instance Linux dans le firmware de la puce

« core », machines 36 bits et octal

  • Entre 1955 et 1975 environ, avant la mémoire à semi-conducteurs, la mémoire dominante était la mémoire à tores faite de petits anneaux de ferrite et de fils de cuivre ; c’est de là que viennent des termes Unix comme in core et core dump
  • Après 2000, avec la banalisation des systèmes multiprocesseurs jusque sur les postes de bureau, core a aussi commencé à désigner un processor core, et son ancien sens lié à la mémoire est devenu de moins en moins compris
  • La hiérarchie octets de 8 bits / mots de 16, 32 et 64 bits ne s’est vraiment imposée qu’après 1983 ; auparavant, la tradition des architectures à mots de 36 bits était importante
    • Le DEC PDP-10 et la Lisp machine Symbolics 3600 étaient des machines 36 bits représentatives
    • L’annulation du PDP-10 a marqué en 1983 la fin de cette lignée, tandis que le Symbolics 3600 a tenu encore une dizaine d’années
  • Un mot de 36 bits se divisait en 12 champs de 3 bits, ce qui rendait la représentation octale naturelle, et l’on estimait pouvoir distinguer une famille 32 bits d’une famille 36 bits dans un dump mémoire en voyant si des chiffres supérieurs à 7 apparaissaient
  • Dans les littéraux numériques du C, la syntaxe où un 0 initial signifie de l’octal vient de l’histoire de B et des PDP-7/PDP-11, et de nombreux langages comme Java ou Python ont hérité de cette trace en reprenant les règles lexicales bas niveau du C
    • Python 3, Perl 6 et Rust ont supprimé cette syntaxe octale dangereuse avec zéro initial, mais Go l’a conservée
    • Le jeu d’instructions x86 est généralement décrit en hexadécimal, mais une grande partie se comprend plus naturellement en octal si on le lit comme des champs de 3 bits

L’enfer de la configuration RS-232 et le monde 7 bits

  • Les liens TCP/IP ressemblent généralement à des flux d’octets 8 bits propres, mais avec du matériel RS-232, les deux côtés devaient s’accorder sur la vitesse de ligne, le tramage des octets, la parity et le stop bit
  • Après 1984, 8N1 — 8 bits, no parity, 1 stop bit — est devenu courant, mais auparavant on utilisait diverses combinaisons, et si les réglages ne correspondaient pas, on ne voyait qu’un fatras aléatoire de déchets 8 bits appelé baud barf
  • Si l’interface de terminal POSIX/Unix termios(3) comporte tant d’options complexes dont le sens paraît aujourd’hui obscur, c’est parce qu’il fallait manipuler ces réglages RS-232
  • Quand la parity était activée, le bit de poids fort des données binaires 8 bits pouvait être corrompu ; on appelait 8-bit clean un réseau ou un logiciel qui ne cassait pas le bit de poids fort 0x80
    • L’encodage MIME pour l’e-mail et MIME64 sont apparus à cause d’environnements où ces contraintes 7 bits subsistaient encore
    • Avant MIME, uuencode/uudecode étaient utilisés sous Unix pour convertir des données 8 bits en 7 bits, et on peut encore les croiser aujourd’hui
  • Les connecteurs RS-232 eux-mêmes mêlaient DB-25 et DB-9, et il fallait des accessoires comme des gender changers, des adaptateurs DB-25↔DB-9, des breakout boxes et des null modems
    • Après 2000, un piège est apparu : le RS-232 standard sur DB9/DB25 et le TTL serial sur carte électronique étaient parfois tous deux étiquetés RS232
    • Le TTL serial fonctionne à des niveaux 3,3 V ou 5 V, tandis que le RS-232 standard utilise des écarts de tension bien plus élevés ; un branchement sans level shifter peut donc endommager les composants du côté TTL
  • Le RS-232 a disparu des connaissances générales au milieu ou à la fin des années 1990, mais il n’avait pas totalement quitté les ordinateurs généralistes jusque vers 2010, et il subsiste dans les équipements de point de vente, les consoles de diagnostic de routeurs commerciaux, les consoles de débogage embarquées, les capteurs GPS et les appareils IoT

Les WAN et les communautés avant Internet

  • Aujourd’hui, les WAN ont presque tous convergé vers l’Internet TCP/IP, mais de la fin des années 1970 au milieu des années 1990, plusieurs WAN pré-Internet coexistaient
  • UUCP, sigle de Unix to Unix Copy Program, a fourni après sa sortie hors de Bell Labs en 1979 et jusqu’à la généralisation de l’Internet grand public au milieu des années 1990 un réseau à bas coût entre sites Unix via modem et réseau téléphonique
    • À l’origine, c’était un système de store-and-forward destiné à propager des mises à jour logicielles, mais ses usages principaux sont devenus l’e-mail et USENET, lancé en 1980
    • Dans un système où la tarification téléphonique séparait les appels locaux au forfait et les appels longue distance facturés à l’usage, le trafic UUCP pouvait enchaîner des sauts locaux pour contourner les transmissions longue distance
  • USENET a servi de terreau, à partir des groupes de partage de code source, aux pratiques modernes de l’open source, et des noms de fichiers de métadonnées de projet comme README, NEWS, INSTALL s’y sont imposés au début des années 1980
    • En 1987, le Great Renaming a réorganisé la hiérarchie des noms de groupes USENET
    • En 1993, quand AOL a ouvert l’accès à USENET à ses utilisateurs, a commencé le « September that never ended », l’afflux massif de nouveaux venus rendant difficile l’adaptation à la culture existante
  • Les adresses UUCP prenaient la forme de bang-paths comme …!bigsite!foovax!barbox!user, puis ont été remplacées au début des années 1990 par le format user@hostname avec la montée de l’accès à Internet
    • Pendant la période de transition, il existait aussi des adresses hybrides combinant routage UUCP et routage Internet avec %
  • Les BBS étaient généralement des systèmes où l’on se connectait un par un à un ordinateur relié à un seul modem, afin d’accéder à des messages, à l’envoi et au téléchargement de fichiers, et à des jeux
    • Le premier BBS a été exploité à Chicago en 1978, puis plus de 100 000 BBS sont apparus avant de disparaître au cours des 18 années suivantes
    • À partir de 1984, FidoNet a permis l’e-mail entre BBS ainsi qu’un système de forums proche d’USENET
    • XMODEM, YMODEM et ZMODEM sont presque les seuls vestiges mémoriels de la culture BBS, et en 2018 certains équipements Cisco recevaient encore des correctifs via téléversement XMODEM sur port série
  • Il existait aussi des services commerciaux de time-sharing comme AOL, CompuServe, GEnie, The Source et Prodigy, ainsi que des WAN académiques comme CSNET, BITNET, EARN et VIDYANET, et le mot listserv vient des reflectors d’e-mail de BITNET

L’accès à l’information avant FTP, Gopher et le Web

  • Avant que le World Wide Web ne se généralise en quelques années au début des années 1990, le transfert de fichiers entre sites Internet depuis 1971 se faisait généralement via ftp et le File Transfer Protocol
  • Quand les navigateurs Web ont commencé à parler directement le protocole FTP, l’usage de ftp a été en grande partie absorbé par les navigateurs, et le préfixe d’URL ftp: indiquait qu’il fallait communiquer avec un serveur FTP
  • En 1991, la même année où Tim Berners-Lee créait le World Wide Web, des hackers de l’University of Minnesota ont créé Gopher, un protocole hypertexte orienté menus
  • Gopher a concurrencé le Web naissant pendant quelques années, mais son adoption a ralenti au début de 1993 lorsque l’université a décidé de facturer des droits de licence pour les implémentations
  • Les premiers navigateurs Web prenaient en charge le protocole Gopher et l’affichage de ses documents, mais en 2000 Gopher avait pratiquement disparu et seuls quelques serveurs subsistaient par nostalgie ou par ironie

Les émulateurs de terminal et l’héritage des VDT

  • Les émulateurs de terminal du Unix moderne sont proches de la dernière forme héritée des premiers afficheurs imitant le teletype, c’est-à-dire les glass TTY et les dumb terminals
  • Le premier appareil de ce type a été livré en 1969, et parmi les modèles restés en mémoire figure l’ADM-3 de 1975
  • Les premiers VDT, comme l’ASR-33, ne pouvaient afficher que des majuscules, et Unix comme Linux en 2018 conservent le comportement consistant à passer dans un mode qui convertit toute saisie en majuscules si le nom de connexion commence par une majuscule
  • Les « smart terminals » comme l’ADM-3A apparu en 1975 et le DEC VT-100 de 1978 ont laissé en héritage la largeur de 80 caractères issue des cartes perforées ainsi que les tailles d’écran par défaut de 24x80 ou 25x80
  • Des fonctions de contrôle comme le positionnement du curseur, le gras, le soulignement ou le reverse-video sont devenues courantes, et pour les abstraire Unix utilisait la base de données terminfo et la bibliothèque curses(3)
  • Après 1979, les codes de contrôle de terminal ANSI basés sur le DEC VT-100 se sont diffusés, et au début des années 1990 la compatibilité ANSI était presque universelle parmi les VDT
  • Vers 1992, les écrans couleur bitmapped des ordinateurs personnels ont atteint le dot pitch et la netteté d’affichage du texte des VDT monochromes, ce qui a provoqué l’effondrement rapide du marché des VDT dans l’informatique généraliste
  • La ligne de commande Unix remonte à l’ère des printing terminals, antérieure aux VDT, ce qui explique aussi l’usage du mot « printing » pour dire qu’on affiche quelque chose
  • Les interfaces bidimensionnelles en mode texte comme vi(1), top(1) et mutt(1) étaient les interfaces visuelles avancées de l’ère des VDT, et elles n’ont reçu le nom de TUI qu’après la généralisation du terme GUI
  • Les screensavers sont apparus comme des logiciels destinés à changer l’image à l’écran pour éviter le phosphor burn-in des CRT, et sur les écrans plats leur fonction d’origine a disparu

Les premiers écrans bitmapped et l’esthétique 8-bit

  • Le premier exemple, dans un système de production, d’écran manipulable au pixel près annonçant ceux d’aujourd’hui a été l’Alto de Xerox PARC en 1973
    • L’écran de l’Alto faisait 608x808 pixels, et le souvenir d’un modèle en 1024x1024 vient d’une confusion avec des écrans ultérieurs
    • En 1981, le Dandelion est monté à 1024x809, mais la tentative de commercialisation sous le nom Xerox Star a échoué
    • En 1982, le Sun-1 de Sun Microsystems proposait 1024x800 pixels, et les stations de travail de niveau Sun étaient l’objet de désir de nombreux hackers
  • Les ordinateurs couleur personnels ont offert des écrans bitmapped rudimentaires à partir de 1975, mais le mode Hi-res de l’Apple II se limitait à 280x192
  • Les hackers avaient besoin d’un affichage texte adapté à la programmation et connaissaient les graphiques des stations de travail en 1024x1024, si bien qu’ils considéraient souvent les écrans couleur grand public basés sur la télévision comme des gadgets presque inutiles
  • Le Macintosh original de 1984 a été la première machine grand public dotée d’un écran bitmapped monochrome de 512x342, puis IBM EGA et ses clones ont rapidement proposé du 640x350 en 16 couleurs
  • Ce n’est qu’autour de 1990 que les moniteurs couleur 1024x1024 ont atteint le haut de gamme du marché grand public, avant de se généraliser vers 1992, moment où les constructeurs de PC ont commencé à mettre la pression sur les vendeurs de stations de travail
  • Au milieu des années 1980, certains jeunes hackers ont cherché à tirer le maximum d’écrans couleur basse résolution et des premiers matériels audio ; les chunky graphics, pixelated sprites et sons chirpy/buzzy qui en ont résulté servent au XXIe siècle de nostalgie 8-bit dans les jeux

La culture du jeu avant l’interface graphique

  • Avant la généralisation des écrans couleur bitmap, il existait une forte tradition de jeux fonctionnant uniquement avec des interfaces textuelles et les graphismes en cellules de caractères des VDT
  • La lignée de Trek remonte à 1971 et désigne une famille de jeux où le joueur pilote l’Enterprise pour combattre des Klingons, des Romuliens, etc.
    • Derrière une interface très rudimentaire conçue pour les téléscripteurs se cachait un wargame relativement sophistiqué, où l’initiative, la surprise tactique et la logistique étaient importantes
  • Colossal Cave Adventure est le premier dungeon-crawling adventure game, datant de 1977, et c’est de ce jeu que viennent « You are in a maze of twisty little passages, all alike » et xyzzy
    • En raison des noms de fichiers de 6 caractères du PDP-10, les premiers utilisateurs appelaient aussi ce jeu ADVENT
    • Il existe aussi un port C moderne, ADVENT
  • Zork est l’héritier direct d’ADVENT, publié pour la première fois sur PDP-10 par des hackers du MIT en 1979, avant de connaître un succès commercial
    • Des expressions comme zorkmid, Great Underground Empire et grue viennent de là
  • Les roguelike sont une famille de jeux nommée d’après Rogue en 1980, fondée sur l’exploration d’un donjon vu du dessus où l’on combat des monstres et cherche des trésors
    • Hack apparaît en 1982, puis Nethack en 1987
    • Nethack fut l’un des tout premiers programmes dont le groupe de développement s’est consciemment organisé en collaboration distribuée via Internet, et cette nouveauté se reflète dans le nom du projet
  • Les descendants de Rogue furent les jeux TUI les plus populaires et les plus réussis ; ils ont disparu de la culture générale à partir du milieu des années 1990, mais conservent encore aujourd’hui un petit noyau de fans dévoués

La structure en bits de l’ASCII et les caractères de contrôle

  • L’ASCII s’est développé à partir de familles de codes de caractères pour téléscripteurs au début des années 1960, et comme les 127 premiers points de code d’Unicode ont été conçus comme de l’ASCII, il a de fortes chances de perdurer longtemps
    • Si vous connaissez l’UTF-8, alors tout fichier ASCII est aussi un fichier UTF-8 valide
  • La touche modificatrice Control du clavier fonctionne essentiellement en effaçant les 3 bits de poids fort du caractère saisi pour ne laisser que les 5 bits de poids faible, puis en le mappant vers un caractère de contrôle dans l’intervalle 0 à 31
    • Ctrl-SPACE, Ctrl-@, `Ctrl-`` signifient tous NUL
  • Les très anciens claviers implémentaient Shift en basculant 32 ou 16 bits selon la touche, ce qui explique la régularité des relations entre minuscules et majuscules, ainsi qu’entre chiffres et symboles, dans l’ASCII
  • L’ASCII originel de 1963 différait de l’ASCII de 1967 utilisé aujourd’hui : il ne contenait ni tilde ni barre verticale, et 5E n’était pas un caret mais une flèche vers le haut, tandis que 5F n’était pas un underscore mais une flèche vers la gauche
  • Parmi les caractères de contrôle 0 à 31, beaucoup sont des vestiges des protocoles de téléscripteurs ; certains subsistent dans les usages textuels ou Unix, d’autres dans les protocoles de données binaires
    • NUL : terminateur de chaîne en C
    • EOT / Ctrl-D : saisie de fin de fichier dans un terminal Unix
    • BEL / Ctrl-G : sonnette du téléscripteur ou signal d’attention sur un VDT
    • BS, HT, LF, FF, CR, ESC, DEL : ensemble de caractères de contrôle relativement connus
    • DC1/DC3 : utilisés pour le contrôle de flux logiciel XON/XOFF, implémenté aussi dans Unix, CP/M et DOS
    • SUB / Ctrl-Z : caractère de fin de fichier sous DOS et Windows, hérité de CP/M et des mini-ordinateurs DEC ; sous Unix, il sert de touche de suspension de processus
    • ESC : toujours utilisé comme introducer de séquences de contrôle sur les VT100, les VDT ANSI et les émulateurs de terminal modernes
  • La valeur 0x7F de DEL vient du fait que, sur bande perforée, 7 trous permettaient d’écraser n’importe quel caractère ASCII ; les lecteurs de bande ignoraient DEL et NUL
  • La touche Meta ou Alt ajoutait généralement 128 au keycode ASCII sur les VDT, mais les émulateurs de terminal modernes utilisent aussi souvent une méthode consistant à préfixer la touche modifiée par ESC
  • La structure en bits de l’ASCII peut être examinée avec ascii(1), et les tableaux ASCII de l’article ont également été générés avec cet outil

La lente naissance de la collaboration distribuée

  • Aujourd’hui, on considère comme allant de soi le version control distribué public et la collaboration à distance, mais les outils et les usages qui les sous-tendent ont mis longtemps à se former
  • L’un des premiers ancêtres fut le partage de bandes de DECUS, le Digital Equipment Corporation Users' Group fondé en 1961
    • Les utilisateurs de DEC faisaient circuler des bandes magnétiques contenant du logiciel public domain, et cette pratique était déjà bien établie en 1976
    • La convention README est entrée dans le monde Unix via USENET, mais semble être une trace propagée depuis les bandes DECUS
  • Dans les années 1970, il existait déjà une collaboration sur des logiciels universitaires via échange de source code par e-mail et publication de distributions sur des sites FTP
    • L’e-mail en réseau a été inventé en 1971 et était déjà si largement utilisé qu’il représentait 75 % du trafic ARPANET en 1973
    • TeX de Donald Knuth, lancé en 1978, est un exemple emblématique encore vivant de cette époque
  • Après 1980, il est vite devenu habituel de publier du source code dans des newsgroups USENET dédiés et de recevoir des patches d’auteurs externes par e-mail
    • comp.sources.unix était l’endroit ordinaire où les hackers Unix allaient chercher du nouveau code
  • Un développement totalement décentralisé nécessitait version control, patching et forge
    • SCCS est né en 1972, mais n’est sorti de Bell Labs qu’en 1977, et sa licence propriétaire a freiné sa diffusion
    • RCS fut, en 1982, une alternative librement réutilisable
    • patch(1) est apparu en 1984 ; auparavant, il était courant de s’échanger les fichiers modifiés en entier
  • Nethack est un roguelike commencé en 1987, et constitue un premier exemple de développement entièrement distribué : les développeurs s’échangeaient par e-mail des fichiers complets puis des patches, tout en utilisant SCCS/RCS pour gérer leurs copies locales
  • CVS apparaît en 1990 et, après l’ajout en 1993 de fonctions d’accès distant par le réseau, il est rapidement adopté par de grands projets comme FreeBSD et NetBSD
  • Linux a été annoncé en 1991 comme un effort de collaboration distribuée, mais le développement initial fonctionnait encore par patches envoyés par e-mail comme pour Nethack, et il n’existait pas encore de dépôt Linux public
  • SourceForge, apparu en 1999, fut la première software forge dédiée ; il ne prenait en charge au départ que CVS, mais a accéléré l’adoption de Subversion, sorti en 2000
  • Subversion est devenu une évidence partagée entre 2000 et 2005, puis Linus Torvalds a créé Git en 2005, rendant rapidement obsolètes les systèmes de gestion de versions précédents

Repères chronologiques à retenir

  • En 1969, Ken Thompson a commencé le travail qui allait devenir Unix, le premier VDT commercial a été expédié, et le premier paquet a été échangé sur ARPANET
  • En 1970, le DEC PDP-11 a été commercialisé, puis a fortement influencé des familles d’architectures, dont Intel et ARM
  • En 1971, l’email en réseau et l’utilisation du symbole @ ont été inventés sur l’ARPANET des débuts
  • En 1973, le Xerox Alto a ouvert la voie à la workstation, un ordinateur personnel en réseau doté d’un écran haute résolution et d’une souris
  • En 1977, Unix a été porté sur Interdata, devenant la première version dont l’essentiel du noyau était écrit en C, SCCS a été publié, et Colossal Cave Adventure a été commercialisé
  • En 1980, Rogue a été inventé et USENET a été lancé
  • En 1981, l’IBM PC a été commercialisé, TCP/IP a été implémenté dans 4.1BSD Unix sur le VAX-11/780, et les cultures ARPANET et Unix ont commencé à converger
  • En 1983, le PDP-10 a été abandonné et ARPANET, au terme de changements techniques, est devenu Internet
  • En 1987 ont eu lieu le Great Renaming de USENET, l’invention de Perl et le lancement du projet Nethack
  • En 1991, Linux et le World Wide Web ont respectivement vu le jour, et Python a été inventé
  • En 1993, Linux a obtenu des capacités TCP/IP, passant du jouet de hobbyiste à un OS sérieux, l’ouverture de USENET par AOL a déclenché le « September That Never Ended », et Mosaic a apporté au Web des fonctions graphiques et d’affichage d’images
  • En 1994, l’Internet grand public a réellement décollé aux États-Unis et l’USB a été annoncé
  • Les années 1995~1996 ont marqué à la fois l’apogée de la culture UUCP/USENET et BBS, et son effondrement sous la pression de l’Internet grand public
  • En 1999, SourceForge a été lancé, et avec Linux fonctionnant sur PC, le marché des workstations Unix propriétaires comme celles de Sun s’est effondré
  • En 2005, les principaux fabricants ont cessé la production de CRT pour passer aux écrans plats, AOL a abandonné la prise en charge de USENET, et Git a été publié pour la première fois
  • En 2007~2008, le passage du PC grand public au 64 bits a mis fin à l’ère du 32 bits, et l’iPhone comme Android ont été commercialisés pour la première fois avec des OS basés sur Unix

1 commentaires

 
GN⁺ 2023-10-01
Commentaires Hacker News
  • Ce qui est intéressant, c’est que la manière dont cet article fait le lien avec le monde moderne est assez imprécise. Par exemple, juste après avoir expliqué que le préfixe de commande Hayes AT possède une propriété utile pour l’auto-synchronisation du débit de ligne, il affirme qu’en 2017 les commandes AT sont encore utilisées pour contrôler les modems cellulaires 3G/4G.
    Mais les modems modernes ne sont pas connectés en série, et la notion de débit de ligne n’existe pas non plus. Cette propriété n’a aucun rapport avec le matériel moderne ; l’explication selon laquelle il était plus facile d’étendre des bases de code existantes à de nouveaux environnements est bien plus plausible.
    « Les appareils IoT parlent encore RS-232 » est aussi une affirmation dangereusement fausse. RS-232 utilise une tension positive pour 0 et une tension négative pour 1, chacune dans une plage de 3 à 15 V ; brancher directement du RS-232 sur l’interface série d’un appareil IoT moderne risque donc fort de l’endommager. Ce que les anciens ports série et les ports série des appareils modernes ont en commun se situe en dehors du périmètre de RS-232 ; par exemple, le cadrage 8N1 n’est pas défini par RS-232.
    Dire que « tout fichier ASCII est un UTF-8 valide » est également ambigu. ASCII est un jeu de caractères, il ne définit pas une représentation sur disque ; un fichier ASCII stocké en compactant les caractères sur 7 bits n’est pas de l’UTF-8 sans manipulation. C’est une affirmation étrange si l’on considère que l’article vient de traiter de différentes longueurs de mot et de formats de transmission qui ne sont pas 8-bit clean.
    Dire que Git a rapidement rendu obsolètes tous les systèmes de gestion de versions précédents est aussi exagéré quand on pense à Perforce. Git a été une grande amélioration par rapport à CVS et SVN, mais prétendre qu’il a ringardisé tout ce qui l’a précédé donne l’impression d’ignorer une large partie de l’industrie du logiciel.
    Bien sûr, c’est pinailler à l’excès, mais si le ton général de l’article est supérieur et méticuleusement tatillon, il n’est pas injuste de le critiquer avec le même niveau d’exigence.

    • Dire que « les appareils IoT utilisent encore RS-232 » est en fait assez juste. Vous pensez sans doute à des appareils modernes basse tension, mais dans l’industrie, Modbus et RS-485/RS-232 sont toujours bien vivants, et l’IoT y est très actif.
      Dire que les modems modernes ne sont pas connectés en série n’est pas exact non plus. Ce n’est simplement pas forcément quelque chose qu’on appellerait RS-232 ; il y a encore quelques années, on utilisait couramment des lignes USB, et l’USB est aussi un bus série.
      Les commandes AT sont encore utilisées dans presque tous les modems, y compris dans le téléphone que vous avez dans la poche. C’est ainsi qu’un modem cellulaire établit un appel sur le réseau téléphonique, et le vénérable ATDT continue d’être utilisé pour configurer des appels réseau. Le jeu de commandes AT servait à contrôler les propriétés d’appel comme l’établissement de l’appel, la vitesse maximale et les protocoles autorisés ; l’autonégociation est une étape distincte au niveau réseau/modem. Les anciens modems faisaient entendre ce processus via leur haut-parleur ; aujourd’hui, on ne l’entend simplement plus.
    • À pinailler, UTF-8 ne définit pas non plus une représentation sur disque ; ce n’est qu’un encodage de caractères du jeu Unicode. Mais dans la mesure où il définit bien une représentation binaire, la phrase « l’ASCII est aussi valide en UTF-8 » est correcte.
      La manière dont ces jeux de caractères sont transportés au-dessus d’autres protocoles sort de leur périmètre de définition.
    • Je ne sais pas qui a décidé que « les modems modernes ne sont pas connectés en série et n’ont pas de notion de débit de ligne ». En ce moment même, sur mon deuxième écran, je débogue un microcontrôleur connecté à un modem LTE Cat M1 par une liaison série.
      Par défaut, c’est une ligne 115200 8n1, la vitesse peut être modifiée, et il y a aussi une détection automatique du débit. Une fois que le modem signale son état prêt sur une ligne séparée, si on envoie AT à la vitesse voulue, il répond généralement vers la troisième tentative.
    • Cet article vise une explication au niveau de la culture générale. Il précise qu’il ne couvre pas toute l’industrie du logiciel, mais seulement les éléments qu’un hacker est susceptible de connaître.
      En ce sens, Git est aujourd’hui de fait le seul système de gestion de versions utilisé pour la collaboration distribuée sur du code source.
    • Cela ressemble vraiment à une réaction excessivement tatillonne. Vu le contexte, il faut comprendre de l’ASCII stocké sous forme d’octets de 8 bits.
  • Pour compléter en vieux de la vieille : sur les modems téléphoniques, 56K était vraiment la limite maximale. À l’intérieur du réseau téléphonique, on transmettait 8 000 échantillons de 8 bits par seconde, soit 64 Kbps, mais il arrivait que le bit de poids faible soit subtilisé pour d’autres signaux, sans que les abonnés téléphoniques l’entendent.
    Plutôt que d’essayer de synchroniser le modem sur ces bits subtilisés, il était plus simple de n’utiliser que les 7 bits fiables, d’où les 56 Kbps. https://en.wikipedia.org/wiki/Robbed-bit_signaling
    Les 9600 bps, qui sont devenus en pratique la vitesse des terminaux, sont une convention plus ancienne que les modems 9600 bps. Vers le milieu ou la fin des années 80, un modem 9600 bps était une sacrée machine ; pour les utilisateurs de terminaux, c’était suffisamment rapide tout en restant une vitesse que les terminaux de l’époque pouvaient gérer. Le terminal dont je me souviens, un Volker-Craig 4404, n’arrivait pas à suivre à 9600 bps et il fallait descendre vers 4800 bps.

    • Si 9600 bps est devenu la vitesse standard des terminaux, c’est parce qu’avec un cadrage sur 10 bits (début/octet/arrêt), on pouvait envoyer un écran complet 80×24 en moins de 2 secondes, sans imposer une charge excessive en interruptions ou en DMA à un hôte de l’ordre de fractions de MIPS lorsqu’il gérait plusieurs utilisateurs.
      Les multiplexeurs de terminaux de mini-ordinateurs regroupaient généralement les transmissions quand c’était possible : ils récupéraient par DMA des lots de caractères en mémoire, les envoyaient, puis n’adressaient au CPU qu’une interruption « terminé ». Même en mode caractère, ils ne prévenaient le CPU que lorsque le tampon de réception était plein ou qu’un caractère de séquence, comme un retour chariot, arrivait.
      C’est pourquoi beaucoup de mainframes et de mini-ordinateurs utilisaient des terminaux en mode bloc. Les applications utilisaient une API de formulaires, tandis que l’édition et la saisie étaient traitées par le terminal. L’ordinateur envoyait tout le formulaire au terminal ; l’utilisateur corrigeait les erreurs et effectuait même des validations comme les champs numériques/alphanumériques, puis, par une action explicite de « fin », transmettait le contenu des champs à l’ordinateur.
      Même pour une utilisation pleinement interactive, ces systèmes préféraient le mode ligne, où le contenu de la ligne courante n’était transmis que lors de certaines actions et où l’édition de ligne se faisait sur le terminal. Le mode « raw » à la UNIX coûtait peut-être un peu plus cher côté terminal, mais son surcoût était trop élevé compte tenu du nombre d’utilisateurs que le système devait prendre en charge.
    • Même avec des modems 56k, beaucoup de gens sont restés coincés sur des connexions 28.8 jusqu’à la généralisation du haut débit. Les lignes téléphoniques rurales géraient rarement le 56k de façon fiable.
    • 4800 bps ? À l’époque, j’étais heureux quand j’obtenais seulement 2400.
      Tristement, moi j’étais sur une carte 1200, et mon oncle disait que son premier modem était un 300.
      Je me souviens aussi du réglage 110 ; ça remonte peut-être jusqu’au pont aérien de Berlin en 1948.
  • La première fois que j’ai manipulé des commandes AT sur un modem 4G, ça m’a vraiment fait rire. Les réflexes étaient toujours là. Le seul regret, c’était l’absence de numérotation et de bruits de modem
    C’est étonnant que l’industrie des modems 3G/4G n’ait pas réussi à créer une meilleure façon de dialoguer avec les appareils. Même l’ISDN avait une véritable API largement implémentée

    • Pas besoin que ce soit de la 3G/4G. Si vous gérez le Wi‑Fi sur un ESP8266, il y a de bonnes chances que vous utilisiez des commandes AT. Bien sûr, c’est presque autre chose que le jeu de commandes Hayes
      En tout cas, ça provoque à parts égales nostalgie, respect et effroi
      https://docs.espressif.com/projects/esp-at/en/latest/esp32/A...
    • Quand j’ai fait des essais de communication par satellite, j’ai été surpris de devoir faire le handshake avec un jeu de commandes AT pour me connecter à Iridium
    • Aujourd’hui, la plupart des modems 3G/4G se connectent en USB et, sur les chipsets Quectel, prennent en charge QMI et/ou MBIM, plus faciles à utiliser depuis le logiciel qu’AT
      Il reste tout de même un port de communication virtuel pour dialoguer en AT, et il peut encore être nécessaire pour certaines tâches de diagnostic
      Établir une connexion de données avec QMI/MBIM est bien plus simple et efficace que bricoler avec AT et PPP
    • Le moment où je ne savais pas s’il fallait rire ou pleurer, c’est quand j’ai envoyé des commandes AT à un modem cellulaire pour lui faire télécharger un fichier binaire en HTTPS. Je comprends l’envie de continuer à utiliser un jeu de commandes familier, mais ils l’ont étiré au point qu’on ne reconnaît presque plus sa forme d’origine
    • À quoi devrait ressembler un meilleur protocole ? Dans beaucoup de domaines, la rétrocompatibilité est un avantage assez appréciable
  • Plutôt que de dire que « les archives historiques USENET se trouvent sur Google Groups », je recommanderais archive.org. Il existe de très bonnes collections de groupes USENET enregistrés sous forme de fichiers mbox, et elles sont téléchargeables
    Il suffit d’installer quelque chose comme mboxgrep, de les importer dans un lecteur de mail, ou simplement de les lire comme des fichiers texte
    Exemple ici
    https://archive.org/details/usenet-comp

  • Au milieu des années 1980, depuis l’ordinateur d’une université londonienne (probablement le CDC Cyber de l’Imperial), j’ai essayé de me connecter à l’ordinateur d’une autre université (probablement Queen Mary) pour utiliser un paquet de calcul formel qui n’existait que sur des mini-ordinateurs Unix
    J’ai passé deux bonnes heures rien qu’à trouver les bons réglages de terminal et valeurs de configuration pour les logiciels intermédiaires, et j’ai fini par me dire qu’il valait mieux coder moi-même autant que possible sur une machine 8 bits à 2 MHz et 64K

    • Exact. À cette époque, au Royaume-Uni, les gens qui faisaient des études d’informatique avaient de bonnes chances d’avoir appris concrètement le langage machine Z80 ou 6502 en hackant Elite, Jet Set Willy ou Manic Miner sur ZX Spectrum/BBC Micro
  • Le logiciel a ce problème de « continuer à empiler par-dessus ». Dans le bâtiment, on peut réutiliser un immeuble existant et ses composants, mettre à niveau quelques éléments intérieurs, ou démolir puis reconstruire
    Mais le logiciel ne fait pas ça. On installe tels quels des tuyaux en plomb, du câblage CAT-3, une isolation en crin de cheval et du simple vitrage dans un gratte-ciel neuf. Soit parce qu’il est plus facile de continuer à bâtir sur des technologies vieilles de plusieurs décennies plutôt que d’inventer de meilleurs équivalents en PVC, CAT-6, isolation projetée et triple vitrage, soit parce qu’on ne veut pas rendre obsolètes les standards encore utilisés par les vieux bâtiments, et que les propriétaires ne veulent pas payer les mises à niveau
    On obtient donc des gratte-ciel qui fonctionnent, mais pour une raison ou une autre il faut former les nouveaux ingénieurs à l’isolation en crin de cheval

    • Les gens essaient constamment de créer des technologies logicielles entièrement nouvelles et meilleures. Mais cela casse la rétrocompatibilité avec l’existant, ce qui rend l’adoption beaucoup plus difficile
      Résultat, la plupart restent des projets de recherche expérimentaux et, avec un peu de chance, seules les meilleures parties finissent par être intégrées progressivement aux projets existants au fil du temps
    • Je trouve intéressant de voir autant de réactions qui semblent considérer qu’il n’y a rien à apprendre des plus de 60 dernières années d’évolution de l’informatique
      Ce qui est oublié, c’est la raison pour laquelle une bonne partie de ces « vieilles technologies médiocres » existe encore. Elles ont résisté à l’épreuve du temps. Si les technologies modernes les conservent, ce n’est pas par pure nostalgie. En général, elles restent utiles parce qu’elles résolvent élégamment un problème, fournissent une abstraction utile au-dessus de systèmes plus modernes, ou parce qu’il est impossible d’éviter la compatibilité avec les systèmes existants
      Bien sûr, ces vieilles technologies ont aussi leurs défauts. Dans quelques décennies, tout votre code en aura aussi
      C’était quoi déjà, le XKCD sur les standards ?
  • Étant né en 1997 et travaillant dans le logiciel, une chose que j’ai apprise, c’est que le génie logiciel ressemble parfois à une compréhension historique des systèmes. J’aime lire ce genre de textes, parce qu’il arrive qu’un concept s’emboîte soudain parfaitement

  • Du point de vue de quelqu’un qui travaille sur des systèmes embarqués, une grande partie de tout cela reste pertinente. RS-232 lui-même, c’est-à-dire la spécification de la couche physique, est moins utilisé, mais le protocole de communication UART sous-jacent se porte toujours très bien
    Par exemple, les cartes de développement Beaglebone peuvent démarrer en téléversant le bootloader via XModem

    • Beaucoup de petits microcontrôleurs se reflashent encore via un port UART et un protocole série. C’est le plus petit dénominateur commun des interfaces matérielles, et la méthode la plus simple qui fonctionne
  • En réalité, il existait une interface TTY plus ancienne que l’ASR-33 utilisait à l’origine, appelée boucle de courant, issue des circuits télégraphiques. Dans les années 1970, des ASR-33 bimodes prenant aussi en charge RS-232 ont commencé à apparaître, et RS-232 a fini par remplacer complètement la boucle de courant
    Le KIM-1(https://en.wikipedia.org/wiki/KIM-1) utilisait ce procédé, et les interfaces à boucle de courant(https://en.wikipedia.org/wiki/Current_loop) restent assez courantes dans le contexte du contrôle industriel. C’est aussi la base du MIDI(https://en.wikipedia.org/wiki/MIDI#Electrical_specifications)

    • La boucle de courant sert là où les câbles peuvent être très longs. Si l’on injecte 20 mA à une extrémité, on sait qu’on pourra les retrouver à l’autre extrémité quelle que soit la longueur, ce qui n’est pas le cas avec une approche fondée sur la tension
    • Les boucles de courant étaient encore couramment utilisées jusque dans les années 80, partout où de longues liaisons câblées étaient nécessaires. De mémoire, le VAX 780 prenait en charge 19200, mais seulement sur une boucle 20 mA
  • FF (Form Feed), c’est-à-dire Ctrl-L, était interprété par de nombreux terminaux à affichage vidéo comme une commande « effacer l’écran », et certains émulateurs de terminal logiciels le font encore parfois
    C’était couramment utilisé sur Usenet pour marquer des spoilers. Le reste du message ne s’affichait pas tant que l’utilisateur n’était pas passé à la suite avec une touche comme PgDn. À l’écran, cela apparaissait sous la forme ^L, ce qui indiquait qu’il y avait quelque chose après, et le reste de l’écran était effacé jusqu’à ce que ^L défile hors de l’écran