Co mają wspólnego filozofia FOSS i zależności w oprogramowaniu?

29 października 2005, michuk

To że jeden program wymaga do poprawnego działania innego programu może wydać się niezrozumiałe użytkownikom Domyślnego Systemu Operacyjnego. W artykule postaram się opisać bardzo skrótowo różnicę w powstawaniu wolnego i zamkniętego oprogramowania, która jest główną przyczyną powstania tzw. dependency hell, czyli piekła zależności między linuksowymi aplikacjami.

Programy możemy podzielić na dwie kategorie:

  • wolne - z dostępnym ogólnie kodem żródłowym, najczęściej publikowane na licencji GPL i tworzone przez społeczności związane z Wolnym Oprogramowaniem
  • zamknięte - czyli te, w których jedynym prawem użytkownika jest uruchomienia programu. I to również nie zawsze.

Proces powstawania obu typów programów jest zasadniczo odmienny i wymaga wyjaśnienia, ponieważ wpływa on w efekcie znacznie na sposób używania oprogramowania obu typów.

Programy z zamknięym kodem

Programy zamknięte powstają najczęściej w firmie programistycznej. Każda funkcjonalność jest pisane od zera. Programy takie stanowią monolit i nie umieją zazwyczaj współpracować z innymi aplikacjami konkurencji. Skutków takiego działania jest wiele. Programy zazwyczaj powstają wolniej, ale są za to bardziej spójne. Ważą też zwykle więcej, ponieważ każdy program musi dostarczać wszystkie niezbędne do jego funkcjonowania biblioteki. W efekcie użytkownik nieświadomie instaluje w systemie kilka silników do odtwarzania muzyki, filmów, wiele dekoderów i innych modułów o powtarzającej się funkcjonalności. System się rozrasta, użytkownik traci kontrolę.

Programy open-source

Tworzenie wolnego oprogramowania wygląda zazwyczaj zgoła inaczej. Grupa programistów pisze program, który dobrze wykonuje jedną zdefiniowaną czynność. Następnie inna grupa programistów, korzystając z nieskrępowanego dostępu do źródeł, pisze swój program, wykorzystując do specyficznych zadań program napisany przez pierwszą grupę. W ten sposób powstają aplikacje składające się z wielu modułów, z których każdy odpowiada za daną funkcjonalność. Większość programów w Linuksie zostało napisane w ten sposób.

Przykłady z życia wzięte:

  • K3B i GnomeBaker – popularne aplikacje do nagrywania płyt CD i DVD, które tak naprawdę nie umieją same nagrywać płyt! Obie wykorzystują do tego inne programy, m.in. konsolowe cdrecord i cdrdao. Sam program jest więc tylko graficzną nakładką, interfejsem użytkownika do konsolowych narzędzi wykonujących tę samą czynność
  • Mozilla Firefox, Epiphany czy Galleon - przeglądarki internetowe. Tak różne funkcjonalnie, ale do wyświetlania stron używają tego samego silnika: Gecko. Bez niego nie potrafiłyby wyświetlić nawet najprostszej strony WWW!
  • Kaffeine i Totem – odtwarzacze multimediów dla konkurencyjnych środowisk KDE i Gnome. Różnią się wyglądem i funkcjonalnością, ale nie silnikiem odtwarzania. Oba mogą wykorzystywać zarówno Xine jak i Gstreamer!

Takich przykładów można by podać jeszcze setki. Praktycznie każdy program dla Linuksa korzysta z innych pomocniczych aplikacji. To właśnie stąd biorą się tzw. zależności – jedna aplikacja wymaga do poprawnego działania innej, ponieważ twórcy skorzystali z jej modułów podczas pisania swojego programu.

Zależności, jak wszystko, mają dobre i złe strony. Głównym plusem takiego podejścia znaczne jest zmniejszenie rozmiaru aplikacji, czyli po prostu oszczędność miejsca na dysku twardym. Minusem jest z kolei większe skomplikowanie systemu oraz możliwe konflikty w przypadku wymagania przez instalowane programy innych wersji zależnych aplikacji od tych dostępnych w systemie. Radą na problemy z zależnościami jest dobry menedżer pakietów, czyli program dbający o to, aby konflikty takie nie występowały.

