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