Darmowe oprogramowanie na rynku elektroniki

| Technika

Linux ma już prawie 20 lat. Na początku lat 90. ubiegłego wieku fiński programista Linus Torvalds ogłosił pierwszą wersję tworzonego przez siebie małego i otwartego systemu operacyjnego Linux. Z perspektywy dwóch dekad można przyjąć, że Linus rozpoczął rewolucję zapoczątkowującą konkurencję dla komercyjnych systemów operacyjnych.

Darmowe oprogramowanie na rynku elektroniki

System Linux i całe bezpłatne oprogramowanie potrzebowały dłuższego czasu i wielkiego nakładu pracy, aby wyrobić sobie mocną pozycję na rynku komputerów biurowych. Rynek urządzeń przenośnych, na którym dominacja Microsoft nie jest tak oczywista, okazał się dużo bardziej przyjazny dla otwartych systemów operacyjnych. Szczególnie kryzys finansowy i poszukiwanie wszelkich możliwych oszczędności spowodowały wzrost zainteresowania darmowym oprogramowaniem.

Zalety i wady stosowania open source w urządzeniach elektronicznych

Rynek urządzeń elektronicznych nie jest tak jednolity, jak rynek komputerów biurowych. Trudno sobie wyobrazić zastosowanie systemu operacyjnego w bardzo prostych urządzeniach przeznaczonych do jednego zadania. Coraz częściej spotyka się jednak skomplikowane systemy oferujące łączność z Internetem, przechowujące duże ilości danych, korzystające z dużych zewnętrznych pamięci i jednocześnie obsługiwane za pomocą rozbudowanych interfejsów graficznych.

W tym przypadku często okazuje się, że zastosowanie droższego, ale bardzo wydajnego mikroprocesora i budowanie aplikacji na bazie systemu operacyjnego może być bardzo atrakcyjną alternatywą. Zalet jest bardzo wiele: systemy operacyjne zawierają stosy różnych protokołów (Ethernet, Bluetooth, USB itp.), obsługują różne systemy plików oraz różne urządzenia peryferyjne. Oprogramowanie to jest bardzo stabilne i przetestowane w najróżniejszych warunkach.

Okazuje się, że lepiej jest dokładnie poznać istniejące rozwiązanie i ewentualnie dopasować je do naszych potrzeb, niż pisać wszystko od początku. Liczba urządzeń, dla których istnieją sterowniki dla Linuksa jest ogromna i stale wzrasta. Nawet jeśli producent nie zadbał o wsparcie dla tego systemu (co jest już rzadkością), to na pewno istnieje grupa osób, które sterowniki napiszą na własne potrzeby.

W tym przypadku rozszerzenie funkcjonalności naszego urządzenia o np. komunikację Bluetooth, obsługę dźwięku, kamery czy myszki wymagać będzie tylko załadowania odpowiedniego sterownika oraz podłączenia urządzenia przez port USB, tak jak w zwykłym PC. Trzecią bardzo ważną, choć nie zawsze bezdyskusyjną zaletą będzie możliwość programowania w różnych językach. Małe specjalizowane systemy programowane są najczęściej w języku Ansi C.

Programy dla systemu operacyjnego możemy pisać w każdym języku, dla którego powstał kompilator. Aplikacje dla naszego urządzenia będą mogli pisać zarówno programiści Ansi C, C++, jak i Javy, Pythona czy PHP. Wybór będzie w małym stopniu zależał od możliwości technicznych platformy, a bardziej od cech i przeznaczenia samego języka. Jednak system Linux ma również kilka wad. Pewne jest to, że nakład pracy, jaki trzeba zainwestować w poznanie nowej technologii, jest duży.

W przypadku darmowych rozwiązań musimy poznać je bardzo dokładnie, gdyż nie możemy liczyć na wsparcie twórców. Inżynierowie pracujący nad rozwojem urządzeń elektronicznych przyzwyczajeni są do dużego wsparcia ze strony dostawców. W standardowym procesie firma, decydując się na dany mikroprocesor, kompilator, środowisko programistyczne czy komercyjny system operacyjny, płaciła za pełny zestaw dość duże pieniądze.

W ramach tej umowy osoby używające zestawu narządzi mogły spodziewać się szybkiej i konkretnej pomocy w przypadku napotkania trudności. Można było także liczyć na wsparcie i szkolenia mające na celu wydajne wykorzystywanie nabytych narzędzi. W przypadku darmowego systemu nie można na to liczyć. Nawet jeśli znajdziemy ewidentny błąd w wykorzystywanej przez nas aplikacji, nie ma gwarancji, że ktokolwiek ją szybko zlokalizuje i naprawi.

Musimy być świadomi tego, że za darmo otrzymujemy produkt bez żadnej gwarancji i bez jakiegokolwiek wsparcia, co zresztą jest zapisane w warunkach licencyjnych. Bardzo ważną sprawą na etapie poszukiwania darmowego rozwiązania jest zapoznanie się z dostępnymi licencjami. Darmowe oprogramowanie, nawet jeśli jest dostępne w sieci w postaci kodu źródłowego, nie zawsze może być zastosowane w dowolny sposób.

