Librerie Open Source: la libertà dietro Instagram

Instagram è una delle app più utilizzate al momento e vanta 300 milioni di utenti. Questa app non è altro che piattaforma in cui è possibile pubblicare foto e condividerle su altri social network. Nata nel 2010 e quasi 2 anni dopo venne acquisita da Facebook.

Instagram è gratuita e il suo codice sorgente è chiuso. Come la maggior parte delle app, moltissime delle funzioni presenti nel suo sorgente provengono da librerie Open Source.

Instagram è GitHub

Instagram possiede un account aziendale su GitHub, in cui pubblica tutti i Fork delle librerie Open Source che utilizza nella sua App.

Creare un Fork significa clonare un progetto già esistente per avviarne uno proprio. Di solito questa azione è utilizzata quando si ha la necessità di avere particolari personalizzazioni nel proprio codice che non sarebbero utili nel progetto iniziale.

A questo indirizzo potete trovare l’account ufficiale di GitHub di Instagram: link. Potete trovare tutte le modifiche applicate alle librerie utilizzate.

Alcune delle librerie più rilevanti

Dopo aver visto le librerie più rilevanti sui prodotti apple (link), vediamo quelle più rilevanti su instagram.

 AFNetworking

Questa libreria viene utilizzata nei dispositivi IPhone e Android e serve per semplificare l’interfacciamento di un App con un Back-end web o chiavi esterne.

Apache Thrift

Questo è un Framework sviluppato per Facebook, è utilizzato per creare interfacce tra diversi linguaggi di programmazione.

Appirater

Si può trovare nella maggior parte delle applicazioni per iPhone, ha lo scopo di ricordare all’utente dell’app di rilasciare un voto o una recensione.

Apple Reachability

Funzione presente solo negli iPhone, permette di spostare verso il basso tutta la schermata per semplificare l’uso dell’app con una sola mano.

Boost

Collezione di Librerie in C++, sono circa 80 librerie diverse e variano dalla gestione dei file di sistema, alla gestione dei processi in parallelo che alla gestione di immagini.

CocoaLumberjack

Framework utilizzato per Mac e iOS per la gestione delle connessioni.

Cocoawithlove-Base64

Libreria Unix per la gestione delle codifiche.

Curl

Libreria utilizzata per lo scambio di dati nelle applicazioni web.

Flickr-OAuth-iOS

Libreria per interfacciare la piattaforma Flickr con applicazione iOS, comprese quelle per iPhone, iPad  e iPod.

Google Breakpad

Libreria per la gestione dei report dei crash

Google-glog

Libreria per la gestione delle connessioni su dispositivi Android

Ios5-cookbook

Strumenti per lo sviluppo di applicazioni per iPhone.

JSONKit

Insieme di librerie per il trattamento di dati in formato Json.

LXReorderableCollectionViewFlowLayout

Librerie per il riordino di elementi da touchscreen.

MBProgressHUD

Classe per iOS per la gestione delle opacità utilizzate per indicare le operazioni in primo piano.

MyOpenALSupport

Insieme di librerie di supporto per applicazioni iOS, utilizzate per gestire animazioni o effetti grafici.

NSNotifications and Background Threads

Libreria per la gestione di notifiche e processi.

NSString+XMLEntitites

Framework per semplificare lo sviluppo su iOS.

Oauthconsumer

Libreria per incrementare la sicurezza su iPhone.

Ohhttpstubs

La libreria che viene utilizzata per eseguire i test su rete.

Protobuf

Linguaggio di google per serializzare le informazioni.

QSUtilities e

Insieme di librerie per l’Objective-C, le funzionalità son multiple, vanno dal accesso alla rete all’ottimizzazione di alcuni processi.

Scifihifi-iphone

Libreria ormai deprecata, utilizzata per la gestione delle chiavi di rete.

SocketRocket

Insieme di librerie per iOS che contengono varie utilità per le connessioni in rete.

UICKeyChainStore

La libreria che sta prendendo il posto di scifihifi-iphone.