Sotto il patrocinio di Google, HTML.it è lieta di annunciare un progetto che (speriamo) si sviluppi almeno inizialmente in seno alla nostra sezione.

Sono tempi in cui si usano strumenti tecnologici per fini completamente diversi rispetto a quelli per cui nascevano: HTTP nasce come protocollo stateless; HTML serviva per semplici ipertesti; i template C++ nascevano per "genericizzare" i tipi di una funzione; PHP nasceva per piccole pagine personali; i processori x86 nascevano come microcontrollori; X11 era progettato per uso su rete; le crocs come strumento di tortura.

In tutti questi casi, abbiamo abusato dello strumento tecnologico e abbiamo vinto. In effetti, quasi ogni caso in cui si è perso tempo a cercare di fare le cose per bene e studiare software e protocolli adeguati per un certo fine si è risolto in un fallimento: chi usa davvero i sistemi operativi microkernel? NNTP? l'architettura IA64? chi conta davvero i cicli macchina degli algoritmi come Knuth? Il grosso delle soluzioni che usiamo ogni giorno sono degli hack, dei "kludge" di qualche genere, e vincono alla grande su soluzioni ben pensate.

Per questo motivo, Google ha deciso di sponsorizzarci per provare vedere se è possibile ottenere il "successo della soluzione inferiore" per così dire "in laboratorio"; è stato quindi scelto come obiettivo realizzare il browser per il progetto Frogh, un sistema operativo scritto completamente in HTML - dal bootloader (<iframe src="/boot/frogh">) alla interrupt table (<table id="interrupt"> ... </table>) ai driver grafici (<canvas id="DVI-1"> ... </canvas>) al software applicativo.

In quest'ottica di ribaltamento della usuale "gerarchia di linguaggi", si è deciso che il browser, scritto ovviamente in HTML, si occuperà di interpretare della pagine scritte in assembly MIX, trasportate su protocollo NTP (possibilmente con IPoAC, secondo la RFC 1149).

L'assembly MIX è stato scelto per la grande diffusione nella nostra target audience (che sicuramente ha perso qualche mese della sua vita sul Knuth), non è legato ad un'architettura particolare (in modo da evitare liti tra fazioni) ed è egualmente antipatico a tutti. Inoltre, esistono già in rete molti interpreti di questo linguaggio da cui prendere spunto, spesso con licenze FOSS.

Il passaggio da linguaggio dichiarativo (HTML) a linguaggio imperativo è una scommessa interessante: le webapplication attuali sono sempre più JavaScript (imperativo) che HTML (dichiarativo), per cui tanto vale buttarsi e passare ad un linguaggio completamente imperativo per chiudere la questione.

Il browser, naturalmente, dovrà comunque fornire uno strato di compatibilità per l'HTML scritto finora; questo sarà realizzato con un convertitore interno HTML->MIX, il cui output verrà poi reinterpretato in HTML comprensibile al sistema operativo. Questo, oltre a fornire un'ampia copertura delle funzionalità del motore MIX->HTML fin da subito, assicura un grado di sandboxing estremo, dato che l'HTML proveniente dall'esterno non interagisce mai con l'HTML del sistema operativo.

Per questo e altri motivi architetturali (meglio descritti nel wiki che appronteremo al più presto), il browser ha come nome interno "4-stage Producer of Interpreted Language", che rientra nel più generale progetto "Fundamental Inversion of Software Handmaking".

Concludo invitandovi tutti a partecipare a questo interessante progetto: 4PrIL FISH ha bisogno di voi!