Kod chodzi własnymi drogami

Kod, który chodzi własnymi drogami

O ile potentatów rynku światowego stać na takie gesty, o tyle rodzime firmy najczęściej strzegą kodu jak oka w głowie i stanowczo odrzucają tę możliwość. "Jesteśmy stosunkowo małą firmą, sprzedajemy rozwiązania unikalne w skali świata. Dlatego kod źródłowy naszych aplikacji to nasz największy skarb. Jakże zatem moglibyśmy chcieć sami się go pozbawiać?" - mówi Jerzy Dryndos, prezes zarządu Logotec Engineering. Nie dotyczy to jednak możliwości zastosowania instytucji trzeciej zaufanej strony, w której rękach zostaje zdeponowany pełny kod źródłowy wraz z opisującą go dokumentacją. Taką trzecią stroną może być notariusz lub bank. Depozyt tego typu jest obwarowany określonymi warunkami, których spełnienie pozwala dopiero na uzyskanie dostępu do kodu źródłowego. "Stanowi to gwarancję dla naszych najważniejszych partnerów, że gdyby moja firma zbankrutowała czy z innych powodów znikła z rynku, to nie zostaną na lodzie" - wyjaśnia Jerzy Dryndos. Za przechowywanie i aktualizację płaci z reguły nabywca, to on bowiem jest zainteresowany takim rozwiązaniem. Czasem te warunki mogą być znacznie łagodniejsze. Przykładowo, nabywca może uzyskać dostęp do kodu źródłowego, jeśli np. serwis oprogramowania nie jest świadczony zgodnie z zawartą wcześniej z dostawcą umową.

"Kody źródłowe stanowią tajemnicę firmy i jej wartość intelektualną. Oczywiście, to zasada ogólna, od której mogą istnieć odstępstwa. Nawet największe tajemnice można ujawnić, pod warunkiem istnienia między klientem a dostawcą szczególnego związku, przez który należy rozumieć np. wspólną strategię użytkowania i rozwoju produktu, wzajemne zaufanie" - uważa Katarzyna Olesińska, dyrektor Pionu Serwisów w PUP Spin. Przyjmowane są bardzo różne modele. "90% kodu naszego oprogramowania jest zapisane w SQL, więc tak czy inaczej jest jawne. Sprzedajemy jednak licencję developerską, która pozwala zgodnie z prawem korzystać z tego kodu i modyfikować go" - mówi Jakub Fendrejewski, dyrektor handlowy w Softlab. Nie oznacza to jednak przeniesienia praw autorskich do oprogramowania. "Klienci nie mogą odsprzedawać rozwiązań stworzonych na bazie naszego kodu źródłowego" - wyjaśnia Jakub Fendrejewski. Dodatkowym zabezpieczeniem pozostaje brakujące 10% kodu, będące jądrem systemu, którego Softlab nie ujawnia nikomu.

"W przypadku oprogramowania tworzonego na zamówienie - czyli dla konkretnego, pojedynczego klienta - sytuacja wygląda całkiem inaczej. Udostępnienie kodu źródłowego to nic innego, jak przekazanie całości zrealizowanej pracy. W naszym przypadku to częste zjawisko" - mówi przedstawiciel jednego z producentów oprogramowania. Dość często wymóg udostępnienia kodu źródłowego - czy wręcz przeniesienia praw autorskich na zleceniodawcę - jest zawarty w przetargach w administracji publicznej. Tutaj firmy zainteresowane udziałem w projekcie muszą to a priori zaakceptować. "Firmy przeważnie podchodzą niechętnie do kwestii udostępnia kodów źródłowych. Czynią to jednak, gdy klient się tego wyraźnie domaga" - twierdzi Dariusz Duralek, wiceprezes ComArch.

Im kod jest starszy, tym ogon twardszy

Pod koniec ubiegłej dekady, gdy toczyła się zacięta walka o prymat na rynku przeglądarek internetowych pomiędzy Microsoftem a jedną z największych potęg czasów internetowej gorączki złota - Netscape Communications, ta ostatnia zdecydowała się przebić ofertę Microsoftu, wyciągając jeden ze swoich ostatnich asów. Netscape publicznie udostępnił kody do swoich produktów, choć nie na zasadach open source. Wbrew oczekiwaniom firmy nie okazało się to jednak czynnikiem pozwalającym na zwycięstwo. Microsoft ostatecznie wygrał batalię o dominację na rynku przeglądarek internetowych, i to bez podjęcia podobnych działań. Nie można bowiem absolutyzować znaczenia kodu źródłowego. Nawet jeśli towarzyszy mu solidna dokumentacja, to i tak opanowanie i zrozumienie go przez nową grupę programistów jest niełatwym i czasochłonnym zajęciem. Dlatego często chodzi jedynie o to, aby można było wykorzystać określone, pojedyncze fragmenty takiego kodu.

