Filozofia firmy

Po co wywarzać otwarte drzwi?

Wiele rozwiązań typowych problemów zostało już wymyślonych, zaprogramowanych i wdrożonych. Dlatego często występujących problemów nie należy rozwiązywać ponownie ale stosować dobrze przetestowane istniejące już rozwiązania.

W sytuacji gdy chcieli byśmy stworzyć coś od samego początku, zupełnie od zera, narażeni bylibyśmy na wiele trudności. O ile problemy z których zdajemy sobie sprawę mieli byśmy szanse prędzej czy później rozwiązać i być może udało by się nam to zrobić dobrze to przy skomplikowanych zadaniach mamy dużą szansę że coś przeoczymy. Dlatego warto jest się rozejrzeć, czy problem który mamy nie został już rozwiązany, stworzono jego praktyczną implementację i dobrze go udokumentowano.

Open-Source to nie tylko społeczność

Znaczna większość najbardziej popularnych i najszerzej stosowanych w praktyce aplikacji na serwerach jest rozwijana przez duże firmy i fundacje. Ich pracownicy niejednokrotnie mają za zadanie tylko i wyłącznie zajmować się rozwojem oprogramowania związanego z profilem firmy lub pracą nad sterownikami do ich produktów lub przez nie wymagane. Jako przykład można wymienić: Intel, IBM, AMD, Hewlett Packard.

Jednak społeczność to olbrzymia rzesza ludzi którzy aktywnie w mniejszym lub większym stopniu włączają się w życie aplikacji. Robią to często dlatego że sami używają danej aplikacji i albo potrzebują dodatkowej funkcjonalności którą mogą sami stworzyć i podzielić się nią z innymi albo po prostu znajdują problem i zgłaszają go. W pierwszej sytuacji osoba staje się developeram oprogramowania w drugi zaś testerem. Osoby takie czasem są zwykłymi amatorami jednak trzeba pamiętać że nad całością projektu czuwają profesjonaliści.

Otwarte standardy a problem "vendor lock-in"

Wszyscy doskonale zdajemy sobie sprawę że sytuacja gdy jakąś dziedziną naszego życia kieruje tylko jeden podmiot nie jest zbyt komfortowa gdyż ten właśnie podmiot może dyktować nam swoje "jedynie słuszne" warunki. Niestety nie jest najgorszy możliwy scenariusz ponieważ może się tak zdarzyć że podmiot od którego jesteśmy zależni może z takich czy innych powodów po prostu zniknąć z naszego życia...

Proszę sobie wyobrazić że znajdujemy program który bardzo ułatwia naszą pracę, jest dla nas znakomitym narzędziem. Kupujemy od właściciela licencję na jego używanie i nasza działalność nabiera rozpędu gdyż wszystko stało się łatwiejsze. Właściciel programu dodaje nowe funkcjonalności, poprawia istniejące znalezione błędy i ... nagle z takich czy innych powodów po znika z rynku. Narzędzie którego używamy a które było w całości własnością nieistniejącego już podmiotu przechodzi na własność kogoś innego a on postanawia użyć zdobytą wiedzę do swoich celów i nie jest zainteresowany aby używane przez nasz narzędzie dalej funkcjonowało. Zostajemy w tym momencie z mniejsza lub większa bazą plików których format jest dla nas tajemnicą. Dokumenty które tak pieczołowicie tworzyliśmy stają się niemożliwe do użycia

W sytuacji kiedy nie istniejąca już firma używała by otwartego standardu nie znaleźli byśmy się w katastrofalnej sytuacji w której pliki przestają być możliwe do użycia. W najgorszej sytuacji mogli byśmy zlecić napisanie aplikacji która przekształca nasze pliki do innego formatu który staje się użyteczny w innym narzędziu.

Bezpieczeństwo

Bezpieczeństwo systemów i oprogramowania nie powinno zależeć od tego czy zastosowane rozwiązanie jest tajne ale od tego czy jest dobre i skutecznie realizuje postawione mu cele.

Przykładem mogą być nowoczesne algorytmy szyfrowania - ogólnie są znane ich podstawy i implementacje oraz znane są teoretyczne sposoby ich łamania jednak sama koncepcja algorytmu szyfrującego powoduje że problem złamania zabezpieczenia jest tak bardzo skomplikowany że wręcz nie możliwy do realizacji bez gigantycznych nakładów finansowych.

Administracja to nie demokracja

Ponieważ nie jesteśmy idealni, nie żyjemy w świecie idealny więc nie ma co liczyć że oprogramowanie które tworzymy będzie idealne. Wcześniej czy później okaże się że ktoś gdzieś popełni jakiś błąd i zostaliśmy narażeni na kompromitacje naszego systemu. Możemy w danej sytuacji załatać znalezioną dziurę jednak historia może się powtórzyć i stajemy w obliczu sytuacji w której mamy do czynienia z wyścigiem między osobą która chce wyrządzić nam krzywdę lub przysporzyć kłopotów a nami którzy chcą spokojnie zajmować się swoimi sprawami. Proszę sobie wyobrazić że istnieje rozwiązanie takiej sytuacji które wydaje się być całkiem skuteczne. Mianowicie trzeba uznać i wcielić w życie stan w którym wszystko co nie jest dozwolone jest po prostu zabronione.

Otwarte nie zawsze oznacza darmowe

Ponieważ wszelkie programy dostępne na licencjach związanych ze środowiskiem Open-Source są powszechnie dostępne do pobrania i użytkowania nie oznacza to że z pewnymi aspektami ich wykorzystywania nie wiążą się konsekwencje mnie lub bardziej związane z finansami.

Najlepszym przykładem jest tu licencja GPL której główną cechą poza nieodpłatnym rozpowszechnianiem kodu źródłowego jest fakt iż nie daje ona możliwości zamknięcia kodu źródłowego, który wykorzystuje w całości lub fragmencie program udostępniony na niej. Oznacza to ni mniej ni więcej fakt, że jeśli w naszym projekcie w jakikolwiek sposób użylibyśmy w całości lub fragmencie kod oparty na licencji GPL zobligowani jesteśmy aby wraz ze sprzedawanym produktem dostarczać bądź udostępniać do pobrania źródła programu. Nie dotyczy to jednak sytuacji gdy tworzymy oprogramowanie na zamówienie dla jednej osoby lub firmy i przekazujemy jej prawa autorskie do niego. W takiej sytuacji nie ma potrzeby udostępniania źródeł aplikacji gdy zostało one przekazane wraz z produktem i mogą pozostać niedostępne dla innych osób z powodu tzw. własnego użytkowania.

Innym przykładem jest licencjonowanie niezwykle popularnego systemu zarządzania relacyjnymi bazami danych MySQL który do użytku prywatnego jest w pełni dostępny bez jakichkolwiek ograniczeń natomiast jeśli chcemy go użyć w oprogramowaniu komercyjnym zasady licencjonowania zmieniają się.

Poza tak restrykcyjnymi licencjami jak GPL istnieją również mniej obwarowane obostrzeniami i jako przykład można podać LGPL ( Lesser GPL ) która zasadniczo od GPL różni się tym, że pozwala łączyć ze sobą elementy oprogramowania własnościowego i otwartego.