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
-
2014 Comincio a lavorare con Drupal e partecipo ai primi eventi della community: DrupalDay a Bologna e South Italy Drupal Camp a Napoli
-
2015 Su drupal.org come sjpagan
Da settembre sono anche membro individuale della Drupal Association.
-
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.
-
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.
-
2022-2026 I.T.Svil, Salerno (@itsvil (si apre in una nuova scheda))
Piattaforme Drupal per la Pubblica Amministrazione.
-
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.
-
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
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.
Integrazione di AI Disclosure con AI Translate
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.
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
-
Merge request: AI Translate!72 Integrazione di AI Disclosure con AI Translate
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.
-
Merge request: Token OR!28 · !29 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.
-
Merge request: IndexNow!78 Ping IndexNow solo per contenuti già pubblici
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.
-
Co-maintainer: drupal.org C2PA Sign
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.
-
Pull request: GitHub · c2patool#1 Correzione alla libreria PHP c2patool
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.
-
Merge request: LSCache!2 Purge senza errori dove LiteSpeed non c'è
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)).
-
Merge request: C2PA Sign!8 · !9 · !10 Tre correzioni alla firma dei contenuti
Tre correzioni al modo in cui C2PA Sign firma i file, nelle issue #3596030 (si apre in una nuova scheda), #3596031 (si apre in una nuova scheda) e #3596032 (si apre in una nuova scheda). Le ho verificate da capo a fondo con Content Credentials.
-
Contributo: Content Credentials2 issue Contributi a Content Credentials
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).
-
Progetto: GitHub Voxtrama
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) -
Merge request: Tool API!155 Esito del form di esecuzione da un solo livello
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.
-
Contributo: AI Content Disclosure#3621703 Proposta di unire due moduli sullo stesso tema
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.
-
Modulo: drupal.org AI Disclosure
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) -
Merge request: AI (drupal/ai)!1943 Chiamate ai tool come lista piatta nell'EchoProvider
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.
-
Merge request: AI Translate!43 Pulizia di TextTranslator
Issue #3585546 (si apre in una nuova scheda): tolta da TextTranslator la proprietà aiConfig, rimasta inutilizzata.
-
Merge request: AI Translate!41 Markup HTML conservato nelle traduzioni
Issue #3585525 (si apre in una nuova scheda): nei valori tradotti il markup e le entità HTML restano come nell'originale.
-
Contributo: Drupal core4 issue Contributi a Drupal core
Quattro issue: #3615256 (si apre in una nuova scheda) (test di performance sul ramo main), #3615175 (si apre in una nuova scheda) (calculateChecksum), #3615423 (si apre in una nuova scheda) (container nei test, RTBC) e #3614983 (si apre in una nuova scheda) (testo di aiuto della ricerca).
-
Contributo: S3 File System#3601091 Supporto a MimeTypeGuesser di Drupal 11.4
Issue #3601091 (si apre in una nuova scheda): s3fs si adegua al servizio MimeTypeGuesser cambiato in Drupal 11.4.
-
Merge request: Paragraphs!256 Icone dei paragrafi con file system remoti
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.
-
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)
2019 2 voci
-
Modulo: drupal.org Views Field Percentage
Aggiunge a Views un campo che mostra un valore come percentuale. Nato con Drupal 8.
-
Modulo: drupal.org Views custom link
Aggiunge link personalizzati alle Views.
2018 2 voci
-
Modulo: drupal.org Vsauce Sticky Popup
Un popup che resta fisso sullo schermo, configurabile dall'interfaccia. Scritto per Drupal 8.
-
Modulo: drupal.org Style Management
Gestisce gli stili del sito dall'interfaccia di amministrazione, su Drupal 8.
2017 2 voci
-
Community: drupal.org Revisioni di project application
Quattordici revisioni di moduli candidati alla pubblicazione su drupal.org, a febbraio 2017.
-
Modulo: drupal.org DOC to HTML
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
-
Community: drupal.org Account su drupal.org
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:
- Voli FPV: @lowflyfpv (si apre in una nuova scheda)
- Stampe 3D: @lowfly_stampa3d (si apre in una nuova scheda)
- Street photography, un archivio di scatti: @sjpagan (si apre in una nuova scheda)
Dove trovarmi
- Moduli, release e contributi: @sjpagan (si apre in una nuova scheda) su drupal.org
- Codice fuori da drupal.org, compreso Voxtrama: @sjpagan (si apre in una nuova scheda) su GitHub
- Percorso professionale: @giorgioalfredopagano (si apre in una nuova scheda) su LinkedIn
- Per scrivermi: la pagina Contatti
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.
- Profilo di sjpagan su drupal.org (si apre in una nuova scheda): iscrizione, progetti mantenuti, aziende. Fonte primaria.
- Kelyon su drupal.org (si apre in una nuova scheda): organizzazione di supporto dei miei primi moduli. Fonte primaria.
- Profilo LinkedIn (si apre in una nuova scheda): esperienze con le date e iscrizione alla Drupal Association come membro individuale. Fonte primaria.
- DOC to HTML su drupal.org (si apre in una nuova scheda): progetto creato a gennaio 2017, release e compatibilità. Fonte primaria.
- AI Disclosure su drupal.org (si apre in una nuova scheda): creazione, maintainer, release, siti che lo usano. Fonte primaria.
- Piano del modulo nella Drupal AI Initiative (si apre in una nuova scheda): i sedici passi e quelli chiusi. Fonte primaria.
- Native Observability su drupal.org (si apre in una nuova scheda): creazione, compatibilità, security advisory policy, siti che lo usano. Fonte primaria.
- Voxtrama su GitHub (si apre in una nuova scheda): licenza e prima release. Fonte primaria.
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.