💾 Archived View for it.gemini-site.omarpolo.com › docs › it › companion › subscription.gmi captured on 2021-12-03 at 14:04:38. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
Questo documento descrive una convenzione attraverso la quale i client possono "abbonarsi" ad una pagina Gemini che viene aggiornata periodicamente (ad esempio l'indice di un gemlog), anche in assenza di una tecnologia di aggregazione dei contenuti vera e propria come Atom o RSS. Tale specifica aspira ad essere un'alternativa semplice ad agile alle tecnologie summenzionate e che -insieme- possa abbassare la barriera di ingresso per pubblicare contenuti periodici nello Geminispace. Ma anche che permetta di fruire dei contenuti senza farraginose procedure manuali di raccolta ed organizzazione delle informazioni (si pensi ai segnalibri o simili). In particolare, un obbiettivo esplicito delle convenzioni esplicitate da questo documento è che una pagina di indice possa funzionare da "aggancio" per abbonarsi senza che tale pagina abbia nulla di speciale rispetto agli altri documenti gemini che l'aotore o l'autrice produce abitualmente; che sia -cioè- semplice da scrivere come il resto dei documenti in formato gemtext, che possa essere leggibile e aggiornabile manualmente senza troppi sforzi. Ovviamente tale convenzione sarebbe meno efficace di strumenti come Atom e non funzionerebbe bene rispetto ad altri meccanismi più complessi di aggregazione in ogni scenario ipotizzabile. Tuttavia, ciò premesso, è verosimile che il meccanismo qui proposto possa funzionare adeguatamente in un ventaglio di scenari ragionevolmente amplio. Ad ogni modo nulla in questa convenzione impedisce agli autori/ici di di pubblicare i loro sistemi per l'abbonamento a contenuti in formati diversi da quello che questo documento propone. Infatti, quello che qui si propone, può solo ampliare le possibilità di pubblicazione di contenuti aggregabili (feed).
Il resto di questo documento descrive la modalità di interpretazione un singolo documento "text/gemini" come se si trattasse di un contenitore di contenuti aggregabili (feed), completo ed utilizzabile dai client. La scelta di tale modalità di presentazione è stata scelta sulla base della convinzione che sia reso possibile, per i client, supportare l'abbonamento a feed, sia in questo formato più semplice che attraverso feed Atom, con l'utilizzo di un codice più snello, una UI consistente e che sia possibile dimostrare come sia semplice la generazione automatizzata di feed ATOM. I client più semplici che supportano solo la presente convenzione possono possono ignorare interamente il formato ATOM, se lo desiderano.
Nota del traduttore: questi paragrafi si comprendono meglio osservando l'esempio in formato Atom presente più in basso nel documento
L'URL dal quale il blocco di contenuti aggregabili viene attinto svolge la funzione sia di elemento identificativo univoco ("id") che di l'elemento "link".
Il contenuto della prima linea di intestazione nel documento che inizia con un singolo carattere '#" svolge la funzione di titolo ("title", obbligatorio). Per questa ragione gli autori sono incoraggiati/e a usare titoli che forniscano un loro proprio contesto, per esempio: "Il Gemlog di Cage" piuttosto che "Il Mio Gemlog" o "Indice del Gemlog".
Se una linea di intestazione, che inizia con la stringa "##", si incontra nel documento dopo la prima linea che inizia con '#' ma prima di ogni altra linea non di intestazione non vuota, allora il contenuto di tale linea può essere interpretato come il sottotitolo ("subtitle") del feed.
Un elemento dell'intero feed corrispondente al valore "aggiornato il" ("updated") equivale al più recente campo "updated" tra tutti i componenti (di seguito: "entry") associati al feed. Se nessun entry può essere estratto dal documento allora il feed si considera vuoto (ciò è permesso dallo standard Atom), e l'elemento "updated" del feed assumerà il valore pari alla data nel quale il documento è stato prelevato.
I componenti degli elementi di un feed vengono fatti derivare da un sottoinsieme delle sue linee corrispondenti a link (o linee link, le linee che iniziano con "=>"), se esistono.
Ogni link dove l'URL è seguito da una etichetta i cui primi 10 caratteri corrispondono a una data nel formato ISO 8601 (i.e. "YYY-MM-DD") rappresenta un singolo entry. Le linee corrispondenti a link che non rispettano tale formato possono essere ignorate.
Il campo "id" di un entry e il campo obbligatorio "link" con rel=alternate (gli elementi link sono opzionali nelle entry del formato Atom, in generale, ma questa convenzione non assegna elementi di tipo "contenuto" ("content") alle entry e, quindi, un link rel=alternate è obbligatorio) sono entrambi uguali all'URL della linea link.
L'elemento obbligatorio "aggiornato il" ("updated") di un entry corrisponde a mezzogiorno UTC del giorno indicato dalla data estratta dai primi 10 caratteri dell'etichetta della linea link.
L'elemento obbligatorio "titolo" ("title") si deriva da ciò che rimane della linea link corrispondente dopo aver scartato il primo campo, della linea stessa, separato dagli altri da caratteri spazio (il primo campo, come detto, corrisponde alla data). I client possono semplicemente prendere il resto della linea, ma alcuni controlli più raffinati potrebbero essere necessari perché alcuni/e utenti potrebbero inserire ulteriori separatori tra i campi, per esempio: "1965-03-23 - Lancio della capula Gemini 3 avvenuto con successo!".
Si consideri il documento, servito da: gemini://gemini.jrandom.net/gemlog/:
# J. Random Geminaut's gemlog Welcome to my Gemlog, where you can read every Friday about my adventures in urban gardening and abstract algebra! ## My posts => bokashi.gmi 2020-11-20 - Early Bokashi composting experiments => finite-simple-groups.gmi 2020-11-13 - Trying to get to grips with finite simple groups... => balcony.gmi 2020-11-06 - I started a balcony garden! ## Other gemlogs I enjoy => gemini://example.com/foo/ Abelard Lindsay's gemlog => gemini://example.net/bar/ Vladimir Harkonnen's gemlog => gemini://example.org/baz/ Case Pollard's gemlog => ../ Back to my homepage Thanks for stopping by!
Questo potrebbe essere interpretato come equivalente a:
<?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> <title>J. Random Geminaut's gemlog</title> <link href="gemini://gemini.jrandom.net/gemlog/"/> <updated>2020-11-20T12:00:00Z</updated> <id>gemini://gemini.jrandom.net/gemlog/</id> <entry> <title>Early Bokashi composting experiments</title> <link rel="alternate" href="gemini://gemini.jrandom.net/gemlog/bokashmi.gmi"/> <id>gemini://gemini.jrandom.net/gemlog/bokashmi.gmi</id> <updated>2020-11-20T12:00:00Z</updated> </entry> <entry> <title>Trying to get to grips with finite simple groups...</title> <link rel="alternate" href="gemini://gemini.jrandom.net/gemlog/finite-simple-groups.gmi"/> <id>gemini://gemini.jrandom.net/gemlog/finite-simple-groups.gmi</id> <updated>2020-11-13T12:00:00Z</updated> </entry> <entry> <title>I started a balcony garden!</title> <link rel="alternate" href="gemini://gemini.jrandom.net/gemlog/balcony.gmi"/> <id>gemini://gemini.jrandom.net/gemlog/balcony.gmi</id> <updated>2020-11-06T12:00:00Z</updated> </entry> </feed>
La limitazione più importante di questa convenzione è che non indica né un orario nel quale i post sono stati scritti né un fuso orario attribuibile all'orario stesso. Questo fatto rende tale metodo di abbonamento una scelta inadatta per applicazioni dove aggiornamenti sono previsti con frequenza maggiore che giornaliera e dove l'ordine relativo di aggiornamento (all'interno di un feed o tra feed diversi) è importante, a titolo di esempio: ultim'ora, aggiornamenti meteorologici, informazioni sulla viabilità ecc. Per tali applicazioni è consigliato l'utilizzo di altri metodi per fornire abbonamenti a contenuti, come Atom o RSS.
Tale limitazione non dovrebbe avere implicazioni serie per un ampio spettro di attività nello Geminispace che operano a "misura di essere umano". Ad esempio questa convenzione è utilizzabile proficuamente per un lettore o lettrice singolo, che usi il proprio client per abbonarsi a 10 o 20 feed scelti manualmente, aggiornati con frequenza di pochi giorni e con contenuti per cui il fattore tempo non sia critico; ad esempio contenuti riguardanti attività giornaliere, passatempi, passioni, opinioni sullo stato del mondo, ricette, foto e così via. Risulta di poca importanza leggere contenuti relativi come quelli che Alice ha scritto di Mercoledì mattina prima di quelli che Bob scritti da Bob il Mercoledì pomeriggio. Così come scarsa importanza riveste quando ogni persona abbia scritto il proprio post. Se l'orario avesse importanza l'autore lo menzionerebbe nel testo del contenuto.