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.