Facebook to kapitalistyczna maszynka do zarabiania pieniędzy? Okazuje się, że obok głównej działalności daje za darmo konkretne produkty.
Wśród dużych firm z branży IT zapanowała nowa moda: dać developerom i producentom gotowe produkty za darmo. Najlepszy przykład to {link_wew 4422}Android{/link_wew} udostępniany przez Google. System został wydany z otwartym źródłem na licencji GNU zakładającej wolność w korzystaniu z aplikacji i ich modyfikowaniu. To samo robi Facebook.
Dlaczego warto pomagać developerom?
Korzyści jakie odnosi Facebook na udostępnieniu SDK dla Androida, C#, iPhone’a, JavaScriptu, {link_wew 159}PHP{/link_wew} i Pythona są oczywiste: programiści będą chętniej pracować z udokumentowanym SDK niż tworzyć wszystko od podstaw. Pozwala to napędzać popularność serwisu: developerzy chętnie tworzą aplikacje, które przyciągają kolejnych użytkowników, co z kolei daje większe szanse na sprzedaż ich produktu. Symbioza jest oczywista.
Narzędzia dla programistów
Facebook udostępnia również szereg narzędzi, które mogą przydać się również w pracy nad produktami niezwiązanymi z serwisem. Przykładem mogą być narzędzie do wprowadzania zmian za pomocą operacji {link_wew 3459}ALTER{/link_wew} w bazach MySQL-a bez przełączania bazy w tryb offline (http://www.facebook.com/notes/mysql-at-facebook/online-schema-change-for-mysql/430801045932 ) czy poprawiony shell dla PHP, który obsługuje dopełnianie klawiszem Tab czy dostęp do dokumentacji (http://www.phpsh.org/ ). Co ciekawe, skrypt napisano w {link_wew 3423}Pythonie{/link_wew}.
Kolejne przydatne narzędzia to baza elementów interfejsu użytkownika przygotowana na iPhone’y (https://github.com/facebook/three20) czy Facebook Animation – biblioteka JS służąca do tworzenia animacji (http://developers.facebook.com/docs/fbjs#animation). Można z nich korzystać nie tylko w aplikacjach związanych z Facebookiem.
Przyśpiesz swój serwis
Z Facebooka korzysta ponad 600 milionów osób, a w każdej minucie do jego bazy dodawanych jest 150000 zdjęć i milion innych wiadomości (http://www.onlineschools.org/blog/facebook-obsession/). Nic dziwnego, że programiści intensywnie pracują nad optymalizacją baz danych i serwerów. Część z wyników ich pracy jest udostępniona dla wszystkich.
Mamy więc do dyspozycji framework Pythona Tornado (http://www.tornadoweb.org/), który pozwala tworzyć aplikacje wymagające ciągłego utrzymywania tysięcy połączeń. Jeśli zależy nam na mniejszym zużyciu procesora, powinniśmy natomiast zainteresować się HipHop for PHP (https://github.com/facebook/hiphop-php/wiki/), który transformuje kod w PHP do zoptymalizowanego C++, a następnie wykorzystując g++ kompiluje kod do plików binarnych. Według Facebooka pozwala to na obniżenie zużycia procesora o 50% względem Apache’a i PHP przy takim samym ruchu.
Ważne linki
Lista rozwiązań Open Source: http://developers.facebook.com/opensource/
Repozytorium (GitHub): https://github.com/facebook
Umowa licencyjna: http://developers.facebook.com/opensource/cla
Jeśli szukamy rozwiązania problemów związanych ze zmniejszeniem obciążenia, administrowaniem dużymi bazami danych, archiwizowaniem logów czy pracą z użytkownikiem w czasie rzeczywistym, warto przejrzeć również inne narzędzia udostępniane przez Facebooka. Szkoda byłoby nie skorzystać z wiedzy programistów zajmujących się tymi problemami na co dzień i w dużo większej skali.