Giorgio Alfredo Pagano

Sono sviluppatore Drupal: realizzo moduli e soluzioni su misura con un flusso di sviluppo agentico spec-driven. Uso Drupal dal 2014 e su drupal.org firmo @sjpagan (si apre in una nuova scheda) dal 2015. Curo quattro progetti pubblici: AI Disclosure, Native Observability, DOC to HTML e Voxtrama. I tre più recenti vengono dagli anni passati a costruire servizi per la Pubblica Amministrazione, dove ho imparato a dire a chi usa un servizio come è fatto e dove finiscono i suoi dati.

Che cosa faccio con Drupal

Costruisco siti e servizi web con Drupal, e scrivo i moduli che mancano. Il lavoro di ogni giorno è modellazione dei contenuti, gestione della configurazione, migrazioni, architetture disaccoppiate e moduli custom.

Drupal tratta la struttura del contenuto come un contratto: tipi di contenuto, campi, ruoli e flussi di pubblicazione stanno nella configurazione. Io la tengo nel repository con il codice e la rileggo in ogni merge request, come qualunque altra modifica.

AI Disclosure: il mio contributo alla Drupal AI Initiative

AI Disclosure è il modulo Drupal che registra, per ogni contenuto e per ogni traduzione, quanto l'AI ha contribuito al testo, e lo mostra al lettore con le icone ufficiali della Commissione europea. È nato nella Drupal AI Initiative da un piano di @marcus_johansson (si apre in una nuova scheda): ho preso lo sviluppo, ho aperto il progetto su drupal.org e scrivo il codice. Io ne sono l'owner, Marcus e @joevagyok (si apre in una nuova scheda) i co-maintainer.

Il modulo serve alle redazioni che devono rispettare l'articolo 50 dell'AI Act, e calcola per ogni contenuto se l'etichetta è dovuta. Oggi lo usano 70 siti (Drupal.org, al ). The Drop Times ne ha scritto due volte, sulle etichette dell'articolo 50 (si apre in una nuova scheda) e sulle etichette per audio e video (si apre in una nuova scheda).

Ogni pagina di questo sito porta la scheda di AI Disclosure in fondo al testo. Questa pagina dichiara di essere scritta con l'assistenza dell'AI e rivista da me, e i numeri di questa pagina sono verificati sulle fonti indicate in fondo.

La storia del modulo è nella scheda di AI Disclosure. Come si applica l'articolo 50(4) a un sito Drupal lo spiego in un articolo dedicato.

Native Observability: misurare Drupal da dentro

Native Observability traccia ogni richiesta a un sito Drupal con un correlation ID, registra gli span di esecuzione, la cache, le query e le chiamate HTTP in uscita, ed esporta verso OpenTelemetry e Prometheus. L'ho scritto per capire quale hook rallenta una pagina senza montare un APM esterno in ogni ambiente.

Supporta Drupal 10 e 11 con PHP 8.2 o superiore, le release stabili sono coperte dalla security advisory policy di Drupal, e lo usano 32 siti (Drupal.org, al ). Dettagli nella scheda di Native Observability. Di Native Observability hanno parlato Talking Drupal (si apre in una nuova scheda), nel Module of the Week dell'episodio #547, e The Drop Times (si apre in una nuova scheda).

Voxtrama: l'audio resta sul computer

Voxtrama è un'applicazione open source che trascrive riunioni, lezioni e interviste in Docker, sulla macchina di chi registra, e scrive un riassunto in cui ogni punto cita la frase e il minuto della registrazione. Il codice è su GitHub, con licenza Apache 2.0.

Nasce dalla stessa attenzione ai dati che mi ha lasciato la PA: una registrazione di lavoro contiene voci e decisioni di persone, e il posto più sicuro per trattarla è il computer di chi l'ha fatta. Il percorso dell'audio, passo per passo, è nella scheda di Voxtrama.

