-- Leo's gemini proxy

-- Connecting to it.omarpolo.com:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini;lang=it

Il valore di una specifica


Dopo un messaggio sul canale IRC #gemini-italia (su freenode) dell’altro giorno, ho iniziato a chiedermi quanto sia effettivamente importante una specifica per il protocollo.


Il messaggio in sè non credo sia particolarmente importante, e vorrei sottolineare fin dall’inizio come non intenda negare l’importanza di un documento formale che descriva con precisione il funzionamento di un protocollo internet, cosa assolutamente necessaria, ma ragionare sul valore di avere qualcosa di più dell’attuale specifica informale di Solderpunk (con tutte le ambiguità ed errori di battitura annessi e connessi.)


L’idea di ridimensionare l’importanza di una specifica mi è tornata in mente giochicchiando con FastCGI, ma mi si è consolidata pensando ad HTTP. Nel primo caso, l’unica specifica disponibile è un backup sull’internet archive (o su un terzo dominio di github.io) in quanto OpenMarket — l’azienda promotrice del protocollo — ha chiuso i battenti da un po’. La specifica di FastCGI è sufficientemente chiara per essere implementata, ma 1) non ha un RFC e 2) credo ci siano alcuni aspetti non chiariti[0]. Per quanto riguarda HTTP invece ho sempre trovato iconico la mancanza di supporto per alcuni verbi HTTP[1] nei browser, al punto che diversi framework web si sono inventati svariati trucchi per simulare gli altri verbi sfruttando POST.


Infine, per quanto sia importante standardizzare, alla fin fine un protocollo è necessariamente qualcosa di “vivo”, perché il suo fine è quello di permettere la comunicazione tra macchine (e gli utenti che le usano). Se i vari implementatori dei client e server si mettono d’accordo[2] sul rispettare solo parte di una specifica, o su come comportarsi in casi non esplicitamente definiti da essa, quello diventa è il *vero* protocollo.


Probabilmente ho solo riscoperto la differenza tra il de iure e il de facto, ma lo trovo incredibilmente interessante.


Al momento attuale Gemini è incredibilmente utile ad un sacco di persone, è indubbiamente *vivo*. Non ci sono, o almeno non ho né trovato né sentito parlare di problemi di interoperabilità tra server e client, ciò suggerisce che attualmente il protocollo è sufficientemente chiaro per permettere a una buona serie di persone di implementare software funzionante e solido.


Come al solito non ho una morale, solo la speranza che la specifica venga finalizzata, in un modo o nell’altro, in tempi decenti, dato che sono state mosse delle persone e tradotte delle pagine.



--


[0]: un po’ fuori argomento, ma cosa dovrebbe succedere se tra i parametri inviati all’applicazione ci sono dei duplicati? Questa è la prima cosa che mi viene in mente, e da una lettura veloce non mi pare ci siano risposte, probabilmente ci sono altre situazioni simili.


[1]: su HTTP ogni richiesta è definita da un certo metodo, a volte chiamato anche verbo. GET è quello più comune, seguito da POST. PUT, DELETE, OPTION e TRACE non sembrano essere implementati dai browser web.


[2]: si potrebbe ribattere, e credo sia un’osservazione corretta, che la specifica di un protocollo sia una sorta di accordo tra le parti e che quindi un’ulteriore formulazione possa essere vista come una futura versione.


$BlogIt: il-valore-di-una-specifica.gmi,v 1.1 2021/10/20 07:41:39 op Exp $

-- Response ended

-- Page fetched on Fri Mar 29 01:17:39 2024