"Warto zauważyć, że dopiero na obecnym etapie rozwoju rynku, po osiągnięciu określonej pozycji rynkowej, Microsoft decyduje się na udostępnianie kodów źródłowych, a i tak tylko w zamkniętym, ściśle określonym gronie" - uważa Jerzy Dryndos. Być może właśnie coraz gorsza atmosfera wokół bezpieczeństwa produktów koncernu z Redmond będzie w większym stopniu skłaniać Microsoft do udostępniania kodów źródłowych swoich produktów po to, aby można było zweryfikować poziom ich bezpieczeństwa. Do dziś specjaliści nie rozstrzygnęli definitywnie sporu, czy szczegóły techniczne dotyczące np. rozwiązań kryptograficznych powinny być utajnione, czy przeciwnie - ujawnione, wraz z algorytmem i jego implementacją, po to, aby można było publicznie przetestować ich odporność na ataki.

Kiedy kodu nie ma, myszy harcują

Proces dezasemblacji, czyli próba przetworzenia wykonywalnego kodu maszynowego na program zapisany w języku znajdującym się na wyższym poziomie abstrakcji niż kod, z oczywistych względów nie pozwoli na odtworzenie kodu źródłowego. Proces kompilacji jest bowiem funkcją jednokierunkową, w trakcie której jest tracona istotna część informacji opisującej dany program.

Dezasemblacja pozwala jedynie na odtworzenie elementarnej struktury funkcjonalnej i przepływów danych. Trudno więc wykorzystać to do modyfikowania takiego kodu i doprowadzenia do istotnych zmian w pracy programu. Może być natomiast pomocne do poznania architektury danego rozwiązania i bywa czasem wykorzystywane do wyszukiwania słabych punktów w systemach bezpieczeństwa. Technikami dezasemblacji posługują się często grupy hakerskie w celu zlokalizowania potencjalnych luk w systemie. Haker lustruje gotowy program, starając się zlokalizować miejsca, które można wykorzystać do ataku nie stosowaną do tej pory metodą. Tak właśnie postąpiła najbardziej znana polska grupa hakerów LSD z Poznania, której udało się w 2003 r. znaleźć poważne luki w zabezpieczeniach systemów Microsoftu.

Także z tych względów proces dezasemblacji na ogół jest nie lubiany przez producentów oprogramowania, co znajduje wyraz w propozycjach rozwiązań prawnych, które delegalizują wszelkie próby dezasemblacji gotowego oprogramowania. Oczywiście, pod hasłem ochrony praw autorskich i własności intelektualnej.

Dla Computerworld komentuje:

Xawery Konarski, prawnik z Kancelarii Adwokackiej Traple Konarski i Podrecki

Zamawiający, który chciałby uzyskać kody źródłowe programu i prawo do ich swobodnej modyfikacji, powinien w podpisywanej umowie zawrzeć dwa postanowienia:

  • zobowiązujące wykonawcę do przekazania zamawiającemu - również w formie kodu źródłowego - programu, najlepiej wraz z kompletną dokumentacją projektową;

  • uprawniające zamawiającego do modyfikowania programu, przy czym minimum stanowi tzw. licencja niewyłączna (nie wyłączająca praw wykonawcy rozwiązania).
Wykonawca, który mimo podpisania takich postanowień, chciałby zabronić odbiorcy sprzedaży rozwiązań stworzonych za pomocą tego kodu lub jego fragmentów, powinien zadbać o to, by umowa nie uprawniała zamawiającego do rozpowszechniania programu. Podobnie, gdy wykonawca chciałby dalej wykorzystywać przekazany kod źródłowy, umowa musi być licencją niewyłączną.

Umowa może również zobowiązywać zamawiającego do zachowania w tajemnicy kodów źródłowych programu. Należy jednak zadbać o możliwość ich przekazania, np. podwykonawcy. Umowa może określać również cel modyfikacji programu, np. tylko do poprawiania błędów lub uzupełnienia programu nowymi funkcjami bądź wręcz tworzenia nowych programów z wykorzystaniem fragmentów przekazanego kodu.


TOP 200