W gąszczu licencji

W 1985 roku (jeszcze przed powstaniem Linuksa) założona została Fundacja Wolnego Oprogramowania (Free Software Fundation). Organizacja ta ma na celu promowanie i wspieranie rozwoju wolnego oprogramowania, a w szczególności koordynację i weryfikację nowych licencji. Podstawowe cechy wolnego oprogramowania opublikowane przez FSF to:

  • wolność uruchamiania programu w dowolnym celu (wolność 0),
  • wolność analizowania, jak program działa i dostosowywania go do swoich potrzeb (wolność 1),
  • wolność rozpowszechniania niezmodyfikowanej kopii programu (wolność 2),
  • wolność udoskonalania programu i publicznego rozpowszechniania własnych ulepszeń, dzięki czemu może z nich skorzystać cała społeczność (wolność 3).

Są to cztery podstawowe cechy, jakie musi spełniać licencja, aby starać się o status Open Source.

Wybrane licencje open source

GNU General Public License (GPL) – jest najbardziej rozpowszechnioną licencją. Ponad 70% kodu opublikowanego na Source Forge jest udostępnianych na licencji GPL. Większość licencji wolnego oprogramowania jest kompatybilna z GPL. Oznacza to, że kod napisany w oparciu o inne licencje może być dołączany do GPL.

Licencja GPL nazywana jest często „licencją wirusową”. Wynika to z faktu, że każdy projekt zawierający moduły na licencji GPL musi sam zostać opublikowany w ramach GPL. Dyskusyjną i nierozstrzygniętą dotąd sprawą jest prawo dynamicznego linkowania obcego oprogramowania z bibliotekami GPL.

The GNU Lesser General Public License (LGPL) – wcześniej rozwijana jako GNU Library General Public License. Przeznaczona jest głównie do bibliotek, choć używana często przez aplikacje składające się z wielu współpracujących modułów (np. OpenOffice). Jest kompromisem pomiędzy restrykcyjną licencją GPL a bardziej liberalnymi licencjami, takimi jak BSD czy X11. Nakłada obowiązek upowszechniania i dostępności dla części plików składowych, podczas gdy część projektu może pozostać zamknięta. Dzięki temu pozwala na stworzenie projektu, w skład którego wchodzą moduły nieobjęte licencją LGPL lub GPL.

BSD/X11 – Berkeley Software Distribution License powstała na Uniwersytecie Kalifornijskim w Berkley. Licencja jest bardzo liberalna i bardzo przyjazna do zastosowań w przemyśle. Pozwala na dowolne modyfikowanie i rozprowadzanie kodu, a nawet używanie kodu w produktach zamkniętych i nieudostępnianie go. Jedynym warunkiem, jaki musi spełnić produkt korzystający z oprogramowania BSD, jest dołączenie do produktu informacji o autorach oryginalnego kodu oraz treści licencji.

Oryginalna licencja BSD wymagała dołączania dodatkowo tzw. klauzuli ogłoszeniowej (listy podziękowań dla autorów), jednak w obliczu nadmiernego rozrastania się tej części zrezygnowano z tego wymagania w zmodyfikowanej licencji BSD. Flagowymi produktami opartymi na tej licencji są systemy FreeBSD, NetBSD i OpenBSD. Aplikacje użytkownika oparte o BSD to np. Chrome firmy Google, OpenSSH lub PostgreSQL. Licencja X11 nakłada te same obowiązki i daje te same prawa, co zmodyfikowana licencja BSD (bez klauzuli ogłoszeniowej).

Domena publiczna (Public Domain) – istnieje niezależnie od licencji Fundacji Wolnego Oprogramowania, ale jest używana do określania praw (a właściwie ich braku) do oprogramowania. Włączenie efektów swojej pracy do domeny publicznej oznacza zrzeczenie się wszelkich praw do niej oraz zezwolenie na dowolne ich przetwarzanie i wykorzystywanie. Pojęcie domeny publicznej powstało równolegle z rozwojem patentów i praw autorskich dla określenia warunków, w jakich one wygasają.

Darmowe systemy operacyjne

Lista darmowych systemów operacyjnych jest bardzo długa. Decydując się na jeden z nich, powinniśmy w szczególności wziąć pod uwagę ograniczenia i obowiązki wynikające z licencji oraz ilość dostępnej dokumentacji. Lista przedstawiona poniżej zawiera krótkie opisy bardziej rozpowszechnionych systemów, poczynając od największych (opartych na kernelu Linuksa i wymagających jednostki MMU), a kończąc na prostym systemie, który można uruchomić na mikroprocesorze ATtiny 2313.

OpenWrt

