POCZTA  
Login       Haslo         
                                          

OpenSource - zmiana sposobu myślenia o tworzeniu oprogramowania

Najbardziej widoczną częścią świata OpenSource, są aplikacje z kodem źródłowym upublicznionym w Internecie. Programy te rozwijają się zazwyczaj bardzo szybko, a ich niezawodność zjednuje im liczne rzesze sympatyków, zniechęconych do często wadliwych i wbrew pozorom często pozbawionych opieki technicznej rozwiązań czysto komercyjnych, opartych na zamkniętych źródłach.

"Okrętami flagowymi" armady spod znaku Wolnego Oprogramowania są między innymi: Linux - bezpłatny system operacyjny z całkowicie dostępnymi źródłami; udoskonalany przez wiele lat, ewoluował z systemu przeznaczonego dla serwerów, gdzie liczy się niezawodność i zdolność do długiej, bezobsługowej pracy, do rangi systemu uniwersalnego, możliwego do wykorzystania również w biurach czy studiach graficznych, OpenOffice - darmowy pakiet biurowy, w niczym nie ustępujący komercyjnym rozwiązaniom oferowanym przez potentatów z branży, Apache - serwer WWW, czyli program odpowiedzialny za wysyłanie stron WWW do przeglądarki internetowej osoby odwiedzającej stronę, Mozilla - fantastyczna bezpłatna przeglądarka internetowa, m.in. praktycznie uniemożliwiająca zakażenie wirusami pochodzącymi z Internetu, KDE/GNOME - darmowe środowiska do pracy graficznej w systemie, będące swoistymi "nakładkami", upodabniającymi Linuksa do znanego wyglądu Windows i oferującymi możliwości komfortowej pracy nawet osobom dopiero rozpoczynającym przygodę z komputerami.

Ktoś może spytać, dlaczego aplikacje te są rozwijane mimo wydawałoby się oczywistego faktu, że nikt nie korzysta bezpośrednio na ich rozwijaniu? Odpowiedzi jest kilka, wymienię te najpowszechniejsze: ekonomia: zamiast pisać od nowa program dla swoich potrzeb, znacznie taniej jest zaadoptować już istniejący, nauka: analiza i pisanie kodu ogólnodostępnego to świetna szkoła dla młodych adeptów informatyki, sława: kto nie chciałby zobaczyć swojego nazwiska na liście płac hollywoodzkiego hitu kasowego? Na podobnej zasadzie działa magia Wolnego Oprogramowania; dodatkowo udział w znanym projekcie to znakomita autoreklama chociażby podczas rozmowy o pracę...


Bezpieczeństwo otwartego kodu

Dość częstym przytykiem, podnoszonym pod adresem rozwiązań OpenSource, jest kwestia jego bezpieczeństwa. Argumentuje się, że skoro oprogramowanie jest ogólnodostępne, to każdy może zajrzeć do środka i wyłapać błąd, który umożliwi mu np. włamanie na serwer internetowy obsługiwany przez wadliwie działający program.

Ile prawdy jest w powyższych stwierdzeniach? Otóż otwartość źródeł istotnie stwarza takie możliwości, jak opisano powyżej. Jest to jednak zaleta, a nie wada! Dlaczego? Chcąc odpowiedzieć na to pytanie, należy porównać oprogramowanie zamknięte z oprogramowaniem, którego kod dostępny jest publicznie:
Kupując oprogramowanie zamknięte, NIGDY nie mamy stuprocentowej pewności, czy producent nie umieścił w nim kodu, który np. wszystkie zaokrąglenia kwot faktur przeleje na jego konto [zdarzały się takie historie...], albo ostatniego dnia każdego miesiąca nie prześle naszych danych finansowych do jego siedziby przez Internet. Oprogramowanie otwarte, jakkolwiek nie wyklucza takiej możliwości, to jednak znacznie ją minimalizuje. W przypadkach skrajnych można po prostu przejrzeć podejrzany fragment kodu i sprawdzić, czy nie zawiera on poleceń, które w jakiś sposób są niebezpieczne dla naszych danych. Przypominając analogię z ciastkiem - kto nam da PEWNOŚĆ, że dane ciastko nie zostało doprawione arszenikiem, skoro nie mamy ani przepisu, ani nie możemy go upiec sami, a jedynie kupujemy go w cukierni?
Błędy w oprogramowaniu zamkniętym usuwane są czasem na żądanie klientów, czasem w momencie wypuszczenia nowej wersji programu, a czasem nigdy. W oprogramowaniu otwartym, błąd usuwany jest zazwyczaj bezpośrednio po jego wykryciu. A jeśli sami dysponujemy odpowiednio wykwalifikowanym personelem, możemy po prostu usunąć ten błąd sami.
Otwartość oprogramowania sprzyja pisaniu dobrych programów. Nikt trzeźwo myślący nie będzie narażał swojej opinii w środowisku programistycznym, wypuszczając źródła, z których wynika brak wiedzy, czy zwykłe niechlujstwo. Oprogramowanie zamknięte może być pisane dobrze, lecz nie musi - w końcu żaden klient nie zobaczy, w jaki sposób rozwiązaliśmy daną rzecz.

