Open-source programové vybavení pro průmyslové systémy
Snaha o co nejmenší náklady na programové vybavení vysunula v poslední době do popředí zájmu jeho tvůrců i uživatelů – zákazníků produkty vycházející z tzv. open-source aktivit. Tato skutečnost stále vede k mnoha polemikám na téma, jak demonstrovat spolehlivost a doložit kvality nabízených open-source řešení. Článek charakterizuje aktuální stav vývoje v oblasti průmyslových systémů s ohledem na rostoucí vliv open-source řešení.
1. Úvod
V současnosti je stále častěji používán pojem open-source k označení určité skupiny programového vybavení vyznačující se otevřeností zdrojového kódu. Mnohdy je však tento pojem chápán nesprávně či vykládán příliš populární formou. Důsledkem je, že ať již úmyslně či nikoli, bývá programové vybavení označováno za open-source, což je ale zavádějící. S tím je spjato i nahlížení na takto označené programové dílo ohledně jeho spolehlivosti a možnosti použití v průmyslových systémech.
2. Definice open-source
Pojem open-source je používán pro označení metodiky vývoje programového vybavení založené na otevřeném programovém kódu, na jehož vývoji se podílí skupina dobrovolníků (vývojářů) vzájemně propojených pomocí sítě Internet.
Z historického hlediska je možné vysledovat původ myšlenky volného šíření zdrojového kódu programového vybavení do 80. let dvacátého století a počátků projektu GNU (GNU’s Not Unix). V roce 1985 vznikla nadace FSF (Free Software Foundation) [4], zastřešující myšlenku tzv. svobodného softwaru (angl. free software) a kladoucí si za cíl tato práva a svobody pro koncového uživatele:
spouštět program za jakýmkoliv účelem,
studovat, jak program pracuje, a přizpůsobit ho svým potřebám (předpokladem k tomu je volný přístup ke zdrojovému kódu),
redistribuovat kopie podle svobodné vůle,
vylepšovat program a zveřejňovat jeho zlepšení, aby z nich mohla mít prospěch celá komunita (předpokladem je opět přístup ke zdrojovému kódu).
Dalším evolučním krokem byl vznik iniciativy OSI (Open-source Initiative) v roce 1998. Přesná definice OSD (Open-source Definition) v pojetí OSI je uvedena ve [3]. Tato definice se zaměřuje na ryze technické a licenční záležitosti. Nic však neříká o věcech, jako je problematika řízení, psychologie a organizační struktura open-source projektů, které mohou zásadně ovlivnit dosaženou spolehlivost.
Z porovnání OSI a FSF lze vyvodit, že se shodují ve věcech, jako je dostupnost zdrojového kódu, možnost jeho modifikace atd. Naproti tomu se zásadně rozcházejí v oblasti otázek licencování a finančních zisků plynoucích z programového vybavení s otevřeným zdrojovým kódem. Obecně lze na OSI pohlížet jako na iniciativu umožňující prostřednictvím licenční politiky zpřístupnit a zatraktivnit programové vybavení založené na otevřeném zdrojovém kódu pro podnikatelské subjekty. V praxi to znamená, že jednotlivcům a firmám nic nebrání, při dodržení patřičných licenčních ujednání [3], v tom, zcela legitimně vydělávat na open-source projektech peníze.
3. Charakteristika open-source projektů
K tomu, aby projekt získal označení open-source, je nutné naplnit kritéria definovaná OSD. To však vůbec nestačí k tomu, aby byl projekt schopen se dále rozvíjet. Mezi klíčové součásti, kterými disponuje každý aktivní projekt, patří:
komunita: jasně vymezená skupina lidí spojená s vývojem programového vybavení, popř. využívající výsledný produkt a poskytující zpětnou vazbu samotným tvůrcům,
motivace: hybná síla vývoje, stimul pro jednotlivce (morální, osobní uspokojení atd.) nebo organizaci (finanční efekt, získání trhu, závislost na open-source produktu atd.) přispět k vývoji a výsledky svého snažení volně poskytnout ostatním k užívání,
vývojáři: na rozdíl od uzavřených projektů zde vývojáři vystupují jako uživatelé, kdy produkt vyvíjejí ovlivněni tím, že jej využívají,
zdokonalovací cyklus: v procesu vývoje se stále cyklicky střídají dvě fáze, z nichž v první jsou markantně doplňovány nové vlastnosti a ve druhé následuje několik drobných úprav, které v závěru vyústí v další významné zlepšení; tento iterační cyklus, založený na těsné zpětné vazbě a neustálém vylepšování, je specifický pro open-source projekty (obr. 1),
modulárnost: decentralizovaný charakter vývoje, vycházející z geografického rozmístění zúčastněných vývojářů, vedl k rozložení řešeného problému do dílčích, snáze spravovatelných celků, které vzájemně mezi sebou komunikují přes pevně stanovené rozhraní.
Obr. 1. Vývoj vlastností programového vybavení v čase
Dále se lze, v závislosti na konkrétním projektu, setkat s různými formami těchto součástí:
licencování a obchodní model: v závislosti na oblasti, do které je daný projekt směrován, mohou zvolená licence a obchodní model (podmínky) výrazně ovlivnit účast dalších stran schopných podpořit projekt,
rozhodovací proces: velké projekty mají pevně stanovenu vnitřní hierarchii, kde jsou jednotlivým členům přiřazeny správní funkce a jakákoliv změna je diskutována a musí být odsouhlasena před tím, než bude uskutečněna,
výchozí situace: zahrnuje zahájení projektu, kdy může jít o vývoj od počátku či rozvinutí a přepracování dosavadního projektu (pozastavený open-source nebo proprietární projekt),
dokumentace a testování: důležitý článek pro pochopení funkce programu a jeho další vývoj a použití; ze strany vývojářů je na tvorbu dokumentace pohlíženo jako na „nutné zlo„, ale jsou to právě oni, kdo vědí o systému nejvíce; za zdroj informací je stále považován zdrojový kód a existuje několik způsobů, jak automaticky generovat patřičnou programovou dokumentaci [1].
4. Komerční použití open-source
V zásadě se lze v současnosti setkat s těmito formami využití open-source programového vybavení ve spojitosti s komerčním použitím:
poskytování služeb spojených s používáním open-source programů (instalace a správa systému, sestavení programového vybavení, poradenství, doplnění souhrnu uzavřených aplikačních programů atd.),
platforma poskytující prostředky pro vývoj komerčních aplikací a použití konečných řešení,
vývoj open-source programového vybavení na zakázku (ovladače hardwaru, komunikační a testovací moduly atd.).
Vývoj v minulých letech přilákal k aktivní účasti na rozvoji open-source programového vybavení mnoho firem. Mezi hlavními podněty lze vysledovat možnosti inovace, podporu kreativity, snížení nákladů a v neposlední řadě vlastní zviditelnění v této dynamicky se rozvíjející oblasti. Postupně došlo k provázání a doplnění původní skupiny dobrovolníků, většinou mající kořeny na akademické půdě, s komerčními subjekty schopnými finančně podpořit vybrané projekty.
5. Licence a cena za open-source
Open-source licence [3] lze v zásadě rozdělit do dvou skupin.
První skupinu tvoří licence, které vycházejí z open-source hnutí a jejichž úkolem je chránit programátora jako tvůrce kódu a jeho práci. Tyto licence obvykle nijak neomezují úpravy a distribuci zdrojového kódu, ale jejich cílem je zajistit maximální otevřenost a zpětnou návratnost. Proto často ukládají povinnost při distribuci upraveného produktu zveřejnit i jeho zdrojový kód. Nejrozšířenějšími příklady těchto licencí jsou GPL, LGPL a BSD (to zdaleka nejsou všechny). Tyto tři příklady licencí demonstrují základní rozdíl při pohledu na zdrojový kód. Licence GPL (GNU General Public License) je v tomto ohledu nejvíce restriktivní, protože ukládá povinnost při distribuci aplikace odvozené z GPL distribuovat také zdrojový kód výsledné aplikace a tato povinnost platí např. i při pouhém spojení (link) s knihovnou GPL. Licence LGPL (GNU Lesser General Public License) je liberálnější a počítá s možností použití ve formě knihovny a nevyžaduje v takovém případě zveřejnění zdrojového kódu. Členem nejliberálnější skupiny licencí je BSD (Berkeley Software Distribution), která neobsahuje téměř žádné restrikce.
Ve druhé skupině jsou licence vytvořené komerčními firmami. Tyto firmy většinou chtějí určitým způsobem otevřít svůj kód, ale zároveň je jejich cílem si nad ním udržet kontrolu. Firemní licence většinou omezují používání zdrojového kódu pouze na studium a testování, ale nedovolují vytvářet na základě zveřejněného kódu odvozené aplikace. Příkladem takové licence je CDDL (Common Development and Distribution License), nabízená firmou Sun Microsystems.
Takže částí z „ceny„ za používání open-source prostředků může být pro komerční firmu nutnost zveřejnit kód, který byl odvozen z open-source produktu. Tato podmínka se velmi často jeví jako „nepochopitelná“ a manažeři firem jen velmi neradi slyší, že by firma měla něco zdarma zveřejňovat. Je třeba se na tento požadavek dívat jako na výměnný obchod, kde nejsou platidlem peníze, ale vložená práce.
Další náklady je třeba vynaložit, aby firma měla odborníky, kteří umějí s open-source produkty pracovat. Náklady jsou kombinací odměny odborníka, školení a podpory, která existuje i pro open-source produkty. Položka „podpora„ je podobná jako při použití komerčního produktu, protože i tam jsou velmi podobné požadavky a podmínky. Je třeba říci, že oproti všeobecnému přesvědčení existují školicí a poradenské firmy pro open-source řešení. Není jich tolik jako pro komerční řešení, ale kvalita je na srovnatelné úrovni.
6. Struktura a kvalita dostupných řešení
Škála dostupného open-source programového vybavení je velice rozmanitá [5], [6]. Jsou zde řešení od plnohodnotných operačních systémů, přes rozličné uživatelské aplikace až po úzce specializované programy. Skladba programů byla v počátcích zaměřena na oblast serverových aplikací vycházejících z koncepce operačního systému Unix a normy Posix (Portable Operating System Interface). Tato skutečnost umožnila vytvářet programové vybavení přenositelné mezi různými hardwarovými a softwarovými základnami.
Stálou snahou tvůrců programového vybavení je pokrýt co největší množství hardwaru (procesorové jednotky, základní desky, řadiče, grafické karty atd.). Vše je však přímo úměrné dostupnosti dokumentace k danému zařízení, obecné rozšířenosti daného hardwaru v komunitě vývojářů či snaze organizace nebo skupiny lidí nabídnout podporu daného typu zařízení. Z pohledu průmyslové automatizace a vestavných systémů převládají procesory ARM, i386 a PowerPC [7], kde je v současnosti podpora na velmi dobré úrovni.
Při použití open-source programového vybavení pokládají firmy za největší problémy licenční politiku v této oblasti, malý počet ovladačů, neodpovídající rozsáhlé nabídce hardwarových komponent, a velikost výsledného obrazu aplikace pro uložení do paměti flash. Je zřejmé, že komerční řešení speciálně navržená pro řídicí systémy mohou vykazovat lepší vlastnosti než např. univerzální open-source řešení, které bylo původně navrženo pro serverové systémy (např. QNX Neutrino versus Linux RTAI).
Jednou z nejdůležitějších vlastností, kterou požadují náročné aplikace, je certifikace a dodržení norem pro danou kategorii zařízení. Získání patřičného certifikátu je každým výrobcem náležitě prezentováno a vyzdvihováno. Zde je možné jmenovat např. normy ARINC 653 a DO-178B. Z informací dostupných na internetu vyplývá, že neexistuje mnoho open-source řešení, která by splňovala etablované standardy pro průmyslovou automatizaci. Význam certifikátů a dodržování norem jako etalonu kvality jsou zcela nezpochybnitelné. Praxe však poskytuje množství příkladů, kdy i systémy splňující vše potřebné zklamaly a mnohdy se podařilo zabránit katastrofě jen náhodou.
Obr. 2. Závislost spolehlivosti programového vybavení [8]
Na jedné straně proto v současné době stojí zarputilí zastánci (výrobci) proprietárních systémů, poukazující na slabiny open-source přístupu, na druhé straně odborná veřejnost, nemající nic mimo pozitivní, praxí nabyté zkušenosti. K prezentovaným závěrům jednotlivých stran je vždy třeba přistupovat s rozvahou. Tvorba programového vybavení je velice náročná úloha, v relaci s náročnými požadavky kladenými na výsledné aplikace. Nadšení pro daný typ operačního systému, aplikace apod. by však nikdy nemělo vést k bezmyšlenkovitému prosazování toho či jiného řešení (obr. 2).
7. Významné open-source projekty
Jaký význam bude přisouzen tomu kterému open-source projektu, je do značné míry věcí úhlu pohledu i subjektivního názoru. Projekty pokládané autory tohoto článku za významné se zřetelem na průmyslovou informatiku jsou uvedeny a stručně charakterizovány v tab. 1.
Tab. 1. Významné open-source projekty hard real-time
Označení/webová stránka projektu |
Charakteristika projektu |
Mozilla http://www.mozilla.org |
Počátky projektu vedou k firmě Netscape, která uvolnila zdrojové kódy svého prohlížeče. Projekt se postupně rozvinul v sadu internetových aplikací, obsahující webový prohlížeč, e-mailový klient, editor webových stránek atd. |
Linux http://www.linux.org |
Linux je svobodný operační systém unixového typu, původně vytvořený Linusem Torvaldsem a dále rozvíjený vývojáři z celého světa. Ve skutečnosti je Linux pouze holé jádro operačního systému. Celý systém je ale složen ze dvou hlavních částí. První je již zmíněné jádro a druhou část tvoří systém GNU (GNU’s Not Unix). Pro názornost: Verze linuxového jádra 2.6.10 celkem obsahuje 14 000 zdrojových souborů o celkové velikosti 220 MB, což představuje asi 5 milionů řádků zdrojového kódu v jazyce C [2]. |
Jboss http://www.jboss.com |
Názorná ukázka toho, že i open-source řešení mohou být velká a životaschopná i v komerční sféře. Jboss je aplikační server pro Java Framework a je kompletně open-source. Firma Jboss, která za ním stojí, profituje pouze z prodeje podpory tohoto řešení. |
RTAI http://www.rtai.org |
RTAI (Real-Time Application Interface) je rozšířením linuxového jádra pro práci v reálném čase. Doplněním RTAI do systému lze řídit v reálném čase v oblasti aplikací hard real-time. |
Ethernut http://www.ethernut.de |
Open-source projekt pro tvorbu vestavných ethernetových zařízení na bázi jednočipových mikropočítačů. Umožňuje připojit a ovládat průmyslové systémy po lokální síti a prostřednictvím internetu. |
QT, Qtopia http://www.trolltech.com |
Firma Trolltech je autorem sad nástrojů QT a Qtopia, platformy pro vývoj aplikací (Qtopia je odlehčená varianta úplné sady QT, určená pro vestavná a mobilní zařízení). Tyto sady mají duální licenci, zajišťující každému, kdo na jejich bázi bude chtít vytvořit aplikaci GPL, přístup ke zdrojovému kódu; naopak pro komerční použití je k dispozici běžná komerční licence. Tato strategie duálního licencování je výhodná jak pro open-source komunitu, tak i pro komerční firmy. |
BusyBox http://www.busybox.net |
Projekt BusyBox je určen pro malé a vestavné systémy. Cílem je integrovat do jednoho spustitelného souboru základní sadu příkazů a nástrojů pro správu unixového stroje. Zdrojový kód je optimalizován na velikost a omezené paměťové a výpočetní zdroje. V současnosti je využíván v mnoha vestavných systémech s operačním systémem Linux a při instalaci většiny linuxových distribucí. |
Newlib http://sourceware.org/newlib
uClibc http://uclibc.org
diet libc http://www.fefe.de/dietlibc |
Společným znakem uvedených knihoven je realizace knihovny libC pro vestavné systémy. Knihovny umožňují vyvíjet programového vybavení v jazyce C obdobně jako s knihovnou libC, jen s mnohem menšími požadavky na paměťový prostor. |
RTEMS www.rtems.org |
Plnohodnotný operační systém reálného času pro vestavné systémy. Projekt je spravován firmou OAR, která spolupracuje s komunitou vývojářů na dalším rozvoji operačního systému. |
8. Závěr
Úspěchy open-source programového vybavení ukázaly, že tato metoda vývoje je schopna vytvořit kvalitní a spolehlivé programové vybavení. Základem je komunita vývojářů, geograficky rozmístěná po celém světě. Tato skutečnost se odrazila ve vzniku specifických metod vývoje. Většina skutečně velkých projektů je více nebo méně podporována významnými firmami (IBM, Novell, Sun Microsystems atd.), které si uvědomují potenciál skrytý v open-source vývojářích a metodách. Nelze zobecňovat tvrzení, že open-source je dobrý nebo špatný. Je nezbytné pečlivě analyzovat jednotlivé projekty či skupiny projektů. V některých případech vychází lépe čisté open-source řešení, jindy zase kombinace s komerčními programovými prostředky (např. operační systém Linux s databází Oracle). Existují však oblasti, kde je stále z různých důvodů nutné použít čistě komerční řešení.
Literatura:
[1] HEESCH, D.: Doxygen. [on-line], poslední revize 2005-01-29 [cit. 2005-01-30]. URL: http://www.doxygen.org.
[2] CHERRY, J.: Linux 2.6 Compile Statistics. [on-line], poslední revize 2005-03-29 [cit. 2005-03-29]. Dostupné na URL: http://developer.osdl.org/~cherry/compile/.
[3] Open-source Initiative. Open-source Initiative homepage. [on-line], poslední revize 2005-03-29 [cit. 2005-03-29]. Dostupné na URL: http://www.opensource.org.
[4] Projekt GNU. Stránky o svobodném software. [on-line], poslední revize 2004-12-29 [cit. 2005-03-29]. Dostupné na URL: http://www.gnu.cz/article.php?id_art=29.
[5] SourceForge.net: Open-source software development web site. [on-line], poslední revize 2005 [cit. 2005-09-19]. Dostupné na URL: http://sourceforge.net/.
[6] Freshmeat.net: Index of Unix and cross-platform software. [on-line], poslední revize 2005 [cit. 2005-09-19]. Dostupné na URL: http://freshmeat.net/.
[7] LinuxDevices.com: Embedded Linux market snapshot – 2005. [on-line], poslední revize 2005 [cit. 2005-09-19]. Dostupné na URL: http://www.linuxdevices.com/articles/AT4036830962.html.
[8] BRAUN, D. – GLENN, N:. An open book. [on-line], poslední revize 2003-09-01 [cit. 2005-09-15]. Dostupné na URL: http://www.isa.org.
Pavel Čeleda, Tomáš Koníř,
katedra komunikačních a informačních systémů, Univerzita obrany, Brno
(pavel.celeda@unob.cz)
(tomas.konir@unob.cz)
Článek vychází z textu příspěvku Spolehlivost open-source programového vybavení, otištěného ve sborníku konference TD 2005 – Diagon 2005, Zlín, 26. dubna 2005.
|