Blog ·
Quando il titolo non può essere l’intestazione
La regola per cui il titolo di un articolo è la sua intestazione si scontra con il limite di sessanta caratteri. Cinque lingue hanno preso una forma già in uso.
Di Provibr
Uno dei nostri articoli porta nel titolo una parola che conta: vulnerabilità. È un pezzo su uno scanner che invia zero byte, e senza quella parola il titolo descrive una cosa diversa.
In cinque delle nove lingue la parola era sparita. Non dal corpo del testo: dal titolo, e quindi dalla scheda del browser, dal risultato di ricerca e dall’anteprima social. Il compito era rimetterla in tutte e nove.
Si è rivelato impossibile nella forma in cui era stato scritto, e la parte interessante è il perché.
Due regole che non possono valere entrambe
L’istruzione era: il titolo, il titolo social e l’intestazione sono una sola stringa. Dire la stessa cosa in tutti e tre i posti. È una buona regola ed è la regola che abbiamo annotato dopo che un lettore ha trovato un collegamento che prometteva una cosa e una pagina che ne affermava un’altra.
L’altra regola è una fascia di lunghezza. Il titolo di pagina reso deve stare fra venti e sessanta caratteri, suffisso compreso, perché è quanto ci sta prima che un risultato di ricerca lo tronchi. Quella fascia non è una preferenza; l’intero corpus di 850 file generati stava al suo interno, senza nulla fuori.
Si rimetta la parola mancante e l’intestazione completa misura 68 caratteri in olandese e in italiano, 70 in portoghese, 71 in spagnolo e in francese e 75 in rumeno. L’inglese e il tedesco atterrano esattamente su 60, ed è una coincidenza che vale la pena notare: le due lingue in cui l’intestazione onesta per caso ci sta sono anche le due in cui la regola sembra funzionare.
Una delle due regole doveva quindi cedere, e nessuna delle due è facoltativa. L’intestazione deve nominare il soggetto e il titolo deve starci.
La forma era già in casa
La soluzione non è stata inventata per l’occasione. Degli 850 articoli generati, 197 avevano già un titolo diverso dall’intestazione. È una cosa normale che un articolo faccia: l’intestazione è una frase e il titolo è un’etichetta.
Il francese lo stava già facendo proprio su questo articolo. Il suo titolo si legge come un’etichetta con i due punti, la sua intestazione come una domanda a cui il corpo del testo risponde. Nessuno l’aveva registrato come una decisione; era semplicemente quello che qualcuno aveva scritto quando la frase non ci stava.
La soluzione è dunque che cinque titoli adottano la forma che quasi un quarto del corpus e una delle nove lingue già usavano, e le intestazioni portano la frase intera. La parola è presente nel titolo, nel titolo social e nell’intestazione, e non deve essere la stessa stringa in tutti e tre per essere la stessa affermazione.
La regola sopravvive, ma va enunciata di nuovo: quello che deve valere è che un lettore che arriva da un collegamento riconosca la pagina. L’uguaglianza byte per byte era un modo comodo di imporlo nelle lingue in cui per caso era possibile.
Perché la protezione esistente non poteva trovarlo
Avevamo appena costruito una protezione proprio per questa famiglia di problema: un testo di collegamento che nomina un articolo in modo diverso dal titolo dell’articolo stesso. Qui era verde, ed era verde per una ragione strutturale e non per fortuna.
Questo è un difetto di titolo. I titoli avevano perso una parola, e i testi dei collegamenti che vi puntavano erano stati accorciati per corrispondere, durante il turno che ha costruito la protezione. I due lati erano d’accordo. Un confronto fra due cose che sono state cambiate insieme non può vedere che sono sbagliate entrambe.
A trovarlo è stato il controllo di versione. Il commit che ha riparato i testi dei collegamenti ne mostrava tre accorciati, in olandese, italiano e portoghese. Il rapporto ne nominava soltanto due. Leggere un diff invece di un riepilogo è ciò che ha trasformato un compito da due voci nella forma vera del problema.
Una protezione che ha pulito dietro di noi
Alla fine di tutto questo c’è una piccola sequenza che vale la pena annotare, perché è la protezione che si comporta meglio delle persone che la usano.
Dopo che i titoli sono stati cambiati, la protezione sui nomi dei collegamenti è scattata una volta, su un collegamento olandese verso un altro articolo. Sembrava un danno collaterale e per esso è stata registrata un’eccezione, con la sua ragione.
Poi i titoli sono stati corretti di nuovo per portarli dentro la fascia di lunghezza, e il rilevamento è sparito. L’eccezione era ormai morta: una riga in un elenco delle eccezioni che non corrisponde a nulla.
In quella protezione c’è un test il cui unico compito è fallire quando un’eccezione non viene mai colpita. È fallito, e la riga è uscita. Il diff finale contro la cartella della protezione è vuoto, che è l’affermazione più forte a disposizione: la riparazione non ha richiesto alcuna modifica alle regole.
Un elenco delle eccezioni che non fa che crescere è un documento di tutto ciò a cui qualcuno ha mai rinunciato. Un elenco delle eccezioni che toglie le proprie voci morte è un elenco che si può ancora leggere fra un anno.
Piccole cose imparate di passaggio
I due punti in un titolo sono una forma, non una decisione che sia stata misurata. Si leggono come un’etichetta invece che come una frase, accorciano bene, e il francese li aveva già scelti. È annotato come una scelta fatta sulla forma, perché far finta che venga da una misurazione sarebbe disonesto su quali parti di tutto questo siano state misurate e quali fossero gusto.
Una fascia di lunghezza è un vincolo per lingua anche quando sembra globale. La stessa frase è più lunga di otto caratteri in una lingua e di quindici in un’altra, e ogni regola formulata come «la stessa stringa dappertutto» si romperà per prima nella lingua più prolissa. Qui quella lingua è di solito il rumeno.
E un compito scritto come un’istruzione di due righe può contenere un conflitto che compare solo quando si prova a soddisfare entrambe le metà. La risposta giusta non è soddisfare la metà più facile da controllare.
Che cosa annoteremmo
- Quando due regole si scontrano, nessuna delle due è sbagliata. Stabilisca quale sia la garanzia e quale ne fosse l’imposizione comoda.
- L’uguaglianza byte per byte è un surrogato della riconoscibilità. Enunci la cosa che vuole davvero.
- Cerchi la forma nel corpus prima di inventarne una. La nostra stava già in 197 file su 850.
- Una lingua che lo fa già è una prova, anche quando nessuno l’ha annotato come una decisione.
- Una protezione non può vedere un difetto in cui entrambi i lati sono stati cambiati insieme. L’accordo non è correttezza.
- Legga il commit, non il riepilogo. Il diff aveva tre voci dove il rapporto ne aveva due.
- Un test che fallisce su una voce morta dell’elenco delle eccezioni pulisce dietro di lei. Il nostro ha tolto un’eccezione che avevamo appena aggiunto.
- Un diff vuoto contro le sue regole è il risultato più forte di una riparazione. Significa che le regole erano giuste.
- I limiti di lunghezza sono per lingua. La stessa frase da qualche parte è più lunga di quindici caratteri.
- Dica quali decisioni siano state misurate e quali fossero di forma. Mescolarle costa alle prime la loro credibilità.
Per chiarezza su che cosa sia: la build dei contenuti ha prodotto 850 articoli senza avvisi dove prima ne produceva cinque, il controllo dei contenuti è stato 851 file generati su 851 identici byte per byte, la suite web 4594 verdi, il controllo dei tipi pulito, il linter senza errori, la scansione dei byte sui 25 file toccati invariata su ogni conteggio, il diff di esattamente 174 righe messe e 174 tolte, la scansione dell’impaginazione 27 su 27 a 390 pixel sull’articolo nelle nove lingue, l’indice del blog 54 su 54 e sei articoli ucraini 18 su 18 contro una build di produzione. Non dimostrato: c’è ancora un lettore per lingua, e la scelta della forma con i due punti è una decisione sulla forma e non una misurazione.
Dal lavoro di piattaforma su Provibr. Da dove viene la regola su titoli e collegamenti si trova in tre difetti che nessuno script poteva vedere, e come la protezione che la impone distingua un accorciamento da una sostituzione si trova in due nomi per lo stesso articolo.