Ciò che desideravamo
Pubblicato: 2022-03-10Penso che siamo diretti a guai, anche se non posso dirlo con certezza. Guai — guai che conosco . La rampa di accesso, però; Ho sentito parlare solo di questo. Lo faccio solo da dieci anni. Mi sono perso tutto il vantaggio l'ultima volta. Quello che posso dire con certezza - quello che so per esperienza - è che non ho mai avuto un desiderio realizzato con rabbia senza rimpianto.
Dieci anni (non mi dispiace dirlo) sono un periodo piuttosto lungo. Quando mi sono fatto strada per la prima volta in uno stage di web design, il buon vecchio Internet Explorer era già uno zimbello.
“Se noti che una parte del tuo contenuto appare e scompare e le sezioni della pagina vengono disegnate solo a metà, queste sono buone indicazioni che un elemento richiede un layout. [...] Una correzionehasLayout
non implica altro che la dichiarazione di una proprietà CSS che fa sì che un elemento ottenga un layout, quando normalmente non avrebbe un layout per impostazione predefinita.
— Internet Explorer ha la proprietà Layout
Odiavo IE. Mi sento come se potessi occuparmene ora. Ho cercato di non farlo; L'ho fatto davvero, sinceramente. Direi alla gente che è stato divertente supportare, se puoi crederci.
Poiché tutti gli altri browser sono diventati sempre più facili da gestire, ho cercato di convincermi che almeno c'era ancora una sfida per il vecchio IE eccentrico. Questo è diventato anche un punto di orgoglio: ero diventato così bravo a risolvere oscuri problemi di IE che avevo imparato a evitarli nel corso del mio sviluppo quotidiano, senza lasciare nulla (beh, meno) a temere che arrivasse il grande "open in IE e vedi cosa si è rotto”.
È divertente, in un certo senso. Divertente . Questa era la bugia che mi sono detto.
/* Fixes #2588: When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select (including “inherit”) without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */
— fonte jQuery Mobile
L'ho odiato. Ho completamente odiato IE, in ogni sua incarnazione. L'ho odiato tanto quanto tutti gli altri.
“Internet Explorer 6 ha un bug sconcertante che coinvolge più elementi mobili; i caratteri di testo dell'ultimo degli elementi float sono talvolta duplicati sotto l'ultimo float. ... La causa diretta non è altro che normali commenti HTML, come<!-- end left column -->
, racchiusi tra float che vengono in sequenza."
— Bug di caratteri duplicati di Explorer 6
Una perdita del mio maledetto tempo è quello che è stato. Tutte quelle ore che ho passato curvo su una macchina virtuale guasta: ricaricare, attendere, correggere un bug senza senso, ricaricare, arrestare in modo anomalo , aprire di nuovo IE, attendere, ricontrollare che la memorizzazione nella cache non fosse un fattore, ricaricare, attendere, e ripeti. Avrei potuto fare molto di più con il mio tempo, avrei potuto imparare molto di più.
Ero certo che non avrebbe solo trattenuto il mio lavoro, e non solo il web, ma mi avrebbe trattenuto, come sviluppatore. Su quel secondo punto, immagino di non aver sbagliato del tutto: tutta l'oscura conoscenza dei bug del browser IE 6-7 che ho accumulato è del tutto inutile ora. Tutto quello che ho da mostrare è un sussulto involontario alla parola "filtro", un'inscrutabile preferenza per il padding
sul margin
e una paura radicata ma in gran parte infondata di z-index
.
"... spazi bianchi aggiuntivi causano la raccolta degli stili sbagliati se il nome della classe effettivo è una sottostringa (o superstringa) di un altro nome di classe."
— Bug di analisi degli spazi bianchi di IE5/Mac
Avrei voluto che andasse via. Disinstallata da un virus intelligente e diffuso, bandito dalla legge, Microsoft ha finalmente deciso di ridurre le perdite del loro scadente motore di rendering e di passare al motore di rendering di Firefox, Gecko - qualunque cosa - fallo sparire . Ma no. Il web continuava ad evolversi e noi sviluppatori continuavamo a battere, barche contro corrente, trasportati incessantemente nel passato.
Chrome è arrivato, Firefox ha continuato a migliorare, nuove funzionalità hanno continuato a essere implementate, le eccitanti e infinite possibilità presentate dall'avvento del responsive web design si sono diffuse davanti a noi e inoltre (tra parentesi) ricorda che avrai solo un paio di giorni per far funzionare tutto più o meno nel vecchio IE, quindi non lasciarti trasportare.
"SE stai usando IE8 E stai usando l'approccio di numerazione degli elenchi ordinato CSS descritto sopra, E l'HTML che ha le classi che usano gli attributi CSScounter-reset
ecounter-increment
è NASCOSTO quando la pagina viene caricata, ALLORA ogni volta che è nascosto Viene visualizzato HTML, TUTTI i numeri automatici saranno ZERO, MA SOLO SE IL CSS:hover
PSEUDO-CLASS È UTILIZZATO SU QUELLA PAGINA!
— Il bug "hover" di IE8: il bug di IE più impressionante di sempre?
È difficile immaginare di vivere quel tipo di frustrazione al giorno d'oggi, almeno per noi relativamente anziani. Per non dire che al giorno d'oggi non c'è un'incredibile quantità di lavoro coinvolto nell'ottimizzazione delle cose cross-browser - so fin troppo bene che c'è. Ma è difficile non sentire la fitta occasionale di "ai miei tempi, tutto ciò che avevamo erano float, e lascia che ti parli del bug del doppio margine di IE ", quando senti di una piccola differenza nel modo in cui CSS Grid funziona da un browser ad un altro.
Mi sbagliavo; Voglio essere chiaro su questo punto. Non è sbagliato essere frustrato. Non credo che nessuno dovrebbe essere incolpato per essere frustrato da quei vecchi bug del browser, così come non credo che nessuno dovrebbe essere incolpato per la sua frustrazione con qualsiasi aspetto dello sviluppo web ora . No, mi sbagliavo per la conclusione a cui mi ha portato la rabbia: il desiderio di vedere il Tridente raso al suolo e la terra dove un tempo sorgeva salata.
Sospetto che da quella terra salata nasca solo una cosa drammaticamente ironica: quelle stesse frustrazioni, nate di nuovo, per una nuova generazione di sviluppatori web. Quando ho iniziato la mia carriera, pochi anni dopo la guerra dei browser, quei semi avevano già messo radici. Perché, per un periodo, prima del mio, noi sviluppatori web abbiamo maledetto Netscape allo stesso modo. Il browser più debole, più difettoso, indiscutibilmente peggiore . Ma Internet Explorer: gli sviluppatori adoravano quel browser. E desideravano che quegli altri browser - i browser difettosi - andassero via : disinstallato da un virus intelligente e diffuso, bandito dalla legge, Netscape decide finalmente di ridurre le perdite del loro motore di rendering scadente e passare al motore di rendering di IE, Trident - qualunque cosa - solo fallo andare via . Quegli imperscrutabili bug di Internet Explorer non sono accaduti per caso o negligenza. Sono nate perché Internet Explorer aveva vinto e ci è piaciuto molto per aver vinto.
Vedi, la nostra frustrazione e la nostra rabbia ci hanno mentito, come fanno di solito. Ci hanno detto che supportare quegli altri browser peggiori non ha solo trattenuto il nostro lavoro e non solo il Web, ma ci ha trattenuto, come sviluppatori. Una perdita del nostro maledetto tempo è quello che è stato. Quindi, ci siamo detti che non era solo per il nostro bene, ma per il bene dell'intero web .
Abbiamo pesato IE solo un po' più pesantemente. Abbiamo dato solo un po' più di voce in capitolo nelle nostre decisioni. E così, con così tante chips, Microsoft ha giocato le sue carte di conseguenza: chi potrebbe biasimarli? Ognuno ha creato prima i siti Web per loro e gli altri in secondo luogo. La loro parola non era legge , ma era certamente più che suggestione . Certo, hanno deviato dagli standard web qua e là (solo un po'), ma dopo tutto, qualcosa implementato da The Biggest Browser non era comunque una sorta di standard de facto ? Inoltre, supportare il browser migliore, più veloce e più semplice stava rendendo il web stesso un servizio! Insieme a Microsoft, stavamo portando avanti il Web! Tutti vincono.
Il motore di rendering che alimenta il browser Edge di Microsoft oggi, EdgeHTML, è un fork del vecchio e nodoso Trident. È sicuramente un fork di Trident ridotto e notevolmente migliorato, ma non è, diciamo, universalmente giudicato in base ai propri meriti. Il team di EdgeHTML ha sempre lavorato con un paio di svantaggi: il primo era tecnico, in quanto ci sono voluti un'enorme quantità di tempo e sforzi per mettersi al passo con artisti del calibro di Safari, Firefox e Chrome. Il secondo è stato emotivo. Eravamo noi - io e te - stanchi degli anni di Internet Explorer, a fissare una allegra "e" minuscola blu con freddo disprezzo.
Poche settimane fa, il team di Edge ha annunciato che presto avrebbe abbandonato EdgeHTML a favore di Blink, il motore di rendering che alimenta Chrome. Con questo cambiamento, le ultime braci rimaste del Tridente verranno spente per sempre. Il desiderio che avevo condiviso con così tanti sarà finalmente esaudito. Ironia della sorte, a quanto pare, EdgeHTML stava diventando un motore di rendering piuttosto solido.
Blink è un progetto open source guidato e governato da Google. Alimenta sia Chrome che Opera, l'ultimo dei quali ha abbandonato in modo simile il loro motore di rendering autoprodotto alcuni anni fa.
Con un margine schiacciante, Blink è (e sarà sempre più) il modo in cui il web viene vissuto in tutto il mondo. Blink è veloce, stabile, ricco di funzionalità moderne e, rispetto allo sviluppo per EdgeHTML in continua evoluzione, indolore .
Potrebbe essere successo troppo tardi per salvarci da quegli antichi bug di IE, ma il nostro lavoro sarà più semplice ora che c'è un motore di rendering in meno da supportare. Tu ed io perderemo un po' più del nostro fardello collettivo del "ma funziona su più browser". I nostri progetti andranno più agevolmente e il web perderà solo un po' di più di ciò che un tempo lo tratteneva.
Come amministratori del motore che alimenta così tanto il web, beh, la parola di Google non sarà legge , ma sicuramente più che suggerimento . E forse nel corso dei prossimi anni, si discosteranno dagli standard web qua e là (intenzionalmente o accidentalmente) nel più piccolo dei modi. Ma dopo tutto, qualcosa implementato da The Biggest Browser non è di per sé una sorta di standard de facto? Inoltre, come potresti discutere? Dopotutto, favorire il browser migliore, più veloce e più potente significa rendere il Web stesso un servizio. Insieme a Google, porteremo avanti il Web. Tutti vinceranno.
Cioè, fintanto che piccole deviazioni dagli standard e piccoli bug fastidiosi non crescono nel tempo, grazie alle forze gemelle dell'entropia e dell'autocompiacimento. A meno che le decisioni che abbiamo preso per il bene del web (mano nella mano con una società pubblicitaria notoriamente ostile alla privacy) non inizino a sembrare un po' più oscure e un nuovo spauracchio non inizi a prendere forma nelle nostre menti, a meno che non troviamo che le nostre vecchie paure e frustrazioni sono aumentate di nuovo (come una fenice che rende un paio di centinaia di pixel di distanza da dove dovrebbe e sfarfalla in modo strano quando scorri).
Non ci vuole molta immaginazione per vedere motori di rendering più nuovi ed eccitanti apparire nei prossimi anni. Ci vuole altrettanto poca immaginazione per vederli fallire a causa della mancanza di supporto, poiché preferiamo "il browser che tutti usano" - prima per scelta e poi forse a malincuore al servizio della "linea di fondo".
Ancora una volta, però, non lo so. Non l'ho mai visto accadere con un motore di rendering. Ho appena sentito tutta la storia e so solo di prima mano come va a finire. Conosco il finale dal dolore di vecchie cicatrici psichiche; da un sussulto involontario ad alcuni frammenti di codice e dalla memoria muscolare che mi costringe a evitarne altri. Lo so dalle battute nei discorsi delle conferenze che mi sono sempre sembrate un po' stanche, ma che comunque risuonavano lo stesso in un modo che non mi permettevo di ammettere e parlavano ancora a un desiderio segreto che avevo nel profondo del mio cuore. Un amaro, odioso desiderio.
Ma ehi, ascolta. Non più. Ora, voglio dire, non lo farei mai. Adoro davvero un buon bug del motore di rendering, ora. Io faccio.
"Le trasformazioni CSS 3D conperspective()
sono renderizzate al rovescio."
— bugs.chromium.org
Voglio dire, in realtà è una specie di bug divertente, giusto? Tipo, divertente in un certo senso . Sai?
È divertente.
Sarà divertente .