Monday 11 June 2012

Deponovanje koda (Software Escrow) u Srbiji


Negde u januaru ove godine mi se javio klijent od koga je kupac tražio da mu dostavi celokupni kod softvera koji su razvili. Zapravo, klijent je došao sa pitanjem kako da zaštiti svoj kod koji je predao nekome. Iako je to pravno moguće, faktički je vrlo teško.  Pitao sam ga koji je motiv za takvu jednu transakciju i odgovor je dao pravu suštinu problema koji je svuda u svetu vrlo čest.

Možda ovaj blog neće do kraja ostati jasan jer još nisam objavio blog o tome kako se štiti programski kod kod nas. Međutim interesovanje za software escrow je toliko da je ovakva tema postala hitna.

 

U čemu je u stvari problem


S obzirom da se programski kod štiti onako kako se štiti i književno delo, uz manje specifičnosti, onog trenutka kada kod predate nekome praktično ste mu predali sva rešenja koja se ne mogu smatrati patentom, a u koja ste uložili puno vremena i novca (u pravu poznato kao know-how).  Time ste sebe lišili mogućnosti da klijentu naplatite održavanje i druge intervencije jer bi klijent mogao da uzme nekoga drugog i da doradi kod, ukloni ograničenja iz koda ili slično. Naravno klijent ne bi bio ovlašćen na ovo ali bi vi faktički teško sproveli nadzor nad klijentom.

Sa druge strane klijent, iako verovatno nema motiv da se bavi vašim poslom ili da angažuje nekog drugog, ima jake motive da zahteva kod od vas. Onog trenutka kada se klijent opredelio za vaš softver, ne želi da bude prinuđen da u narednih par godina napravi istu investiciju zbog toga što je vendor recimo bankrotirao, likvidiran, odustao od razvoja tog softvera ili se postavio ucenjivački prema klijentu.

 

Rešenje


Dva interesa iz prethodnih pasusa nisu nepomirljiva. Rešenje je upravo deponovanje koda kod trećeg lica, odnosno software escrow.

U takvim slučajevima se pribegava deponovanju koda kod kod trećeg lica (depozitar) koje bi u slučajevima kao što je stečaj, likvidacija, jednostran raskid ugovora i slično predalo kod klijentu.

 

Da li je rešenje adekvatno


Naravno ovo je osnovna ideja deponovanja koda. Međutim da bi deponovanje koda bilo delotvorno i da bi se mogli ostvariti ciljevi obe strane postoji puno okolnosti o kojima se mora voditi računa. Oni se mogu podeliti u dve grupe jedna grupa se nalazi na polju prava i kako pripremiti ugovore a da na kraju bude moguće predati kod i druga je tehničke prirode. 

Neću se ovde baviti detaljno šta bi ugovori između sve tri strane (klijent, vendor i depozitar) trebali da sadrže ali ću na jednom problemu pokušati da ilustrujem. Kada se otvori stečajni postupak jedan od zadataka stečajnog upravnika je i da unovči svu imovinu stečajnog dužnika. U takvu imovinu ulaze i autorska prava na programskom kodu. Zbog toga ukoliko ugovorom nije predviđen određeni prenos autorskih prava na depozitara koda, depozitar bi klijentu mogao samo da prezentuje kod ali ga klijent ne bi mogao koristiti i bio bi izložen tužbi stečajnog upravnika, a javila bi se i pitanja drugih neuređenih odnosa koji bi lako odveli u spor ili, ono što se češće dešava,  nabavku novog softvera.
Tehničkih problema ima više ali ih klijent i vendor obično bolje razumeju pa je ta rešenja lakše pravnički uobličiti.

Prvi osnovni tehnički problem, a što može kasnije da stvori i pravni, je kako znati da kod koji je deponovan zaista daje binarni fajl koji je klijentu dat na upotrebu. Ovo je do sada lako rešavano tako što je kod davan neutralnom programeru kojeg depozitar angažuje koji će kompajlirati kod u skladu sa pisanim uputstvom vendora.

Spomen pisanog uputstva iz prethodnog statusa u stvari je nagoveštaj drugog problema. Naime, sam kod često ne može biti dovoljan da bi bio upotrebljiv. Često vam neko može dati kod a da niste u mogućnosti da ga kompajlirate jer ne znate u kakvom okruženju mora da radi, koji je kompajler ili linker korišćen i slično. Može da se desi i da vam je kod već slobodno dostupan (PHP ili slično) ali da niko ne može sa njim da uradi ništa značajno jer nije dokumentovan. U takvim slučajevima se ne deponuje samo kod nego i propratni materijal, kao što su uputstva, specifikacije, dokumentacija i slično. Neophodno je proveriti i adekvatnost propratnog materijala pa tu opet ima ulogu stručno lice koje angažuje depozitar.

 

Izazovi u deponovanju koda


Širenjem SaaS samo deponovanje koda ili propratnih materijala neće biti dovoljno. Klijent će imati potrebu da brzo po nastanku nekog od slučajeva u kojima se predaje kod uspostavi punu funkcionalnost. To će se postiže sa „arhiviranim okruženjem“. U trenutku kada nastupi slučaj u kome bi kod bio predan serveri depozitara počinju da pružaju servis koji je vendor pružao. Naravno ovo podrazumeva periodično deponovanje baza sa podacima klijenta.