Otwarty kod a otwarte dane

Mitem, który niestety często powiela się w mediach, jest obawa, że otwarcie kodu spowoduje wyciek na zewnątrz firmy poufnych danych. "Skoro przecież wszystko widać..." Należy sobie w tym miejscu uświadomić ważne rozróżnienie: jawność kodu ani nawet jawność sposobu, w jakim zostały zapisane dane [czyli tzw. algorytmów szyfrujących] nie ma NIC WSPÓLNEGO z jawnością samych danych. Z matematycznego punktu widzenia, nawet znając sposób, w jaki dane zostały zaszyfrowane, nie mamy możliwości odczytania poufnych danych, jeśli nie dysponujemy kluczami niezbędnymi do ich odczytania. To zaś, czy danym kluczem dysponujemy, czy nie, nie ma nic wspólnego z otwartością czy zamknięciem oprogramowania, a jedynie z odpowiednio prowadzoną polityką bezpieczeństwa firmy - dostęp do ważnych danych powinien być chroniony na podobnych zasadach, co dostęp do firmowej kasy, a nie poprzez ukrywanie źródeł programu.

Jeśli chcielibyśmy na upartego stwierdzić istnienie JAKIEJKOLWIEK zależności między otwartością kodu a bezpieczeństwem danych, to jest to raczej zależność odwrotna. Posłużę się tutaj bardzo prostym przykładem: kto nam zagwarantuje, że w jakimś programie z zamkniętymi źródłami programista nie umieścił np. hasła CHOINKA, po wpisaniu którego można będzie odczytać wszystkie nasze dokumenty? W oprogramowaniu otwartym wszystko, co jest robione w celu zapewnienia bezpieczeństwa naszym danym, można sprawdzić naocznie - a więc sprawdzić również, czy programista nie zostawił nieszczęsnego hasła CHOINKA zapisanego "na sztywno" w programie. W oprogramowaniu zamkniętym - niejako z definicji - możliwości sprawdzenia takiego zagrożenia nie ma i nie będzie.


Właściwy wybór, czyli korzyści z OpenSource dla zleceniodawcy

OpenSource, przy wszystkich swoich zaletach, wydaje się być idealnym rozwiązaniem szczególnie dla dużych projektów informatycznych, gdzie podstawową rolę odgrywa bezpieczeństwo wdrożenia, a wdrażany system jest podstawowy dla działania firmy bądź organizacji.

Zalety wypływających z udostępnienia kodu zleceniodawcy:

- Bezpieczeństwo danych.
- Lepsza jakość kodu.
- Możliwość modyfikacji przez użytkownika.
- Zwiększone bezpieczeństwo wdrożenia - udostępnienie kodu gwarantuje zleceniodawcy uniezależnienie się od dostawcy oprogramowania w przypadku złej woli lub czynników trzecich [likwidacja firmy, zerwanie kontraktu, itp.] - mając źródła programów, modyfikujemy je we własnym zakresie lub po prostu przekazujemy je innej firmie jako podwykonawcy. Należy zauważyć, że wspomniany scenariusz nie umożliwia jakiegokolwiek wyłudzenia cudzej pracy - przekazanie kodu osobie trzeciej [czyli innemu podwykonawcy], jakkolwiek możliwe, wiąże się z koniecznością zapoznania się z kodem, znalezienia wykwalifikowanego personelu, etc. -Możliwość przekazania kodu nie jest więc furtką dla wyłudzaczy, ile raczej wyjściem awaryjnym dla zleceniodawcy w sytuacji, gdy zleceniobiorca nie może lub nie chce kontynuować pracy nad projektem.