Firefox OS (Boot 2 Gecko, B2G dawniej) to projekt znanej wszystkim fundacji Mozilla. Jest to otwarty, mobilny system operacyjny bazujący na jądrze Linuksa, którego celem jest uruchamianie aplikacji napisanych przy użyciu HTML5 oraz natywnego API. Całe oprogramowanie jest napisane przy użyciu HTML5 oraz przy pomocy API urządzenia komunikuje się z nim w celu uzyskania dostępu do sprzętu za pomocą Javascript.
Cały system tworzą 3 warstwy:
Gonk - Podstawa systemu, czyli kernel Linux, sterowniki urządzeń, biblioteki, HAL itp. Jest to zasadniczo bardzo prosta dystrybucja Linuksa.
Gecko - Silnik przeglądarki Firefox znanej z desktopów oraz Androida. Został on jednak rozbudowany o dodatkowe API w celu lepszego wsparcia dla smartfonów i tabletów
Gaia - Czyli to co widzi użytkownik końcowy. Interfejs napisany w całości w HTML5. Wliczają się w niego launcher, ekran blokady, dialer, aplikacja aparatu, ustawienia itd.
Firefox OS jest Open Source, to znaczy, że każdy może pobrać kod źródłowy, przerobić go według własnej woli, przeportować system na dodatkowe urządzenia itd. Ja przeportowałem system na telefony Xperia 2011, osoby zainteresowane odsyłam Tutaj.
Aktualnie można zakupić telefony z Firefox OSem od Geeksphone (Peak, Peak+, Keon; są to modele developerskie, ale bardzo dobre), ZTE Open oraz do kupienia u polskiego operatora T-Mobile - Alcatel One Touch Fire (którego niestety nie polecam).
Coś o moim projekcie czyli Node.JS + Firefox OS
Od paru miesięcy siedzę w budowie Firefox OSa i myślę w jaki sposób można rozszerzyć jego możliwości.
Nie oszukujmy się, aktualnie ten system nie ma żadnych większych możliwości rozbudowy (jak np. Android). Mógłbym nawet porównać jego możliwości do iOSa bez Cydii, czyli jedynie twórca może wprowadzić nowe funkcje do systemu. Ale na szczęście to nie jest zamknięty system jak Apple Dlatego myślałem w jaki sposób rozwinąć jego możliwości. Osobiście uważam, że kompilowanie nowego systemu itd. jest kiepskim pomysłem, ze względu na problemy z aktualizacją systemu oraz niewygodną instalacją. Liczyłem bardziej na coś w stylu "Wrzuć na kartę, odpal i tyle". I z tego zrodził się mój koncept...
Czym jest Node.JS? Dla osób niewtajemniczonych - Jest to środowisko programistyczne stworzone do tworzenia webaplikacji w jezyku Javascript. Jedną z kluczowych kwestii jest to, że działa on po stronie serwera, a nie klienta jak "normalny Javascript" w przeglądarce. Możliwości Node.JS są dodatkowo rozbudowane o moduły stworzone dla niego oraz menadzer pakierów npm. (Shoutbox na forum jest napisany w Node.JS, abstrahując).
No dobrze, czyli jak to miałoby wyglądać? Mój projekt dzieli się na 3 elementy:
Skompilowany Node.JS przy użyciu Android NDK. Wykonane
Serwer Node.JS uruchamiany podczas startu systemu który ma na celu komunikację z najniższą warstwą Firefox OSa, Gonkiem. Ma pozwalać na takie możliwości jak - komunikacja z powłoką systemową Linuksa, zmiana zarządcy procesora, modyfikacja interfejsu Gaia, dodatkowa kontrola urządzeń, zdalne sterowanie urządzeniem itd. W trakcie tworzenia
Biblioteka dla developerów która pozwoli na komunikowanie się aplikacji z serwerem. W trakcie tworzenia
Jak aktualnie wygląda projekt?
- Skompilowany i uruchomiony Node.JS na telefonie: http://screencloud.net/img/screenshots/280c6eadce92bf256cac4d6983d998ae.png
- Dołączanie kodu HTML do interfejsu Gaia: http://imgur.com/a/4NUNg
- Powłoka systemu: http://screencloud.net/img/screenshots/24023414f9fbd9b8df7b700bc12307e8.png
- System uprawnień: http://www.youtube.com/watch?v=IDYfVFdxMqA
Przy okazji zapraszam osoby zainteresowane tworzeniem aplikacji na Firefox OS, portowaniem systemu itd na oficjalną stronę Mozilli: https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS