>_ DevTrendsit

Lingua

Home

Linguaggi

Sezioni

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicurezza
HTML

Come funziona il backstage di Schema.org e perché gli sviluppatori dovrebbero dargli un'occhiata

6150 stelle

Vi siete mai chiesti perché Google sa che una pagina contiene una vera ricetta di torta di mele e non solo un testo con gli ingredienti? O come i client email estraggono un pulsante "Conferma Prenotazione" direttamente nell'elenco dei messaggi? La risposta è sempre la stessa — Schema.org. Ma dietro i familiari tag ItemProp e JSON-LD si nasconde un enorme repository GitHub che opera secondo regole proprie, a volte molto strane.

Ho deciso di approfondire il codice sorgente di questo progetto. Si scopre che non è solo un insieme di guide di riferimento, ma un vero e proprio ambiente software con la sua logica, i suoi test e persino una filosofia di "disordine utile".

Cosa è realmente questo progetto

Di solito percepiamo Schema.org come documentazione. Ci andate, copiate il tipo di dato di cui avete bisogno, lo incollate nel vostro codice. Ma il repository schemaorg/schemaorg è ciò da cui il sito stesso viene generato. Contiene tutte le definizioni delle entità, centinaia di esempi di markup e software Python che trasforma file sparsi in una struttura che motori di ricerca e browser possono comprendere.

Il progetto è supervisionato dal W3C, con discussioni che coinvolgono persone di Google, Microsoft, Yahoo e Pinterest. È uno di quei rari casi in cui i giganti del settore hanno concordato un linguaggio comune per non dover reinventare la ruota in ogni angolo di internet.

Non è solo testo all'interno

Se date un'occhiata alla cartella data/, potete vedere come lo standard effettivamente "respira". Gli schemi core sono memorizzati in formato Turtle (.ttl). Questo è un sottoinsieme di RDF che assomiglia a un insieme di affermazioni sul mondo.

Interessante notare che gli sviluppatori hanno deliberatamente rifiutato un'architettura "bella". Nel README dicono esplicitamente: non miriamo alla purezza ontologica o all'eleganza. Se la scelta è tra logica rigorosa e facilitare l'implementazione del codice per i webmaster, sceglieranno la semplicità. Ad esempio, potrebbero aggiungere un tipo di dato senza proprietà solo per comodità del markup, anche se per gli appassionati di modellazione formale questo suona come eresia.

Caratteristiche principali del repository

  1. Evoluzione pragmatica. Il team del progetto è scettico sui grandi rifacimenti. Se suggerite di rielaborare la gerarchia degli eventi perché "è più corretto", molto probabilmente vi ascolteranno educatamente e chiuderanno il ticket. Si preoccupano se i cambiamenti sono effettivamente utilizzati dai principali consumatori di dati (motori di ricerca o servizi cloud).
  2. Test locali. Il repository contiene software che vi permette di distribuire una copia di Schema.org sulla vostra macchina. Questo è utile se volete proporre un nuovo tipo di dato e vedere come si inserisce nella struttura generale.
  3. Esempi in file di testo. Una parte enorme del valore del progetto risiede nei file examples.txt. Lì sono raccolte migliaia di casi: da come markupare orari degli autobus a descrizioni di procedure mediche complesse.

Il lato tecnico

Il progetto funziona con Python (richiesta la versione 3.6+). Per eseguire una versione locale del sito, avrete bisogno di Linux o WSL2 se siete su Windows.

Il processo è pressappoco questo:

  • Installate le dipendenze.
  • Eseguite gli script di build.
  • Ottentete un server locale sulla porta 8080.

Tutto il software è personalizzato per creare una copia statica del sito. L'infrastruttura sembra un po' conservativa (usa Google App Engine, script Python specifici), ma funziona da anni e digerisce un volume colossale di modifiche dalla comunità.

Perché uno sviluppatore dovrebbe immergersi in questo

Potrebbe sembrare inutile clonare il repository quando c'è un sito web comodo. Ci sono un paio di scenari in cui questo aiuta davvero.

Prima di tutto, quando la documentazione standard sembra incompleta. Nel codice sorgente nella cartella data/, spesso potete trovare commenti e bozze grezze (nella sezione Pending) che non sono ancora state pubblicate sulla pagina principale, ma sono già implementate dai principali attori.

Secondo, se state costruendo il vostro strumento per il parsing o la validazione dei dati. Usare schema.ttl come fonte primaria è molto più affidabile che cercare di fare scraping delle pagine del sito web. Sono dati puliti, pronti per l'elaborazione automatica.

Terzo, è una grande scuola su come gestire un enorme progetto open-source dove gli interessi delle aziende e degli sviluppatori regolari si scontrano. Date un'occhiata a Issue #1 — c'è stato anni di pianificazione delle release lì, ed è un esempio di come mantenere il caos sotto controllo.

Chi dovrebbe iscriversi agli aggiornamenti

Se lavorate nel SEO, nello sviluppo di motori di ricerca, o semplicemente volete che i vostri dati sul web siano strutturati, questo repository dovrebbe essere nei vostri segnalibri.

Non aspettatevi framework eleganti o codice perfetto qui. Questo progetto riguarda contenuti, accordi e pragmatismo. A volte è utile vedere che anche standard di livello mondiale non sono costruiti su formule perfette, ma su compromessi e l'esperienza reale di milioni di persone.

Per iniziare, date solo un'occhiata alla cartella data/examples.txt. Fidatevi, c'è molto materiale interessante lì su come un internet strutturato dovrebbe effettivamente apparire.

Progetti correlati