16 ottobre, 2006

Conoscete Boris Zbarsky?

di Percy Cabello

Asa Dotzler ha chiesto ai lettori del suo blog che cosa avrebbero voluto chiedere a Boris Zbarsky, uno dei più importanti sviluppatori Mozilla. Ha quindi girato le domande a Boris e il risultato è un'intervista molto divertente e approfondita.


Justin apre la serie di domande chiedendo: "Boris, se dovessi scegliere su quali aspetti lavorare nel codice di base di Mozilla (e senza alcun altro vincolo), che cosa preferiresti? Il refactoring? Correggere bug? Aggiungere nuove funzionalità?

E' un po' difficile dirlo perché faccio fatica a immaginare questo scenario "senza vincoli" nel quale posso sparire per settimane e farmi gli affari miei, senza dovermi preoccupare delle revisioni, delle correzioni di sicurezza e così via. Credo che mi focalizzerei su quello che sto facendo al momento, e cioè refactoring e correzione di bug, soprattutto perché sostanzialmente il browser ha già tutto quello che voglio e dunque le nuove funzionalità non le ritengo importanti. Ma se avessi veramente tempo libero per progettare e implementare nuove funzionalità... chissà... potrei essere risucchiato nel vortice! ;)

mdakin chiede: "Boris, tu e pochissimi altri sviluppatori state lavorando sui meccanismi intricati e complessi di Gecko e, tendenzialmente, state mantenendo un basso profilo fra tutti gli sviluppatori Mozilla. Avete mai pensato di uscire dalla buia stanza dei bottoni e unirvi alle altre star di sviluppatori? [per la cronaca, io ritengo che Boris sia una star da anni ? Asa]

Credo di non aver capito bene la domanda. Non penso di mantenere un basso profilo nella comunità di sviluppo Mozilla. Di certo mi faccio spesso portavoce di diverse opinioni. Forse troppo spesso. ;)

Se la domanda è sul perché io non sia maggiormente visibile all'interno della comunità degli utenti Mozilla, sulla stampa ecc.. beh, ci sono varie ragioni. Innanzitutto, la maggioranza della comunità degli utenti e la stampa intera sono interessati a "Firefox" e poiché io non lavoro esattamente su "Firefox" per come la intendono loro, non ho molto di cui parlare. In secondo luogo, non ho di solito molto tempo per bloggare su ciò che sto facendo, il che sembra il modo a cui ricorrono gli sviluppatori per rendersi visibili alla comunità. Infine, c'è il fattore "interesse", dal punto di vista della maggior parte del mondo, alle cose che faccio. La gente è molto più interessata a come far apparire il pulsante "Pagina iniziale" che ad un miglioramento di prestazione nel visualizzare una pagina con 15.000 tabelle floated. Aggiungete questo al fatto che ho cose migliori da fare che giocare con le masse e che sta avanzando una certa apatia reciproca.


Philip Withnall chiede: "Boris, potresti dirci qualcosa in più su di te e del tuo lavoro/vita al di fuori di Mozilla?"

Quello che ne rimane, certo. :) Mi sono laureato in matematica all'università di Chicago, faccio ricerca nella teoria della rappresentazione e adesso sto insegnando calcolo agli studenti del primo anno. Le lezioni sono iniziate circa una settimana fa dunque finora abbiamo fatto principalmente ripasso (che non era propriamente ripasso per buona parte della classe). Inizieremo integrazione, se tutto va come previsto.

Questo è quanto riguarda il lavoro. Mi sono sposato un mese fa e adesso io e Emma stiamo cercando il momento buono per concederci una vacanza. Forse a dicembre... non ho molto altro da dire ora sulla mia vita, almeno quello che voglio che si legga su Internet.


crf chiede: "Quali sono alcune delle cose più schifose del progetto Mozilla? Come pensi che possano essere migliorate?"

