Selv om C5 har mulighed for at skjule din kildekode, så er funktionaliteten ikke særligt godt beskrevet i hverken hjælpen eller andre steder. Det råder dette indlæg bod på.
C5 frem til og med version 2008 (og i øvrigt vistnok også alle XAL-versioner) havde mulighed for at man som udvikler kunne eksportere og importere krypterede elementer (kildekode). Ved import fik importerede elementer automatisk fjernet deres kildekode (med mindre man importerede med korrekt nøgle), således at andre ikke kunne rette i dem – kun afvikle dem.
Som C5 hus eller udvikler er det jo faktisk en måde at beskytte sin kildekode – på den anden side set låser det kunden fast til en C5 leverandør, idet han/hun jo er den eneste der kan rette og dermed opdatere pågældende element. I sagens natur kan elementet heller ikke genoversættes – kun afvikles.
Personligt mener jeg at det er useriøst at beskytte sin kode på den måde. I Danmark har vi en udmærket oprethavs lovgivning der i forvejen beskytter dig – så brug dog den til at forfølge pirateri og lad være med at “chikanere” dine kunder med kopibeskyttelse som helt sikkert vil genere dem senere (fx når en anden C5 partner skal opgradere dem – eller de blot ønsker at genoversætte hele deres applikation).
Eksport af krypterede elementer frem til og med version 2008 var rimeligt let – man tastede blot en krypteringskey i Crypt-feltet i en multi-eksport – eller valgte Crypt eksport direkte fra gittermenuen når man manuelt eksporterede hver enkelt element.
Import med angivelse af key var ikke umiddelbart supporteret af applikationen, men man kunne naturligvis kalde import af elementet manuelt og så angive den korrekte key med CRYPT-parameteren.
Begrundelsen for at fjerne krypteringsfunktionaliteten (der er nemlig fjernet mere krypteringsfunktionalitet til dette), er at krypteringen var for svag. Med moderne computere var den for let at knække og levede derfor ikke op til Microsofts standarder for kryptering.
Følgende elementer kunne eksporteres og importeres krypteret: Frm, Rep, Xal, Qtx, Uxl og Fnc.
Men hvad så de nyere C5’ere?
Ja, faktisk har man stadig mulighed for at importere skjult kildekode… Det er bare ikke længere noget man definere under eksport. En lille rest af tilsvarende funktionalitet har overlevet: i forbindelse med import er det muligt at angive NOSOURCE som parameter – og dermed få fjernet kildekoden fra C5. Dermed gemmes kun den oversatte mellemkode som jo så kan afvikles, men ikke rettes og genoversættes.
Muligheden er i øvrigt ikke ny – den findes skam også i de ældre C5’ere…
NOSOURCE er i øvrigt styret af variablen &Source i XAL-kørslen ImportObjects, hvorfor det blot handler om at sætte den til 0 (i stedet for 1, som er standard), hvis du ønsker at køre en multi-import hvor kildekoden alle elementer efter oversættelsen bliver fjernet fra C5 (i praksis gemmes kildekoden sammen med den oversatte mellemkode i c5util.* filerne).
Følgende elementer kan få fjernet deres source under import: Frm, Rep, Xal, Qtx, Uxl, Fnc, Mnu og Trg.
Afslutningsvis vil jeg gerne gentage min opfordring til IKKE at benytte denne funktionalitet. Ingen kender fremtiden og det er temmelig uheldigt at stavnsbinde kunder til en specifik C5 leverandør på denne måde. Beskyt dine rettigheder med den der til indrettede lovgivning i stedet… Folk der vil kopiere, skal nok lykkes med at gøre det alligevel – og der er jo absolut ingen grund til at chikanere de kunder der rent faktisk HAR betalt!