Vandaag de dag zijn de meeste, zo niet alle, ondernemingen voor hun dagelijkse werking sterk aangewezen op software. We worden steeds meer geconfronteerd met de enorme gevolgen van gebrekkige software. Denk maar aan de crashes van twee Boeing 737 MAX 8 toestellen, waarbij in totaal 346 passagiers het leven lieten. Vorige maand nog publiceerde The Wall Street Journal een artikel waarin medewerkers van Boeing bevestigden dat er nogmaals softwaregebreken zijn gevonden in de 737 MAX 8 toestellen. Maar wat bedoelt men nu juist met gebrekkige software? Wat is de link met broncode? En wanneer mag software worden gebruikt?
Software of een computerprogramma, is een verzameling van bits en bytes en rekenregels die als doel hebben een apparaat, zoals een computer, bepaalde functies te laten uitvoeren.
Een softwareontwikkelaar schrijft software in een bepaalde programmeertaal, zoals bijv. Python of Java. Deze leesbare tekst die door de ontwikkelaar wordt geschreven noemen we de broncode of source code van de software. Wie toegang heeft tot de broncode, krijgt inzicht in die werking van de software.
Broncode wordt “vertaald” via een compiler, een omzettingssoftware, naar een code die leesbaar is voor het systeem, zoals bijvoorbeeld een computersysteem. Deze code is de objectcode van de software. Deze objectcode laat de computer toe om de beoogde functies te verrichten. Het is een binaire taal (een taal die bestaat uit enen en nullen) die niet leesbaar is voor mensen. Wie enkel beschikt over de objectcode kan de software in principe alleen gebruiken, maar niet begrijpen.
Software wordt bij wet beschermd door het auteursrecht, zonder dat hiervoor enige registratie nodig is. Het auteursrecht beschermt alle onderdelen van de software, d.w.z. broncode, objectcode, architectuur, interface, voorbereidend materiaal, structuur, enz.
Degene die het auteursrecht bezit, zoals bijvoorbeeld de softwareontwikkelaar, diens werkgever, diens opdrachtgever of een andere derde partij ingeval van overdracht, heeft naast morele rechten, het recht om controle uit te oefenen over de exploitatie van de software. Hij bezit een exclusief beslissingsrecht over de commercialisering en de modaliteiten van de software.
Omdat het auteursrecht niet toelaat om software te gebruiken zonder toestemming van de softwareontwikkelaar – behoudens een aantal uitzonderingen zoals het maken van een reservekopie – dienen de rechthebbende en de gebruiker een overeenkomst te sluiten om het gebruik van de software vast te leggen. Hieronder bespreken we de meest voorkomende overeenkomsten.
Soms denkt een opdrachtgever verkeerdelijk dat wanneer hij software voor hem laat ontwikkelen, hij automatisch de eigenaar wordt van de broncode. Aan de hand van het onderscheid tussen de twee meest belangrijkste soorten software-overeenkomsten, namelijk de softwarelicentieovereenkomst en de softwareontwikkelingsovereenkomst, wordt uiteengezet wat het verschil is tussen het gebruik van software en toegang tot de broncode.
Standaardsoftware is software die bestemd is voor een breed publiek zonder dat de functionaliteiten ervan bepaald worden door degene die de software wenst te gebruiken. Het ter beschikking stellen van standaardsoftware vindt meestal plaats op basis van een softwarelicentieovereenkomst.
Bij dit soort overeenkomst verleent de softwareontwikkelaar, of een andere rechthebbende, meestal onder bepaalde voorwaarden een niet-exclusief gebruiksrecht op de software aan de licentienemer/gebruiker. De softwareontwikkelaar kan in dit geval ook aan anderen een licentie verlenen. De gebruiker heeft het recht om de software te gebruiken, maar krijgt geen toegang tot de broncode.
Soms wordt de broncode wél openbaar gesteld aan alle gebruikers, waardoor zij de broncode kunnen aanpassen. Men spreekt dan van open source software. In dit geval wordt de broncode gepubliceerd en vrij beschikbaar voor het publiek. Bekende voorbeelden zijn de Firefox webbrowser en het Linux besturingssysteem. Let wel, ook het gebruik van open source software, en dus de voorwaarden waaraan de broncode van de software kan worden aangepast, wordt geregeld in een softwarelicentieovereenkomst. Er zijn tal van open source softwarelicenties in omloop en de voorwaarden om de broncode te gebruiken kunnen sterk variëren. Vaak bevat een open source softwarelicentie een copyleft-clausule, die bijvoorbeeld is opgenomen in een GNU-GPL (General Public License). Deze clausule bepaalt dat software waarin broncode is opgenomen uit software die onder een GPL-licentie valt, zelf ook onder die licentie beschikbaar gesteld moet worden.
Software op maat daarentegen is ontwikkeld met het oog op de specifieke wensen van een bepaalde opdrachtgever. Deze software wordt ter beschikking gesteld aan een beperkt aantal eindgebruikers die worden aangeduid door de opdrachtgever. Software op maat wordt geregeld door een softwareontwikkelingsovereenkomst. De softwareontwikkelaar kan gebruik maken van de Waterfall-methode (waarbij het ontwikkelen van software wordt gesplitst in een reeks vooraf gedefinieerde fasen) of de Agile-methode (waarbij het ontwikkelen van software op een meer flexibelere manier gebeurt).
Het komt vaak voor dat een opdrachtgever aan een softwareontwikkelaar vraagt om maatwerkaanpassingen in de standaardsoftware aan te brengen. In dit geval spreekt men van standaardsoftware op maat.
In een softwareontwikkelingsovereenkomst regelt men normaal enkel de ontwikkeling van de software zelf, maar het kan soms voorkomen dat de overeenkomst toch bepalingen bevat over het gebruiksrecht van de software.
Het is sterk aangewezen om tijdens de onderhandelingsfase van deze overeenkomst voldoende aandacht te besteden aan de functionaliteit waarover de software moet beschikken, de prijs waartegen deze wordt geleverd en de termijn waarbinnen de softwareontwikkelaar de software moet opleveren. Daarnaast sluiten partijen vaak ook een onderhouds- en ondersteuningsovereenkomst, waarover hieronder meer.
Men bepaalt in een softwareontwikkelingsovereenkomst doorgaans dat de gebruiker een exclusief gebruiksrecht heeft. Dit houdt in dat enkel de door de opdrachtgever aangeduide gebruikers de software kunnen gebruiken. Er is a.h.w. een alleenrecht op het gebruik van de software. Ook in dit geval behoudt de softwareontwikkelaar de broncode.
Soms eist de opdrachtgever echter toch dat de softwareontwikkelaar de broncode overmaakt aan hem. Het spreekt voor zich dat dit vaak een discussiepunt vormt tussen partijen omdat ze tegenstrijdige belangen hebben. De opdrachtgever heeft enerzijds veel geld betaald voor de ontwikkeling van de software. Hij wil niet afhankelijk zijn van de softwareontwikkelaar en wil de continuïteit en beschikbaarheid kunnen waarborgen. Anderzijds is softwareontwikkelaar niet bereid om de broncode over te maken bij de aflevering van de op maat gemaakte software. Hij heeft veel inspanningen geleverd om de software te ontwikkelen en wil vermijden dat hij plots aan de kant wordt gezet.
In dit geval kan het raadzaam zijn om een escrow overeenkomt te sluiten. De overeenkomst beschrijft onder welke voorwaarden, zogenaamde triggering events, de opdrachtgever toegang zal krijgen tot de broncode.
Dergelijke overeenkomst bepaalt namelijk dat de broncode door de softwareontwikkelaar wordt overhandigd aan een (neutrale) escrow agent die de broncode (en vaak ook de technische documentatie) in een speciaal depot bijhoudt, waar niemand anders behalve hij toegang tot heeft. Doorgaans zal de opdrachtgever toegang krijgen tot de broncode wanneer de softwareontwikkelaar niet meer in staat is om het onderhoud van de software te verzorgen. Een typisch voorbeeld is de discontinuïteit of het faillissement van de softwareontwikkelaar.
Het gebruik van software impliceert uiteraard niet dat software naar behoren werkt. Integendeel, software presteert vaak niet zoals de klant beoogd had. Naast redenen zoals een gebrekkige samenwerking tussen verschillende softwarepakketten, programmeerfouten of een miscommunicatie tussen de softwareontwikkelaar en de opdrachtgever tijdens de softwareontwikkelingsfase, kan een slechte werking te wijten zijn aan fouten die aanwezig zijn in de broncode van de software. Desgevallend spreken we van softwaregebreken of zogenaamde bugs.
Toegang tot de broncode is vaak van essentieel belang om bugs te verhelpen, om te debuggen.
We kunnen bugs opdelen in twee soorten:
Partijen sluiten vaak een onderhouds- en ondersteuningsovereenkomst of een service en maintenance overeenkomst, waarin men bepaalt hoe vaak er updates, bug-fixes, releases etc. komen en onder welke voorwaarden er een helpdesk ter beschikking staat van de klant. Daarenboven stellen partijen ook regelmatig een Service Level Agreement (SLA) af, waarin men afspraken maakt omtrent het niveau van dienstverlening en/of de kwaliteitsaspecten van de software.
Bovendien is het relevant om te vermelden dat men doorgaans in een softwareontwikkelingsovereenkomst een garantieperiode stipuleert – die aanvangt na de voorlopige aanvaarding – waarin bugs zullen worden verholpen
Broncode speelt een centrale rol bij het doen werken van software. De code is nodig om de software bepaalde functionaliteiten te laten uitvoeren, en is ook vaak een vereiste om bugs te verhelpen en om software te onderhouden.
Toch leidt men hier vaak verkeerdelijk uit af dat toegang tot de broncode een voorwaarde is om software te kunnen gebruiken. Hierboven is toegelicht waarom deze redenering niet klopt. Het gebruik van software kan gestipuleerd worden in een overeenkomst zonder dat toegang tot de broncode vereist is.
Advocatenkantoor Timelex is gespecialiseerd in informatietechnologie. We helpen cliënten bij het opstellen en onderhandelen van verschillende soorten IT-gerelateerde contracten en staan cliënten bij in IT-geschillen. Neem contact op voor meer informatie.