Hmmm... penso che una delle cose più schifose sia il vecchio e orribile codice di base non documentato che abbiamo sottomano adesso. Stiamo lavorando per migliorarlo.
La seconda è la mancanza di un sano testing di regressione. Ora ne stiamo facendo più di quanto ne facessimo in passato, c'è gente che sta lavorando al problema ma c'è ancora un po' di confusione.
E la terza cosa è probabilmente la tensione fra "il progetto Mozilla" e "il browser Firefox", nella quale alcune persone credono (o almeno si comportano come se lo stessero credendo, per quello che posso vedere io) che le due realtà dovrebbero essere sinonimi, mentre altre persono credono che debbano essere rivali. La risposta ovvia è che queste persone dovrebbero cambiare idea. Facile, vero? ;) Funziona così bene da decenni in Medioriente!


i5mast chiede: "Boris, so che parli russo. Sei nato in Russia (e se sì, dove) oppure i tuoi genitori sono originari di là?"

Sono nato a Odessa. Ora si trova in Ucraina ma all'epoca era in Unione Sovietica. Essendo una grossa città, la gente parlava principalmente russo.


Doug Wright vuole sapere "Vieni pagato per il tuo lavoro su Gecko? E se no, perché Mozilla Corp non ti paga?"

Vengo pagato part-time. Per la verità, Mozilla Corp voleva assumermi per un po' di tempo ma sono sorti dei problemi legali che ho dovuto risolvere prima di essere sicuro che fosse tutto OK.

David G. King si chiede "In tutti questi anni in cui ho visto Boris in Bugzilla e vari altri posti mi sono sempre domandato che cosa lo spinge ad investire così tanto tempo e impegno nei vari progetti della Fondazione"

A volte me lo chiedo anch'io. ;) Credo sia principalmente un senso di responsabilità verso le cose. Mi secca tantissimo dover dire che il codice a cui io ho messo mano è ora il Problema di Qualcun Altro. Inoltre, si tratta comunque di divertimento.

Jed ha tre domande veloci: "1) Che cosa ti piace di più fare in Mozilla? 2) Quale pensi sia la sfida più ardua lavorando su Mozilla? e 3) Nel breve e medio periodo, dove pensi che Mozilla ecc... debbano migliorare maggioramente? *Con 'Mozilla' intendo il motore Gecko insieme all'intera piattaforma".

Non so davvero che cosa mi piace fare di più... ci sono molte parti del codice che sono divertenti allo stesso modo.
La sfida più ardua per me è assolutamente quella di mantenere un modello mentale del codice. Abbiamo un sacco di interazioni (scarsamente documentate) tra le varie parti del codice e, grazie ai vari branch, ci sono spesso molteplici versioni da tenere in considerazione. Il periodo peggiore è stato quando abbiamo abbandonato il supporto a Gecko 1.7, con 5 versioni del codice diversissime che lottavano per essere tenute in memoria.
Nel breve periodo dovremmo arrivare ad una architettura di sicurezza leggermente migliore, un algoritmo di layout che si avvicina ancor di più alle specifiche CSS, possibilmente con XBL2 o sue parti. Questo è il "Gecko 1.9" del breve periodo.


Step chiede: "C'è un lato oscuro del codice su cui hai lavorato e del quale sei veramente orgoglioso, ma nessuno te l'ha detto o non l'ha nemmeno notato? Naturalmente, potremmo non capire di cosa si tratti ma almeno vantatene un po' con noi ;)"

Credo che il supporto per i file .mailcap e mime.types su Unix/Linux rientri probabilmente in quella descrizione. E' qualcosa di cui la maggior parte delle persone non sa nulla, soprattutto da quando GConf "ha reinventato la ruota", ma si è trattato della mia prima grossa patch di Gecko e ne sono veramente orgoglioso.

Timur vuole sapere "Quali sono i progetti di lungo periodo per Mozilla e Firefox dopo l'uscita di Firefox 3 con Gecko 1.9?"

Non posso parlare dei progetti per Firefox. In parte perché non sono coinvolto attivamente nell'impostazione degli obiettivi per Firefox e in parte perché credo che si sia appena iniziato a lavorare a Firefox 3. Fino ad ora, Firefox 2 sta consumando un sacco di tempo ed energie.

