Zapewnienie ciągłości działania kluczowego oprogramowania stanowi jedno z fundamentalnych wyzwań dla zamawiających usługi IT. Utrata usług serwisowych może skutkować poważnymi konsekwencjami biznesowymi i prawnymi. W niniejszym artykule przedstawiam, dlaczego zamawiający powinien zapewnić sobie dostęp do kodu źródłowego zamówionego oprogramowania oraz na co zwrócić szczególną uwagę przy negocjowaniu umowy depozytu kodu źródłowego z dostawcą tego oprogramowania.
Programy komputerowe bardzo często służą do obsługi kluczowych procesów biznesowych przedsiębiorców. Zakłócenia w ich funkcjonowaniu (np. niedostępność czy występowanie błędów) wiążą się z istotnym ryzykiem dla działalności. Mogą bowiem skutkować obniżeniem jakości świadczonych usług czy naruszeniem przepisów prawa, np. przepisów o ochronie danych osobowych wskutek wycieku tych danych i w konsekwencji nałożeniem kary przez organ nadzorczy. Każdy zamawiający powinien więc zadbać o serwis programu komputerowego i zapewnić ciągłość jego działania.
W tym celu zamawiający zazwyczaj zawierają z dostawcą oprogramowania umowę utrzymania i serwisu (zwaną „SLA”), która gwarantuje im funkcjonowanie oprogramowania na odpowiednim poziomie i naprawę błędów w ściśle określonych terminach. Problem pojawia się, gdy dostawca nie wywiązuje się ze swoich obowiązków i zamawiający zmuszony jest do wypowiedzenia umowy ze skutkiem natychmiastowym (np. z powodu wycieku danych z winy dostawcy). Wskutek rozwiązania umowy, zamawiający traci usługi serwisowe, co w praktyce może prowadzić do stopniowego pogarszania się funkcjonalności oprogramowania, a w przypadku poważnych błędów – nawet do uniemożliwienia jego dalszego użytkowania. Zamawiający ma teoretyczną możliwość samodzielnej naprawy błędów, ale w rzeczywistości jest to utrudnione, gdyż zazwyczaj nie ma dostępu do kodu źródłowego oprogramowania.
Dlatego zapewnienie sobie dostępu do kodu źródłowego tego oprogramowania stanowi ważne zabezpieczenie przed opisaną powyżej sytuacją. Zamawiający powinien więc zawrzeć z dostawcą umowę depozytu kodu źródłowego, w ramach której dostawca zobowiąże się do złożenia kodu źródłowego w określonym miejscu (np. u notariusza, u podmiotu trzeciego świadczącego usługi przechowywania kodów źródłowych, czy nawet bezpośrednio u zamawiającego), a zamawiający uzyska prawo dostępu do tego kodu po spełnieniu się warunków określonych w umowie. Dostęp do kodu źródłowego istotnie ułatwi zamawiającemu naprawę błędów, a w konsekwencji zmniejszy ryzyko związane z wadliwym funkcjonowaniem lub brakiem funkcjonowania oprogramowania.
W przypadku tworzenia i negocjacji umowy depozytu, warto zwrócić uwagę na następujące aspekty:
Po pierwsze, umowa powinna precyzyjnie określać program komputerowy i wersję tego programu (w większości przypadków będzie to ostatnia wersja wdrożona u zamawiającego), którą dostawca ma złożyć do depozytu. Warto rozważyć dodanie postanowień, które zobowiążą dostawcę do składania do depozytu również dokumentacji dotyczącej tego kodu, np. opisu architektury programu komputerowego, komentarzy i adnotacji dotyczących kodu czy instrukcji dotyczących jego kompilacji.
Po drugie, zamawiający powinien zadbać o to, aby dostawca regularnie aktualizował zdeponowany kod źródłowy. Programy komputerowe są nieustannie rozwijane i poprawiane (np. poprzez tworzenie łatek bezpieczeństwa), dlatego warto, żeby zamawiający posiadał dostęp do ostatniej, najnowszej wersji kodu źródłowego.
Po trzecie, umowa powinna określać procedurę złożenia kodu źródłowego do depozytu. Taka procedura powinna określać, kiedy i gdzie dostawca ma złożyć kod źródłowy oraz czy wymagana jest obecność przedstawicieli zamawiającego przy tej czynności (jest to rekomendowane, aby zamawiający mógł upewnić się, że dostawca składa prawidłową wersję kodu). Procedura może również opisywać zasady testowania kodu przez zamawiającego przed jego złożeniem do depozytu czy sposób jego szyfrowania i odszyfrowania.
Po czwarte, umowa powinna precyzyjnie określać zdarzenia, których wystąpienie stanowić będzie warunek zwolnienia kodu źródłowego z depozytu. To, jakie będą to zdarzenia, zależy od ryzyka, które zamawiający chce zabezpieczyć. Przykładowo, może to być zaprzestanie tworzenia usług serwisowych albo wypowiedzenie umowy serwisowej z winy dostawcy, czy zawieszenie działalności gospodarczej przez dostawcę.
Po piąte, umowa powinna wskazywać, jakie dokumenty lub inne dowody będą potwierdzały wystąpienie zdarzeń, o których mowa powyżej, i na podstawie których depozytariusz udostępni kod źródłowy zamawiającemu. W przypadku wypowiedzenia umowy ze skutkiem natychmiastowym może to być oświadczenie o rozwiązaniu umowy wraz z potwierdzeniem odbioru przesyłki pocztowej przez dostawcę. Z kolei w przypadku zawieszenia działalności gospodarczej przez dostawcę może to być wpis w odpowiednim rejestrze stwierdzający zawieszenie działalności.
Po szóste, umowa powinna określać zasady korzystania z programu komputerowego przez zamawiającego po podjęciu kodu źródłowego z depozytu. Pomimo, że ustawa[1] przyznaje licencjobiorcy prawo do dokonywania pewnych zmian w oprogramowaniu, w tym w celu naprawiania błędów, warto w umowie precyzyjnie określić zakres uprawnienia zamawiającego, w tym prawo zamawiającego do zezwolenia podmiotom trzecim na wprowadzanie zmian do kodu źródłowego, aby uniknąć potencjalnych sporów z dostawcą.
Podsumowując, umowa depozytu kodu źródłowego może skutecznie ograniczyć ryzyko zamawiającego związane z zakończeniem współpracy z dostawcą i utratą usług serwisowych oprogramowania. Dostęp do kodu źródłowego powinien umożliwić zamawiającemu samodzielne bądź z pomocą podmiotu trzeciego utrzymywanie oprogramowania, a tym samym zapewnienie ciągłości jego działania. Warunkiem realizacji tego celu jest precyzyjne określenie w umowie praw zamawiającego, obowiązków dostawcy oraz zasad dostępu do kodu źródłowego.
[1]Ustawa z dnia 4 lutego 1994 r. o prawie autorskim i prawach pokrewnych (t.j. Dz. U. z 2025 r. poz. 24 z późn. zm.).





