OPROGRAMOWANIE OPEN SOURCE, "WOLNE", DARMOWE, DOBRE I UCZCIWE, STANDARDY.
====================================================================================================
Tytuł z pewnością zachęci wiele osób, natomiast ostrzegam, że większość z was nie przeczyta tutaj
tego co chce usłyszeć. Tylko moją opinie popartą logiką i faktami.
Co oznacza termin "open source". Dokładnie to co oznacza. Otwarte źródła - a więc dostępne do
obejrzenia. Ew. modyfikowania na swoje potrzeby. I nic więcej! Nie ma w tym terminie zawartej np.
darmowości. Albo czegokolwiek innego. Oprogramowanie open source może być jednocześnie darmowe. Nie
musi. Sam fakt, że jest open source nie oznacza, że jest lepsze. Choć jest to niewątpliwie dobra
praktyka.
Najlepszym przykładem z czasów, gdy względnie uczciwe praktyki biznesowe były normą nawet w
korporacjach, firma AT&T - w której wymyślono system UNIX, licencjonowała go komercyjnie,
jednocześnie zapewniając źródła.
Licencja obejmowała prawo użytkowania na jednym komputerze, czy też na każdym w ramach firmy, albo
na innych zasadach.
Źródła były dostępne. Co NIE OZNACZA, że można było je używać darmowo. Napisanie tego
oprogramowania wymagało pracy, więc firma ma prawo żądać za to pieniędzy. Jak każdy.
Co więc oznaczało "open source"? Że każdy użytkownik miał prawo np. zmodyfikować to oprogramowanie
we własnym zakresie do własnych potrzeb. Albo nawet rozpowszechnić tą modyfikację jeśli chciał.
Nadal jednak każdy kto chciał używać systemu AT&T UNIX musiał za to zapłacić.
Dodatkowo każdy mógł zweryfikować, czy to oprogramowanie robi rzeczywiście to co firma twierdzi w
instrukcji, że robi. A nie ma np. wytrychów.
Ponieważ to oprogramowanie pisali ludzie rozsądni było proste i logiczne, więc taka weryfikacja była
realnie możliwa, i to niedużym nakładem pracy.
Dzisiaj takich praktyk w oprogramowaniu komercyjnym się nie spotyka. Nic dziwnego. Korporacje nie
chcą by ktoś analizował, co naprawdę to robi. Po drugie ani korporacje ani nawet wiele firm
prywatnych nie chce by szeroka publiczność widziała jaki bajzel porobili ich specjaliści.
A zasada otwartych źródeł - oczywiście dobrowolna - powinna stawać się powszechna, a ludzie -
rozumiejąc po co to jest - oczekiwać tego. Wolny rynek zrobi resztę.
Oprogramowanie darmowe oznacza to co oznacza. Darmowe. Nie trzeba płacić. I nic więcej. Może a nie
musi być to oprogramowanie open source. Też nie oznacza to z definicji, że jest lepsze lub gorsze od
płatnego.
Oprogramowanie "wolne" naprawdę nic nie oznacza. Termin wolność odnosić się może do istoty żywej.
Nie do maszyny, czy też programu. Tak naprawdę oznacza to co każdy uzna lub ogłosi.
Sformułowanie dawniej używane "public domain" to w/g mnie najbliższe temu co uważam za "wolne"
oprogramowanie. Po prostu macie i używajcie. Róbta co chceta. Czyli danie wszystkim ludziom
PODARUNKU.
PODARUNEK, z definicji, oznacza, że dajesz a biorący bierze i jest to jego własność. A więc może
zrobić z tym co chce. Nawet przerobić, i sprzedawać w formie bez źródeł. Jeśli chcesz napisać
program i udostępnić szerokiej publiczności, to po prostu to zrób i tyle.
Nie trzeba żadnej licencji. Niektóre mniejsze i większe organizacje niekomercyjne, czy też ludzie
stosują jednak jakąś licencję. Jedynym ich celem jest dupochron prawny przez korporacjami, czy
ochrona własnego imienia. W takim żyjemy świecie, że ktoś chce zrobić innym prezent, a jeszcze może
być narażony na np. atak sądowy.
Na tym polega np. licencja BSD - dostajesz to i rób co chcesz, ale zgadzasz się z wszelkimi
konsekwencjami użycia tego produktu, i nie będziesz podawał nas do sądu. Dodatkowo cokolwiek
zrobione na podstawie tego oprogramowania nie może nosić jego nazwy.
Są też inne tego typu podobne licencje. MIT, Xorg itp. Nie jestem prawnikiem, ale o to z grubsza
chodzi. To jest tylko dupochron w chorym świecie.
Jest też definicja "wolnego" oprogramowania Richarda Stallmana. Nie wiem, jakie były jego cele w
młodości, czy szczere czy nie, lecz oceniam efekty.
W/g jego definicji program wolny objęty jest bardzo skomplikowaną prawnie licencją (i w każdej
kolejnej wersji jeszcze bardziej) GPL która mówi o tym, że jeśli użyjesz źródeł "wolnego"
oprogramowanie w swoim, to sam musisz udostępnić wszystkie źródła na tej samej licencji.
Z wolnością nie ma to nic wspólnego, natomiast z komunizmem - bardzo dużo. I podobnie jak w
komunizmie tworzy się środowisko korupcjogenne.
Proszę zauważyć, że w przypadku złamania przez kogoś tej licencji, generalnie Free Software
Foundation - organizacja Richarda Stallmana, jest organizacją która może podać jakąś firmę do sądu.
MOŻE ALE NIE MUSI. A teraz zastanów się. Używanie np. linuxa i innego oprogramowania w wielu
gotowych produktach (choćby routerach, modemach, itp. itp.) jest powszechne. Ile z tych produktów
udostępnia całość w wersji źródłowej. Niektóre tak, niektóre nie. Czemu nie w większości przypadków
sprawy w sądzie? A jak się zdarzy, to jest wielkie gadanie o tym na ich stronie. W żadnym wypadku
nie oskarżam Richarda Stallmana ani innych osób z Free Software Foundation o przyjmowanie łapówek.
Stwierdzam tylko, że stworzono środowisko korupcjogenne, mające bardzo wiele cech komunizmu. Czy
możliwość została wykorzystana czy też nie - nie wiem. Wiem tylko, od takich środowisk należy
trzymać się z daleka.
Oczywiście jeśli ktoś uważa, że podejście Stallmana jest dobre, nikt nie broni mu udostępniać
swojego oprogramowania na tej licencji. Na tym polega wolność. Można tez bez żadnej albo wymyślić
własną. Po prostu nie chcę, aby zawłaszczano sobie powszechne pojęcia jak wolność. A generalnie to
robi ta fundacja - twierdzi, że wolność to tylko tak jak oni mówią, wszystko inne to już nie jest
wolność.
Natomiast co to zmienia, jeśli nie kupujesz urządzenia, ale samemu używasz oprogramowania na swoim
komputerze?
Nic. Wtedy to nie ma znaczenia. Używaj programów które uważasz za dobre, i potrzebujesz. I tyle.
Uważaj jednak jako programista z wykorzystaniem ich jako składowej Twoich produktów. Sam używam
wielu programów na licencji GPL. Jak też wiele bez licencji - public domain, czy też na licencji
BSD. Każde spełnia swoje zadanie.
Pamiętam jednak, że to na jakiej licencji jest oprogramowanie nie jest dowodem wysokiej czy niskiej
jakości danego oprogramowania. No może poza licencjami które tak naprawdę są dzierżawą na czas
nieokreślony.
To pojęcie należałoby zdefiniować, bo to najbardziej interesuje każdego rozsądnego odbiorcę.
Czym powinno się charakteryzować?
Myślę, że najlepiej powiedział kiedyś Michał Anioł:
*** Perfekcji nie osiąga się wtedy, gdy nie da się niczego dodać. Lecz wtedy gdy nie da się już
niczego ująć. ***
Pomimo, że Michał Anioł programistą nie był, niech to hasło przyświeca każdemu dobremu programiście.
Niestety dziś 99.9% programistów uznaje dokładnie odwrotne zasady. Dziś programy zajmujące
gigabajty uważa się za szczyt techniki. Skomplikowanie, a raczej przekomplikowanie jest
przedstawiane w reklamie jako zaleta.
1) Działać sprawnie, szybko i nie mieć błędów. A jeśli jednak błędy będą - autor powinien być
zainteresowany ich poprawieniem i współpracować z odbiorcą/klientem, a nie robić łaski.
2) Być proste. Nie chodzi o ładny kolorowy interfejs, i wrażenie prostoty. Ale rzeczywistą
prostotę. Nie prymitywizm, lecz prostotę. W/g zasady Michała Anioła.
3) Być przejrzyste. Czyli autor powinien opisać nie tylko jaki daje skutek, ale przynajmniej w
ogólności jak działa. Szczególnie to jest ważne, gdy program działa w środowisku
telekomunikacyjnym. Absolutnie niezbędne, gdy w środowisku telekomunikacji publicznej
(np. internecie). Użytkownik/klient ma prawo wiedzieć jak się komunikuje program, w jakim celu,
i opis powinien być taki aby się to dało zweryfikować. Oczywiście punkt 3 nie jest możliwy bez
punktu 2.
4) Program ma być programem, którego jesteś właścicielem/użytkownikiem a nie usługą korzystającą
z serwera producenta lub innego. Co najwyżej może korzystać z serwera prowadzonego przez
użytkownika (lub dla niego przez zaufaną małą firmę) na którym instaluje się część serwerową.
W przeciwnym razie to nie produkt a zniewolenie.
5) Nie starać się być szwajcarskim scyzorykiem. Autorzy systemu UNIX powiedzieli kiedyś - zrób
program prosty, robiący jedną rzecz, ale robiący ją dobrze, i zrób go tak, by łatwo
współpracował z innymi programami. Ta zasada powinna dotyczyć każdego oprogramowania,
nie jest w żaden sposób związana z systemem UNIX.
6) Formaty plików tworzonych przez program powinny być jasno opisane i proste. TY - CZYLI KLIENT
- masz prawo wiedzieć, jak zapisane są TWOJE dane. To nie jest łaska a obowiązek to opisać.
Oczywiście prostota formatów plików wiąże się z punktem 5 i też należy na nią zwracać uwagę.
7) ZAWSZE wybierając program, myśl o tym, jak będziesz go potem mógł zintegrować z innymi w
przyszłości. Nawet jeśli dziś nie widzisz potrzeby. Patrz punkt 5. No chyba, że chodzi o grę
komputerową :)
8) Program powinien być jedną całością. Jeśli wymaga on instalowania 70 innych zestawów bibliotek,
to jest to recepta na problemy. A dziś często "programiści" nawet sami nie do końca wiedzą co
jest potrzebne.
9) Open source to zawsze argument pozytywny. Tak jak pisałem - nie musi to oznaczać darmowego.
Natomiast jeśli produkt ma dostępne źródła, i jednocześnie spełnia punkty 2 i 3 - to jest
weryfikowalny. W przypadku oferty bez źródeł - zawęź się do produktów polskich. W przypadku
gdyby autor programu okazał się oszustem, szpiegiem czy były poważne podejrzenia ku temu,
a program robił by inne rzeczy niż te co powinien - masz możliwość egzekucji prawa.
W przypadku firm zagranicznych - masz teoretycznie. W praktyce nie masz żadnej.
Jak chyba zauważyłeś dzisiejsza oferta rynkowa nie ma produktów spełniających podane warunki.
Dlaczego?
Bo tego nie wymagacie! Ruszcie tyłki i myślcie nie o potrzebie chwili ale w długiej perspektywie.
Szanujcie siebie. Producent oprogramowania jest oferentem, a wy jesteście KLIENTAMI. Klient płaci -
klient wymaga. Nawet jak klient nie płaci bo jest darmowe - to powinien wybierać i odrzucać.
Dotyczy to całości oprogramowania które używasz. Od systemu operacyjnego po programy użytkowe.
A jeśli klient płaci, nic nie wymaga, a nawet poddaje się władzy sprzedającego, to sami proszę
dobierzcie określenie takiego klienta. Ja nie podam bo nie chce nikogo obrazić.
Chcecie dobrego, bezpiecznego oprogramowania, które wam służy i któremu można zaufać. To tego
wymagajcie. Jesteście KLIENTAMI, a nie podmiotem.
Po to wymyślono standardy aby umożliwić łatwą wymianę części, a w przypadku informatyki łatwą
wymianę danych.
Korporacji informatyczno-terrorystyczne cały czas próbują ten problem (dla nich) "rozwiązać". Albo
wmuszają własne standardy, które nie są opisane i zdefiniowane, albo - pod naciskiem - tworzą
niby-standardy, nie dość, że nieściśle opisane to jeszcze super-mega-ultra-przekomplikowane.
Microsoft jest w tej dziedzinie pionierem, ale oczywiście ma całe mnóstwo naśladowców.
To, czy tak będzie dalej zależy od Ciebie. To, że ktoś ci wyśle plik w np. Microsoft Word, nie
znaczy, że masz zakupić MS Office. To znaczy, że osoba wysyłająca ma to gdzieś, a jeszcze częściej -
że w ogóle się nie zastanawia.
Można taką osobę potraktować złośliwie, jak kiedyś robiłem. Czyli jakoś odczytałem jej dokument, i
całość wraz z poprawkami przepisałem w edytorze LyX (który tworzy pliki zgodne z systemem LaTeX), i
następnie odesłałem jej w tym formacie. Również nie pytając czy posiada albo zna to oprogramowanie
:) Na niektórych podziała niestety na większość nie.
Można też grzecznie prosić o wysłanie PDF. Albo jeszcze lepiej - skoro dyskutujemy o tekście - w
pliku tekstowym. Kto broni wysłać to nawet w treści maila?
To że jedna osoba używa MS Office, inna LyX, inna Word Perfect a inna w ogóle nie za bardzo lubi
cokolwiek poza plikami ze zwykłym tekstem jest normalne. To się nazywa wolność.
Jeśli Ty nie pozwolisz sobie wmuszać, i nie będziesz innym wmuszał, to wrócą czasy prostych
otwartych standardów. A nie korporacji.
Oczywiście samo to nie wystarczy. Więcej napisałem w moim tekście o historii telekomunikacji i
zniewolenia.