Parlando di Mozilla come organizzazione, credo che almeno parte del progetto di lungo periodo sia quello di capire le esigenze degli utenti in termini di software per accedere ad Internet, prescindendo o no dall'uso di un browser web. Ora è tutto un po' confuso, ovviamente :)
Per quanto riguarda Gecko, i progetti post-1.9 comprenderanno probabilmente la conclusione di XBL2, ulteriore lavoro sulla sicurezza, possibili modifiche radicali al modo di gestire i messaggi JS-to-C++ almeno per gli oggetti DOM (ad esempio, non passando attraverso XPConnect), una possibile implementazione di alcune specifiche WHATWG. Analogamente alla situazione di Firefox, siamo molto concentrati alla preparazione della 1.9 e abbiamo molte cose da far quadrare.


dolphinling ha alcune domande: "Ci sono delle funzionalità che vorresti implementare, ma le cui specifiche non sono ancora state scritte?", "Quanto tempo trascorri sulla triage di base e su altre cose che chiunque altro potrebbe fare" e "Calcolando un più o meno 5%, di quale percentuale del codice di base di Gecko ci potremmo sbarazzare se non dovessimo lavorare con tutte quelle pagine non valide presenti su Internet, ma solo con quelle valide?".

Per quanto riguarda le funzionalità, non ho davvero il tempo di fermarmi a pensarci. Al momento il browser fa davvero quasi tutto quello che voglio che faccia.

Il tempo... non saprei... probabilmente all'incirca il 10% del mio tempo Mozilla se ne va leggendo i vari bug e nei commneti. Un altro 60% nelle revisioni. Credo di non aver fatto triage da mesi, proprio non ne ho il tempo.

Per la rimozione del codice, direi non più del 5%. E forse meno. Ma qui nasce la domanda di quanto potrebbe essere ripulita la progettazione se la fase di input avesse più vincoli. Questo è molto più difficile da quantificare.


Frederik Hoelge pone diverse domande: "FF ha infiammato la guerra dei browser e la novità che ho amato di più è stata la navigazione per schede, che credo che oggi sia diventata una standard. Dal punto di vista dell'utente finale, i browser stanno iniziando sempre più ad assomigliarsi. 1. Come credi che FF si differenzi dagli altri browser? 2. Qual è la differenza tra un IE ottimizzato e personalizzato, FF e Opera? 3. Nel mio caso, la navigazione per schede mi ha cambiato la vita (oltre a tutti gli avvisi di sicurezza, ma chi se ne frega). Ma quale sarà il prossimo paradigma per i browser? Si baserà tutto su Gecko o cos'altro?