Znalazłeś literówkę? Zgłoś ją używając formularza!

Wpisz wynik działania: sześć - 3:

Komentarze (RSS) | Trackback (URI)

Liczba komentarzy: 2

zwiń wątek mich  22 kwietnia 2006 o godz. 19:49 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: 0 [Pokaż komentarz]

Wszystko pięknie tylko dlaczego tak stronniczo. Przecież zależności (zwał jak zwał) istnieją i mają się dobrze również w świecie zamkniętego oprogramowania (np. mój Zamknięty Program wysyłając e-maila w Zamkniętym OS-ie nie będzie nadawał własnoręczną implementacją SMTP po 25 porcie tylko użyje Zamkniętej Biblioteki np. cdo.dll)
Przykład z cdrecordem też jest wg trochę niefortunny - akurat gnomebaker wykorzystuje cdrecorda tak jakby był on “czarną skrzynką”, tj wywołuje go we własnej mini-konsoli, gdzie tu jest wykorzystanie dostępności kodu źródłowego, prawdziwe zalety są wtedy gdy jako user nie widzę że program wywołuje inny program do wykonywania swojej pracy. Przykład z gecko jest ok, można dorzucić np. libgadu - komunikatory, nie wspominając elementarnym przypadku jak cały gnome i aplikacje “pod” niego, choć jak wspomniałem wcześniej różnice pomiędzy wolnym a zamkniętym oprogramowaniem w tej kwestii nie są tak wielkie jak możnaby wywnioskować z tego artykułu.

 
zwiń wątek jan pawian  28 grudnia 2006 o godz. 12:43 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: 0 [Pokaż komentarz]

Radą na problemy z zależnościami jest dobry menadżer pakietów, czyli program dbający o to, aby konflikty takie nie występowały.

racja, portage z gentoo, czy inne porty z *BSD, w zupełności wystarczają (-:

 
Identyfikator (wymagane)
Adres e-mail (wymagany - nie pokażemy go publicznie)
Adres URI
Rozmiar pola: zmniejsz rozmiar | zwiększ rozmiar

Literówki najlepiej zgłaszać jabberem: michuk@jakilinux.org lub kocio@jabber.org!

W komentarzach możesz używać prostych znaczników HTML. Przykłady:
  • Link: <a href="jaklinux.org">Linux dla każdego</a>,
  • Wytłuszczenie: <strong>tekst pogrubiony</strong>,
  • Kursywa: <em>tekst pochylony</em>,
  • Przekreślenie: <strike>tekst przekreślony</strike>,
  • Kod: <code>printf("blok kodu");</code>,
  • Cytat: <blockquote>cytat</blockquote>
Uwaga: jeśli dodasz nieznany znacznik, będzie on niewidoczny, gdyż system filtruje takie znaczniki.

O Autorze

Borys Musielak

Twórca i redaktor wortalu jakilinux.org oraz serwisu OSnews.pl. Lobbysta udający eksperta. Znany również jako Ojciec Dyrektor. Zawodowo: deweloper J2EE w Lądku Zdrój.

RSS

Możesz śledzić komentarze do tego artykułu poprzez specjalny kanał; RSS 2.0 .

Porównaj dystrybucje!

vs

Dołącz do nas!

Masz ulubioną dystrybucję? Chciałbyś zostać jej opienkunem w wortalu jakilinux.org? Nic prostszego!
Więcej o współpracy na blogu Grupy Jakilinux.

Butik JL

jakilinux butik
Obejrzyj więcej produktów i wybierz coś dla siebie.

Subskrybuj Biuletyn!

Biuletyn Grupy Jakilinux to okresowy subiektywny przegląd najważniejszych informacji o których piszemy w naszych serwisach, który wysyłamy e-mailem. Subskrybuj biuletyn!