Aperto e distribuito: il codice dello Spazio Cliente OVH è finalmente open source

Annunciata durante l’OVH Summit 2016, l’apertura del codice sorgente dello Spazio Cliente adesso è realtà: da questo momento chiunque può partecipare alla sua evoluzione, tramite il . Rendere open source questa applicazione storica di OVH, ovvero l’interfaccia che permette agli utenti di gestire i propri servizi in pochi click, è stata una grande avventura. Ripercorriamo questa esperienza e i suoi insegnamenti con il team UX.

Perché rendere pubblico il codice?

Parallelamente all'evoluzione dell’organizzazione aziendale, da qualche mese in OVH era in atto un altro cambiamento: quello dello Spazio Cliente. Componente fondamentale dei servizi offerti e punto di passaggio obbligato per tutti i clienti per la gestione dei loro servizi, su questa interfaccia si concentra gran parte degli sforzi del team UX. Come sviluppatori dedicati alla user experience, riteniamo che l’apertura del codice presenti numerosi vantaggi. Vantaggi che rafforzano la nostra profonda convinzione che l’open source sia diventato uno standard imprescindibile dell’IT professionale.

Lo spirito comunitario anima OVH fin dagli esordi. Abbiamo sempre ascoltato quanto più possibile le esigenze, i consigli e le critiche degli utenti e, grazie a questo, siamo cresciuti. Era il momento di compiere un ulteriore passo e aprire la strada allo sviluppo collaborativo. Lavorare insieme ci permette di migliorare in modo più efficace la qualità globale dello Spazio Cliente. Lo abbiamo già constatato con il lancio del nostro programma Bug Bounty nell’estate del 2016 per incentivare la segnalazione di eventuali falle di sicurezza e anche con la correzione degli errori ortografici rilevati nell’interfaccia, regolarmente segnalati sui social network - a volte in modo non proprio clemente - dagli zelanti seguaci di Bernard Pivot. Il contributo della comunità costituisce una risorsa preziosa soprattutto per apportare nuove idee sul piano tecnico ed ergonomico: utilizzandolo tutti i giorni o quasi, gli utenti conoscono lo Spazio Cliente alla perfezione. L’obiettivo è quindi quello di adattare la tabella di marcia dei futuri sviluppi dello Spazio Cliente OVH in base alle esigenze dei nostri clienti.

Rendere open source il codice sorgente è anche sinonimo di una maggiore trasparenza, grazie alla possibilità di consultare changelog, commit e altri label GitHub. Tutti elementi che permettono di conoscere in qualsiasi momento la direzione presa dal progetto e di partecipare al suo sviluppo.

Facilitare la collaborazione

Il primo passo verso la possibilità di apportare contributi è stato aprire i codici sorgente. Più facile a dirsi che a farsi: lo Spazio Cliente OVH è un progetto dalla lunga storia e inevitabilmente riportava, sotto alcuni aspetti, lacune tecniche importanti. La parte più spettacolare del lavoro è invisibile ai vostri occhi. Vi sveliamo come abbiamo fatto.

Linee guida aperte a suggerimenti

Collaborare senza un quadro di riferimento è impossibile. Era quindi essenziale redigere una documentazione chiara per assicurare l’omogeneità dei nostri repository sia a livello di codice che di metodologia di contribuzione. Una documentazione non abbastanza precisa avrebbe potuto rivelarsi inutile, una troppo dettagliata e restrittiva rendere difficile i contributi. Trovare il giusto equilibrio non è mai facile! Proprio per questo, anche le nostre linee guida sono aperte ai vostri suggerimenti.

Contengono i seguenti documenti:

README.md: sintesi dei contenuti presenti sui nostri repository;
CODE_OF_CONDUCT.md: definizione delle regole di buona condotta tra i contributori;
CONTRIBUTING.md: il nostro grande libro impolverato che elenca, per ognuno dei nostri progetti, le regole necessarie per la partecipazione.
ISSUE_TEMPLATE.md: template GitHub che permette di precompilare il modulo di dichiarazione di un problema, per una gestione più rapida grazie a un formato standard;
PULL_REQUEST_TEMPLATE.md: uguale all’ISSUE_TEMPLATE, ma per richieste pull;
LICENSE.md: definisce la licenza “BSD con 3 clausole” da utilizzare nei progetti.

Risorse utili

https://www.ovh.com/fr/blog/wp-content/uploads/2017/08/ovh-chatbot-CHANGELOG.md-at-master-%C2%B7-ovh-ux-ovh-chatbot-439x400.png

Oltre alle linee guida, offriamo diversi strumenti per facilitarne il rispetto:

Unificatore degli stili di commit: tool che consente di rispettare un formato di messaggio specificato nelle nostre linee guida e contenente questo schema:

Per ricreare un ambiente familiare ai contributori, ci siamo ispirati a norme già esistenti, come quelle di Angular.

Generatore di changelog: script Node.js che permette di generare un changelog in formato standard. Questa operazione è possibile grazie al formato specifico dei messaggi di commit.

"Linter" JavaScript e "linter" stylesheet: tool che verificano la sintassi e il formato del codice per renderli simili su un numero massimo di repository. La lettura del codice risulta più semplice se non ostacolata da una sintassi troppo intricata: in questo modo è più facile concentrarsi sul codice.

Questi strumenti, oltre al codice stesso, costituiscono gli elementi con cui è necessario familiarizzare prima di poter apportare contributi. Ecco perché per l’istallazione dello Spazio Cliente OVH ricorriamo allo standard Makefile, molto conosciuto. I comandi essenziali sono due:

Non vi insegneremo nulla di nuovo: il primo comando istalla le dipendenze necessarie per il funzionamento dello Spazio Cliente, il secondo avvia l’ambiente di sviluppo. Tutto qui!

Restauro del codice: una fase difficile e indispensabile

Qual è stato il processo di apertura del codice? Ecco le fasi principali.

Per il funzionamento dello Spazio Cliente è necessario un insieme di blocchi di codice, detti componenti. Per aprire questi blocchi e prima di pubblicarli su NPM e Bower, abbiamo creato 53 repository GitHub. Rendere open source così tanti componenti è un lavoro estremamente oneroso, soprattutto se il codice non sempre risponde agli standard di qualità attuali. Per dirlo in modo meno politicamente corretto: alcune porzioni di codice erano scritte veramente male e meritavano un piccolo restyling.

Una volta ritoccato il codice, abbiamo pubblicato le componenti essenziali e, successivamente, deciso di rendere lo Spazio Cliente Telecom disponibile su GitHub. Perché proprio lo Spazio Cliente Telecom? Essendo la più recente, questa sezione era la meno grande del codice definito “legacy” e quindi richiedeva meno refactoring: il grosso del lavoro consisteva nell’assicurarsi che nessun commento o porzione di codice generasse falle di sicurezza, fosse obsoleto o contenesse commenti interni all’azienda. Dopo questa sezione, è stato il turno dello Spazio Cliente OVH Cloud. Per via delle similitudini architetturali dei codici sviluppati, abbiamo utilizzato la stessa metodologia.

L’eredità machiavellica dello Spazio Cliente Web

Altre due sezioni dello Spazio Cliente hanno accumulato un ritardo tecnico tale da renderne impossibile la pubblicazione: Web e Dedicato.

“Il possibile è già stato fatto. L’impossibile è in corso. Per i miracoli prevediamo un ritardo di 48 ore.” Probabilmente conoscerete questo detto, che in informatica acquista tutto il suo senso quando pensiamo di sanare una lacuna tecnologica creata con amore in quasi 19 anni da un esercito di sviluppatori. Abbiamo deciso di dare una rinfrescata alle parti più vecchie dello Spazio Cliente, iniziando da quella con la storia più ricca e movimentata: la sezione Web. Giusto per darvi un’idea, parliamo di circa 32.000 righe di JavaScript, 800 template HTML e una miriade di file CSS. Inutile dire che non si trattava semplicemente di reimbiancare le pareti e sostituire la moquette. Un lavoro di tale portata non può essere completato in un colpo solo, ma richiede interventi piccoli e ben studiati.

Per prima cosa abbiamo rielaborato il codice in tutte le sue parti, in particolare i file JavaScript e la loro migrazione a ES6 e AngularJS superiore alla versione 1.3, in modo da allinearci a norme più recenti e conosciute dalla comunità chiamata a lavorare sul progetto GitHub. Per evitare qualsiasi regressione ci siamo serviti di strumenti come "Prettier" e "SonarJS", molto utili per il rilevamento di bug e l’uniformazione dei file.

In seguito, è stato il turno dei file HTML: anche in questo caso, per la cura di ringiovanimento abbiamo semplificato il DOM e migrato il progetto sulle stesse librerie delle sezioni Telecom e Cloud, come Bootstrap 3. La fase di aggiornamento è ormai al termine e a breve applicheremo il processo già descritto e utilizzato per rendere open source le sezioni Cloud e Telecom. Nei prossimi mesi, faremo lo stesso con quella Dedicato.

I componenti utilizzati dallo Spazio Cliente Web verranno pubblicati su GitHub, in modo che il codice sia disponibile a settembre 2017.

Make the fork be with you

Lo avete visto: rendere open source il codice dello Spazio Cliente OVH è un lavoro di cui sono state gettate solo le fondamenta. Le prossime fasi saranno altrettanto importanti per la comunità e per coloro che vorranno prendere parte al progetto.

Uno dei nostri obiettivi è permettere a chiunque di effettuare un [url="https://it.wikipedia.org/wiki/Fork_(sviluppo_software)"]fork[/url] dello Spazio Cliente OVH e utilizzarlo sulla propria infrastruttura. Che si tratti di adattarlo ad usi specifici o crearne una versione commerciale, lo Spazio Cliente è a vostra completa disposizione!

Come avete senz’altro notato parliamo di Spazio Cliente OVH, ma in realtà ci riferiamo a diverse basi di codice, ciascuna corrispondente a un universo di servizi OVH: Telecom, Cloud, Web e Dedicato. Un’organizzazione di questo tipo ormai è superata: a livello dello Spazio Cliente la separazione in diversi universi di prodotti ha portato alle divergenze tecniche ed ergonomiche che avete rilevato e di cui spesso vi siete lamentati.

Nei prossimi mesi lavoreremo all’unificazione degli ambienti, per offrire la migliore esperienza possibile a utenti e sviluppatori.

L’avventura continua... insieme a voi!