Belle domande! Il problema è che io non uso Firefox tranne quando sono costretto a farlo (ad esempio quando devo affrontare un bug per il quale il banco di prova è l'interfaccia utente di Firefox). E non uso moltissimo neanche le schede: ho un monitor grande con un sacco di desktop virtuali. Perciò non riesco a rispondere alla tua prima domanda.

Per la seconda domanda, la differenza principale tra IE e Firefox è probabilmente l'esposizione di sicurezza. Mozilla è molto più efficiente nell'uscita delle patch di quanto lo sia Microsoft. Le altre differenze sono che Firefox non gira solo su sistemi Windows e questo per me è molto importante, non so quanto importante lo sia per voi. La differenza principale tra Firefox e Opera... dovete considerare che conosco solo Opera su Linux. Firefox ha un aspetto molto più gradevole e l'MDI su cui Opera insiste mi fa impazzire. Vedi sopra per quanto riguarda l'uso di finestre separate. Opera in molti casi è molto più veloce. Firefox ha una migliore compatibilità con i siti web, ma questo in parte perché la maggior parte degli sviluppatori web fa ancora del merdoso browser sniffing (tecnica abituale utilizzata in siti web e applicazioni web per determinare il browser utilizzato e fornire di conseguenza i contenuti all'utente, N.d.T.)

Penso di essere uno dei pochi che se ne frega di tutte queste ciance sulla sicurezza. Sono stanco di montare un software anti-spyware sul computer dei miei genitori ogni volta che li passo a trovare... e loro sono più benestanti rispetto ad altri, poiché mio padre è nel campo dello sviluppo software da circa 30 anni.

Detto questo, non so davvero quale sarà il prossimo paradigma per i browser. Quello che voglio davvero è un modo in cui poter condividere le mie impostazioni del browser (cronologia, segnalibri, roba anti-phishing, annotazioni di pagina, qualunque cosa) con tutti i dispositivi che uso ogni giorno. E non ne ho così tanti come altre persone, questo è sicuro. Penso ad una combinazione di modi per poter interagire meglio con le applicazioni web, una migliore gestione di un profilo fra più dispositivi e dispositivi portatili ancora migliori. Personalmente credo che questo sarà forse il prossimo cambiamento.


steve england afferma: "Mi rendo conto che la maggior parte degli sviluppatori non usa Firefox, ma preferisce SeaMonkey. Riesci a spiegarci questa cosa e se questo può avere un impatto negativo sul progetto Firefox?".

Non penso che la maggior parte degli sviluppatori utilizzi SeaMonkey e dunque non penso che ci sia un impatto negativo.

Per spiegare il perché un certo numero di sviluppatori lo abbia fatto per un po', dobbiamo andare indietro nel tempo quando era praticamente impossibile usare le nightlies di Firefox lavorando contemporaneamente sul codice di base, perché l'interfaccia crashava spessissimo (e una interfaccia che va in crash è inutile nel testare lo sviluppo delle modifiche di base). Particolarmente degno di nota è il periodo del brach aviary, a quanto ricordo: l'interfaccia rimase scassata per mesi e anche oggi dà qualche problema. Un esempio è la questione dei Places. Se avessi usato Firefox, avrei perso tutte le mie parole chiave dei Segnalibri, che mi avrebbero fatto perdere ore di lavoro per ripristinare il tutto.

Ci sono altre motivazioni che la gente ha a titolo personale (ad esempio, per me ci sono parecchie decisioni sull'interfaccia utente che non condivido assolutamente e che penso riducano molto l'usabilità dell'applicazione, come pure la mancanza di Venkamn [il Debugger JavaScript di Mozilla, N.d.T.] nelle nightly build) ma penso che quanto detto sopra sia la ragione principale della reazione iniziale. Oltre all'inezia in corso ed esperienze molto spiacevoli nella gestione dei rapporti con gli sviluppatori originari di Firefox. Penso che in molti casi queste impressioni iniziali si concentrassero più nell'allontanare le persone che nel misurare obiettivamente i meriti tecnici o dell'interfaccia utente.


Sander ha varie domande: "Se ci fossero tre semplici cose (compiti che potresti fare senza essere un hacker così competente e motivato) che vorresti facesse ogni singolo utente che utilizza i browser basati su Gacko per aiutare il progetto, quali sarebbero secondo te? "Un'altra domanda: se potessi clonare uno sviluppatore (ad eccezione di te, dbaron e roc), chi sarebbe? :)"

La prima cosa che gli utenti potrebbero aiutarci a fare sarebbe quella di aggiungere dei test automatizzati per trovare i bug. All'inizio, naturalmente, abbiamo bisogno di includere dei test molto molto semplici.

La seconda cosa sarebbe quella di convicere un altro utente di IE a passare a qualcos'altro :)

Clonare uno sviluppare... un'altra bella domanda! Ci sono molti candidati e la domanda è in qualche modo con possibilità multiple. Ad esempio, stiamo clonando nel breve periodo o nel lungo periodo? Al momento, vorrei ci fossero più Dave Liebreich in giro. Sta lavorando nell'approntare tutta una serie di test automatici di cui abbiamo bisogno da sei anni. Quando questo avverrà, finalmente potremo passare meno tempo a risolvere le regressioni, perché il test delle patch ne individuerebbe la maggior parte in brevissimo tempo.


Ashley Migretta va dritta al punto e chiede: "Boris, io ti piaccio? sì o no *incrocio le dita*"

Signora, sono un uomo sposato!

TnkierTyo chiede: "Boris, da chi hai preso questo nome? :P L'ho cercato su Google e ho avuto un sacco di risultati. Sei sempre tu?

No, non sono sempre io. Nelle occorrenze riguardanti il MIT, i gruppi di fisica e la roba relativa a Mozilla e agli standard web sono io. Devi ringraziare l'archiviazione web delle mailing list per il numero assurdo di occorrenze su Mozilla e gli standard. Ma per tutto quello che riguarda Lenin e i suoi imbalsamatori, non sono io... si tratta di un Boris Zbarsky diverso. Ovviamente ora questo blog citerà entrambi nella stessa pagina... oh, vabbé...

James Napolitano vuole saperne un po' di più e chiede: "Quanto credi che sia ben architetturato Gecko? Quali sono i suoi pregi e quali sono i suoi limiti? Quali cose è necessario risolvere/migliorare ma sono sempre rimandate? (Vorrei darvi una mano ma al momento sono davvero troppo occupato con il mio lavoro). Come diavolo riesci a condurre un dottorato in fisica *e* lavorare così tanto per Gecko? (Anch'io mi sono laureato in fisica e so come questo ci avvolga!). Diresti che il progetto Mozilla sia maturato in questi anni? Sembra che con la costituzione della Mozilla Foundation & Corporation, la documentazione migliorata attraverso l'MDC, il marketing di massa grazie a SFX, la comunicazione migliorata con i nuovi newsgroup, le nuove unità di testing, l'enorme espansione nella manodopera ecc... stia crescendo sempre di più!"

Devo ammettere che Gecko è l'unico grande progetto su cui abbia lavorato e dunque la mia esperienza sull'architettura è abbastanza limitata. Credo che alcune parti di Gecko siano progettate benissimo, mentre altre un po' meno. Altre parti ancora sono ben progettate per quello per cui sono state concepite ma adesso le stiamo utilizzando per altre cose, oppure le stiamo utilizzando per qualcosa di diverso rispetto al piano originario. Questo non risponde pienamente alla tua domanda ma il nocciolo della questione è che non esiste un'architettura Gecko monolitica. E' un insieme di pezzi, e alcuni sono migliori di altri.

Riguardo alle cose che continuano ad essere rimandate, la lista presente nel bug 187746 è là da parecchio tempo ma, per Gecko 1.9, stiamo facendo progressi su alcuni di quegli aspetti. Ci sono varie altre cose (come scrivere veramente qualcosa che assomigli ad una specifica per XUL) che non penso che avverranno mai. In generale, penso che Bugzilla sia è una fonte attendibile delle cose che dovrebbero essere risolte/migliorate. :)

Come ho detto prima, sto facendo un dottorato in matematica, non in fisica. Questa è la differenza fondamentale che mi permette di farlo. Parlando più seriamente, nei prossimi due anni ho bisogno di avere più tempo per il mio lavoro sul dottorato. Vedremo come andranno le cose.

Credo di essere d'accordo con te sulla situazione attuale del progetto. I miglioramenti sul testing e sulla documentazione sono eccezionali: per entrambe le cose c'è ancora molto da fare ma almeno abbiamo iniziato. Non sono sicuro che abbiamo avuto un'espansione enorme di manodopera; probabilmente abbiamo meno personale di quanto ne avessimo prima del distacco da Netscape. Parti importanti del codice ancora rimangono senza proprietari. Se trovi il proprietario di un modulo per la stampa, fammelo sapere! Comunque abbiamo ora più manodopera di quando si è costituita la Fondazione, questo è sicuro.

Un problema che penso abbiamo è che sempre più volontari vengono assunti, sia da Mozilla Corporation che da altre aziende. Da un lato, è una bella cosa ma dall'altro non vedo all'orizzonte nessun sostituto, almeno nella parte riguardante Gecko... abbiamo bisogno di capire come attirare più persone nello sviluppo Mozilla se vogliamo sopravvivere nel lungo periodo.

Nessun commento: