Facebook e l’Open Source, libertà a più livelli

Come primo articolo di “Open Source in pillole” son voluto partire dalla piattaforma online attualmente più utilizzata: Facebook. Credo non ci sia bisogno di spiegare cos’è Facebook e di quanto sia diffuso, quindi possiamo direttamente analizzarlo.

Cosa analizzeremo di Facebook?

Facebook è composto da:

  • Piattaforma web, suddivisa su più domini;
  • App Mobile per tutti i dispositivi;
  • Un solido backend multilinguaggio;
  • Dei server proprietari;

Tutto l’Open Source dentro Facebook

Android

  • redex: libreria Android di ottimizzazione del Bytecode;
  • React Native: libreria basata sul JavaScript e React per semplificarelo sviluppo;
  • makeitopen: portale per l’apprendimento e lo studio dei progetti Facebook;
  • rebound: libreria Java utilizzata per creare animazioni;
  • buck: sistema di compilazione che aiuta la creazione di codice comprensibile e riutilizzabile;
  • conceal: libreria per android per rendere più performante la criptografia;
  • Infer: utilizzato per analizzare il codice di Facebook e per trovare Bug critici;
  • Network Connection Class: utilizzato per migliorare le prestazioni di navigazione in base alla propria rete;
  • Stetho: stumento per il debuging per le applicazioni Android;
  • Device Year Class: analizza le specifiche di Android;
  • Shimmer for Android: utilizzata per creare piccoli effetti grafici nelle app Android;
  • Fresco: libreria per la gestione delle immagini e della memoria che utilizzano;
  • bolts-android: collezione di più librerie per lo sviluppo a basso livello;
  • Facebook SDK for Android: librerie per integrare SDK ad Android;
  • PathPicker: strumento per il terminale per la gestione di alcuni file di output;
  • screenshot-tests-for-android: strumento utilizzato per creare screenshot durante i test;
  • 360-video-player-for-android: parte di codice utilizzata per creare i video a 360 gradi;
  • SoLoader: codice di avvio delle applicazioni su Android;

iOS

  • React Native: Libreria basata sul JavaScript e React per semplificarelo sviluppo;
  • makeitopen: Portale per l’apprendimento e lo studio dei progetti Facebook;
  • Shimmer for iOS: utilizzata per creare piccoli effetti grafici nelle app Android;
  • ComponentKit: componenti base dei Framework per iOS;
  • pop: estensione per le animazioni su iOS o OS x;
  • FBMemoryProfiler: strumento per lo studio della memoria utilizzata;
  • FBRetainCycleDetector: libreria per la rilevazione di processi attivi;
  • buck: sistema di compilazione che aiuta la creazione di codice comprensibile e riutilizzabile;
  • FBAllocationTracker: libreria per gestire l’allocazione degli oggetti in Objective-C;
  • origami: utilizzato per la creazione di mockup per le nuove idee per l’app;
  • tweaks: serve per la fase di ultimazione di un App;
  • Infer: utilizzato per analizzare il codice di Facebook e per trovare Bug critici;
  • remodel: framework per la creazione di moduelli in Objective-C;
  • chisel: collezione di commandi per il debugging di applicazione iOS;
  • bolts-ios: collezione di più librerie per lo sviluppo a basso livello;
  • xctool: applicazione che durante la fase di test crea oggetti JSON sullo stato del sistema;
  • kvocontroller: strumento per la semplificazione del dialogo tra livelli diversi del Model View Controller;
  • AsyncDisplayKit: framework utilizzato per lo studio di interfacce complesse e responsive;
  • facebook-ios-sdk: librerie per integrare SDK ad iOS;
  • fishhook: libreria per riassociare dei simboli di Mach-O;
  • atosl: libreria Apple per la conversione di indirizzi da formato binario a simbolico;
  • PathPicker: strumento per il terminale per la gestione di alcuni file di output;
  • FBSimulatorControl: libreria per la gestione delle simulazioni;
  • Bolts-Swift: collezione di più librerie per lo sviluppo a basso livello;
  • WebDriverAgent: driver virtuali per la simulazione si sistemi iOS;
  • xcbuild: strumenti per la creazione di Xcode.

Web

  • Nuclide: IDE per lo sviluppo web o mobile, sviluppato su ATOM;
  • Parse Server: modulo di integrazione Node/Express;
  • React: libreria JavaScript per la realizzazione di interfacce;
  • React Native: libreria basata sul JavaScript e React per semplificare lo sviluppo;
  • HHVM: macchina virtuale per eseguire programmi scritti in PHP;
  • flow: libreria per evitare comuni bug in JavaScript;
  • rebound: libreria Java utilizzata per creare animazioni;
  • Flux: architettura per la creazione di interfacce utente;
  • fb-flo: estensione Chrome per modifica applicazioni web senza modificarle;
  • parse-dashboard: pannello per la gestione di applicazioni Parse;
  • huxley: sistema di test adatto le interfacce utente;
  • regenerator: serve per rielaborare parti di codice scritte in JavaScritpt;
  • jest: tools per i test Javascript;
  • immutable-js: strutture dati JavaScript per Liste, Stack, Mappe e Record;
  • xhp: estensione PHP per rielaborare parti di codice in XML per trasformarli in espressioni PHP valide;
  • flow-typed: repository per le librerie principali;
  • graphql-js: alcuni tools per integrare GraphQL per JavaScript;
  • react-devtools: componente Chrome per studiare la gerarchia della libreria React;
  • xhp-bootstrap: estensione della libreria Bootstrap realizzata in HTML, CSS e JS;
  • wordpress: il più famoso CMS di editoria;
  • rng.io: framework di test Ringmark realizzato dalla comunità W3C;
  • PathPicker: strumento per il terminale per la gestione di alcuni file di output;
  • node-haste: modulo per migliorare le prestazioni di node-js;
  • jstransform: piccolo tools per la sintassi JavaScript;
  • React.NET: libreria .NET per JSX utilizzata per il reder dei componenti React;
  • draft-js: un framework per React;
  • express-graphql: per realizzare server HTTP con Express;
  • facebook-php-sdk: libreria per l’interfaccia Graph API.

Backend

  • GraphQL: un linguaggio per la realizzazione di Query;
  • Parse Server: modulo di integrazione Node/Express;
  • presto: modulo per l’esecuzione di Query con dati che vanno dal gigabyte al petabyte;
  • HHVM: macchina virtuale per eseguire programmi scritti in PHP;
  • osquery: sistema operativo per realizzare analisi e statistiche su sulle Query SQL;
  • haxl: libreria per semplificare l’accesso dei dati da server web remoti;
  • parse-dashboard: pannello per la gestione di applicazioni Parse;
  • rocksdb: tools per aumentare le prestazioni del Database e per renderne più efficace la persistenza;
  • FBShipIt: sistema parallelo a git;
  • proxygen: librerie per la costruzione di servizi in linguaggio C++;
  • fatal: libreria per la gestione dei template Facebook;
  • wdt: libreria per ottimizzare il trasferimento dei dati nelle reti interne;
  • mcrouter: sistema di instradamento cache;
  • PathPicker: strumento per il terminale per la gestione di alcuni file di output;
  • folly: una libreria formata da 11 componenti per le prestazioni di facebook;
  • fbtftp: freamework per la creazione di server virtuali;
  • chef-cookbooks: risorsa per la formazione sullo sviluppo nelle piattaforme facebook;
  • rpm-backports: servizio per la manutenzione dei server CentOS.

Hardware

  • fbtftp: freamework per la creazione di server virtuali;

L’indirizzo della fonte è: link