Bardzo intensywnie rozwijana dystrybucja działająca na bazie kernela Linuksa wersji 2.6. Stworzona przez firmę Linksys i udostępniona za darmo na jej stronach internetowych (licencja GPL). Udostępnienie pełnego oprogramowania zwiększyło sprzedaż routerów firmy Linksys i pozwoliło na dowolne modyfikacje sprzętu. Dystrybucja ma także grupę zwolenników i użytkowników w Polsce (www.openwrt.pl). Na rodzimym rynku dostępna jest płyta Mmnet1002 oferowana przez firmę Propox.

Produkt sprzedawany jest z wgranym systemem OpenWRT i umożliwia wygodne podłączenie dodatkowych urządzeń (wprowadzone porty IO). Pracę z systemem OpenWRT można też zacząć, kupując bezprzewodowy router pozwalający na wgranie tego systemu. W tym przypadku będziemy jednak zmuszeni do modyfikacji sprzętu i dolutowywania wyprowadzeń. Obsługiwane architektury to: ARM9, MIPS, AVR32, PowerPC, MIPS64, x86, i386.

μClinux

Kernel systemu Linux w formie znanej z komputerów PC, wykorzystujący mechanizmy pamięci wirtualnej i przez to wymagający jednostki MMU. System μClinux (licencja GPL) jest wersją Linuksa przystosowaną do pracy w systemach z prostszymi mikroprocesorami (np. ARM7). Powstał na bazie kernela w wersji 2.0 i dzięki dużej popularności zaczął rozwijać się równolegle z głównym kernelem systemu.

Aktualnie μClinux jest dołączony do głównej linii systemu Linux i rozwija się równolegle z nim. μClinuxdist jest pełnym pakietem oprogramowania zawierającym biblioteki, aplikacje i narzędzia. Obsługiwane architektury to: ARM7, ARM9, Freescale M68k, Renesas H8, Intel i960, Intel i386, MIPS, NEC V850E, PowerPC

FreeRTOS

Free RTOS (licencja zmodyfikowana GPL) jest najbardziej rozwiniętym i najlepiej opisanym systemem pracującym na małych platformach, nawet 8-bitowych. Powstało wiele aplikacji na różne platformy i rozwiązania sprzętowe, które można pobrać ze strony projektu (często z dokładnym opisem konfiguracji sprzętowej).

Można polecić przykładową aplikację FreeRTOS stworzoną dla mikroprocesora ATMega32. 2kB pamięci RAM dostępnej w tym mikroprocesorze pozwala na uruchomienie 10 zadań, co raczej nie pozwoli na stworzenie wartościowego produktu, ale umożliwi szybkie zapoznanie się z możliwościami systemu. Zmodyfikowana licencja GPL pozwala na zamknięcie (nieudostępnianie) tych części kodu, które jedynie korzystają z API FreeRTOS. Wszelkie zmiany wprowadzone do samego systemu muszą być udostępnione. Obsługiwane architektury to: ARM7, ARM9, AVR32, AVR Atmega, MSP430, PIC18, PIC24, PIC32, Freescale M68k, Renesas H8, Intel i960, Intel i386, MIPS, NEC V850E, PowerPC

AvrX

W porównaniu z poprzednimi systemami ciężko jest nazwać AvrX (licencja LGPL) systemem operacyjnym, jednak spełnia on jego podstawowe funkcje. Rdzeń systemu, napisany w asemblerze mikroprocesorów firmy Atmel, zajmuje w zależności od konfiguracji od 500 do 700 rozkazów. Po skompilowaniu pełnej wersji zajmuje 1,5kB pamięci Flash i wymaga ok. 512 bajtów pamięci operacyjnej.

Pozwala na uruchomienie ok. 10 równoległych zadań. Na stronie Larry'ego Barello – twórcy systemu – dostępny jest projekt robota, w którym wykorzystano mikroprocesor ATtiny 2313 z 2kB pamięci Flash i 125B pamięci RAM, pracujący w oparciu o system AvrX. Obsługiwane architektury procesorów: AVR Atmega, ATtiny.

Wnioski

Pojawienie się wolnego oprogramowania było wielkim przełomem. W momencie, kiedy bogate korporacje prześcigały się w tworzeniu nowych funkcji i coraz bardziej finezyjnych gadżetów, duża rzesza użytkowników komputerów zapragnęła tanich narzędzi, zapewniających podstawowe funkcje użytkowe. Takie oczekiwania zaspokaja najczęściej wolne oprogramowanie. Procesy, które zachodzą na rynku oprogramowania użytkowego, pokazują, że otwarty kod nie zastąpi całkowicie produktów płatnych.

Specjalizowane systemy, takie jak Altium Designer (projektowanie płytek PCB), Catia (projekty mechaniczne) czy Autocad (projekty architektoniczne) nie znikną z rynku i nie zostaną zastąpione przez produkty darmowe. Jednak możliwe jest, że wolne oprogramowanie wymusi na producentach systemów komercyjnych większe starania zaspokajania potrzeb rynku i większą specjalizację oferowanych pakietów.

Bartłomiej Grześkowiak