Il mio percorso con Drupal

  1. 2014 Comincio a lavorare con Drupal e partecipo ai primi eventi della community: DrupalDay a Bologna e South Italy Drupal Camp a Napoli
  2. 2015 Su drupal.org come sjpagan

    Da settembre sono anche membro individuale della Drupal Association.

  3. 2015-2019 Kelyon, Napoli (@kelyon (si apre in una nuova scheda))

    Sviluppo Drupal 7 e 8 per la sanità digitale. Nel 2017 nasce DOC to HTML, il primo dei miei moduli pubblici, con il sostegno dell'azienda. Fra il 2017 e il 2018 una parentesi in Insem, su PrestaShop.

  4. 2019-2022 SeoZoom, Napoli

    Riprogetto back end e front end della piattaforma SaaS, su un framework PHP proprietario, e seguo il progetto come project manager.

  5. 2022-2026 I.T.Svil, Salerno (@itsvil (si apre in una nuova scheda))

    Piattaforme Drupal per la Pubblica Amministrazione.

  6. 2026 SparkFabrik (@sparkfabrik (si apre in una nuova scheda)), da maggio a settembre: moduli su Drupal 10 e 11 per progetti enterprise, con un workflow spec-driven

    Poi lavoro da freelance e proseguo in proprio quel metodo.

  7. 2026 I progetti pubblici: Native Observability a febbraio, AI Disclosure nella Drupal AI Initiative ad agosto, Voxtrama su GitHub a settembre

I progetti svolti per gli enti pubblici restano riservati: in questa pagina ne racconto il metodo.

Che cosa mi ha insegnato la Pubblica Amministrazione

Il pubblico di un servizio pubblico resta per forza: chi deve chiedere un certificato ha quel sito e basta. Da qui vengono le tre attenzioni che porto in ogni progetto.

  • Accessibilità: decide se il servizio esiste per tutti o per una parte delle persone.
  • Trasparenza sul contenuto: il cittadino deve sapere chi ha scritto una pagina e con quali strumenti, ed è ciò che AI Disclosure rende un dato.
  • Dati in casa: identità, documenti e registrazioni si trattano nel posto più vicino a chi ne è responsabile, ed è l'impostazione di Voxtrama.

Come lavoro: specifica, decisioni a verbale, misure

Scrivo la specifica prima del codice. Ogni cambiamento comincia da un documento che dice perché si fa, che cosa cambia e come si verifica. AI Disclosure è partito da un piano in sedici passi pubblicato nella Drupal AI Initiative, e dieci di quei passi li ho già chiusi.

Metto le decisioni a verbale. Le scelte architetturali finiscono in un registro datato, con le alternative valutate. Scrivendo la scheda di AI Disclosure ho scoperto che il sito dichiarava l'uso dell'AI una volta sola per due lingue: la correzione e il suo motivo stanno nella scheda.

Misuro prima di dichiarare. Un numero rilevato pesa più di un'intuizione plausibile. Quanto rallenta Drupal quando lo si strumenta con Native Observability l'ho misurato sul mio server, e il metodo è nell'articolo sulla misura.


Contributi open source

Moduli che curo su drupal.org e contributi ai progetti di altri, anno per anno. Ogni voce porta alla prova pubblica.

Stato dei contributi
Entrata 12
In revisione 3
Chiuso 3
Aperto all'adozione 1

Ultimi contributi

Ultimo aggiornamento
Modulo drupal.org

Native Observability

Registra dall'interno cosa fa Drupal a ogni richiesta: query, chiamate a servizi esterni, cache. Per Drupal 10, 11 e 12, con un server MCP in sola lettura per gli agenti AI.

32 siti (Drupal.org, al ) · 2.2.0 · Progetto: Native Observability (si apre in una nuova scheda)
Merge request:
Token OR !28 · !29 Entrata

Token OR e le pipe fra virgolette

Issue #3633480 (si apre in una nuova scheda): quando tutte le pipe di un token fra parentesi quadre stanno fra virgolette, come nel valore di un attributo, Token OR lascia il testo com'è invece di richiamare all'infinito il servizio dei token. Il maintainer ha portato la correzione nella 2.3.4 e nella 3.0.0-beta2, con il credito.

Tutti i contributi

2026 19 voci
  1. Merge request: AI Translate!72 Integrazione di AI Disclosure con AI Translate Entrata

    Issue #3585563 (si apre in una nuova scheda): ogni traduzione fatta con l'AI riceve il grado "AI translated" di AI Disclosure, anche sulle entità collegate e sui blocchi di Layout Builder. Una traduzione nuova non eredita la revisione umana della sua sorgente.

  2. Merge request: Token OR!28 · !29 Token OR e le pipe fra virgolette Entrata

    Issue #3633480 (si apre in una nuova scheda): quando tutte le pipe di un token fra parentesi quadre stanno fra virgolette, come nel valore di un attributo, Token OR lascia il testo com'è invece di richiamare all'infinito il servizio dei token. Il maintainer ha portato la correzione nella 2.3.4 e nella 3.0.0-beta2, con il credito.

  3. Merge request: IndexNow!78 Ping IndexNow solo per contenuti già pubblici In revisione

    Issue #3607004 (si apre in una nuova scheda): i ping di aggiornamento partono solo per i contenuti che sono stati pubblici, e di nuovo quando una pagina viene ritirata. Il controllo avviene al salvataggio, con i test kernel. Il maintainer ha portato la correzione anche sul ramo 3.1.x, con la !79.

  4. Co-maintainer: drupal.org C2PA Sign Co-maintainer

    Co-maintainer insieme a @jrglasgow (si apre in una nuova scheda), che l'ha creato. Firma con le Content Credentials i file multimediali caricati sul sito, usando c2patool.

  5. Pull request: GitHub · c2patool#1 Correzione alla libreria PHP c2patool Entrata

    Una correzione a jrglasgow/c2patool, la libreria PHP con cui C2PA Sign usa lo strumento c2patool: dalla versione 0.10 dello strumento il manifesto va salvato in una cartella sua, perché lo strumento carica l'icona solo da lì. È nata mentre provavo le correzioni a C2PA Sign ed è uscita nella versione 0.5.3 della libreria.

  6. Merge request: LSCache!2 Purge senza errori dove LiteSpeed non c'è In revisione

    Senza LiteSpeed davanti a Drupal, il modulo provava a svuotare una cache assente e mostrava un errore in ogni pagina di amministrazione. La correzione salta il purge in quel caso, con i test (issue #3609034 (si apre in una nuova scheda)).

  7. Merge request: C2PA Sign!8 · !9 · !10 Tre correzioni alla firma dei contenuti Entrata
  8. Contributo: Content Credentials2 issue Contributi a Content Credentials Entrata

    Due issue: #3622690 (si apre in una nuova scheda) (richiede ai_disclosure 1.0.0-alpha2) e #3629737 (si apre in una nuova scheda) (il tipo di sorgente digitale si perde quando un altro strumento firma di nuovo il file).

  9. Progetto: GitHub Voxtrama Progetto

    Trascrive le riunioni sul tuo computer, riconosce chi parla e prepara verbali in cui ogni frase rimanda al suo punto dell'audio.

    Stelle: 3 · ultimo push: Repository: Voxtrama (si apre in una nuova scheda)
  10. Merge request: Tool API!155 Esito del form di esecuzione da un solo livello Entrata

    Issue #3582968 (si apre in una nuova scheda): il form di esecuzione dei tool riporta l'esito da un punto solo, invece che da più livelli.

  11. Contributo: AI Content Disclosure#3621703 Proposta di unire due moduli sullo stesso tema Entrata

    Issue #3621703 (si apre in una nuova scheda): questo modulo tratta lo stesso tema di AI Disclosure, e ho proposto di lavorare insieme su uno solo.

  12. Modulo: drupal.org AI Disclosure Modulo

    Indica quanto l'AI ha contribuito a ogni contenuto e traduzione. Lo mostra a chi legge con un'etichetta e lo scrive nel codice della pagina per motori di ricerca e assistenti AI.

    70 siti (Drupal.org, al ) · 1.0.0-beta2 · Progetto: AI Disclosure (si apre in una nuova scheda)
  13. Merge request: AI (drupal/ai)!1943 Chiamate ai tool come lista piatta nell'EchoProvider Entrata

    Issue #3586656 (si apre in una nuova scheda): l'EchoProvider, il provider di prova del modulo AI, restituisce le chiamate ai tool come lista piatta di ToolsFunctionOutput.

  14. Merge request: AI Translate!43 Pulizia di TextTranslator Entrata

    Issue #3585546 (si apre in una nuova scheda): tolta da TextTranslator la proprietà aiConfig, rimasta inutilizzata.

  15. Merge request: AI Translate!41 Markup HTML conservato nelle traduzioni Entrata

    Issue #3585525 (si apre in una nuova scheda): nei valori tradotti il markup e le entità HTML restano come nell'originale.

  16. Contributo: Drupal core4 issue Contributi a Drupal core Entrata
  17. Contributo: S3 File System#3601091 Supporto a MimeTypeGuesser di Drupal 11.4 Entrata
  18. Merge request: Paragraphs!256 Icone dei paragrafi con file system remoti In revisione

    Issue #3592735 (si apre in una nuova scheda): getIconFile() controlla che il file esista, così le icone dei paragrafi restano visibili anche su S3 e file system simili.

  19. Modulo: drupal.org Native Observability Ultimo aggiornamento Modulo

    Registra dall'interno cosa fa Drupal a ogni richiesta: query, chiamate a servizi esterni, cache. Per Drupal 10, 11 e 12, con un server MCP in sola lettura per gli agenti AI.

    32 siti (Drupal.org, al ) · 2.2.0 · Progetto: Native Observability (si apre in una nuova scheda)
2019 2 voci
  1. Modulo: drupal.org Views Field Percentage Chiuso

    Aggiunge a Views un campo che mostra un valore come percentuale. Nato con Drupal 8.

  2. Modulo: drupal.org Views custom link Aperto all'adozione

    Aggiunge link personalizzati alle Views.

2018 2 voci
  1. Modulo: drupal.org Vsauce Sticky Popup Chiuso

    Un popup che resta fisso sullo schermo, configurabile dall'interfaccia. Scritto per Drupal 8.

  2. Modulo: drupal.org Style Management Chiuso

    Gestisce gli stili del sito dall'interfaccia di amministrazione, su Drupal 8.

2017 2 voci
  1. Community: drupal.org Revisioni di project application Community

    Quattordici revisioni di moduli candidati alla pubblicazione su drupal.org, a febbraio 2017.

  2. Modulo: drupal.org DOC to HTML Modulo

    Importa documenti Word, OpenDocument, RTF e PowerPoint direttamente nel form del nodo, come HTML. Nato in Kelyon.

    3 siti (Drupal.org, al ) · 2.1.0 · Progetto: DOC to HTML (si apre in una nuova scheda)
2015 1 voce
  1. Community: drupal.org Account su drupal.org Community

    Iscritto dal 20 febbraio 2015 con il nome sjpagan.


Passioni

Piloto droni FPV: il visore mostra il volo dalla telecamera del drone, e ogni sessione chiede riflessi e una messa a punto di motori, eliche e radio. Stampo in 3D con una Bambu Lab e una Prusa Core One L con INDX, il cambio utensile di Prusa che gestisce più materiali e colori nella stessa stampa. Su Instagram ho un profilo per ogni passione:

Dove trovarmi

Fonti

Tutte le fonti sono state consultate l'11 ottobre 2026. I numeri di utilizzo si aggiornano da drupal.org: se trovi una differenza, vale drupal.org.

Modificato dall'AI

Questo contenuto è stato prodotto dall'AI e rivisto da una persona.

Come è stata usata l'AI?

Le bozze sono prodotte con l'assistenza dell'AI, poi dirette, rivedute e verificate da una persona. Numeri, date e versioni sono confrontati con le fonti pubbliche prima della pubblicazione, e la data di quel controllo è indicata nel testo.

Hai un progetto in mente?

Parliamone e costruiamo qualcosa di solido insieme.

Contattami