Hoe kan ik een opensourcemodule opnieuw implementeren?

software-disc-cd-dvd-dragerEen lezer vroeg me:

Ik werk aan een opensourceproject dat een kloon (fork) is van een groter project. Wij krijgen bij onze nieuwste module nu het verwijt hun auteursrechten geschonden te hebben omdat de code te veel lijkt. Maar wij hebben deze echt zelf geschreven, hoewel de module wel exact hetzelfde doet. Plegen wij nu inbreuk?

Auteursrecht rust alleen op code zelf. Op functionaliteit of ideeën kun je geen auteursrecht claimen. Als persoon A een module van persoon B opnieuw implementeert zonder naar B’s code te kijken, dan heeft hij geen auteursrecht geschonden. Dit bewijzen is natuurlijk erg ingewikkeld als B’s code vrij op internet staat. Bewijs maar eens dat je die niet gezien hebt.

Mogelijk is er een beter argument. Als het écht zo is dat er maar één manier is om deze code te schrijven, dan kan er geen auteursrecht op rusten. Auteursrecht vereist creativiteit, en die kan niet bestaan als er maar één route is. Ik twijfel wel of het echt zo werkt. Vrijwel altijd zijn er alternatieven waaruit je kunt kiezen bij het schrijven van software. Al is het maar of een while() lus handiger is dan for() of dat je beter iets in een functie kunt stoppen.

Terug bij af dus. Bewijs maar dat je B’s code niet gezien hebt en er dus niet uit gekopieerd. Dat zal niet meevallen. De standaardtruc is clean room reverse engineering, maar dat werkt niet bij open source.

De enige optie denk ik is dat je heel veel tussentijdse versies publiceert om zo te laten zien dat je van nul bent begonnen met die module. Zeg maar elke keer met tien regels code erbij. Dan bewijs je dat je van nul af zelf schreef en dan heb je dus niet gekopieerd. Het lijkt me wel een heel gedoe.

Arnoud

Zitten fabrikanten Android zonder GPL-distributierecht voor Linux?

android-open-source.pngOmdat de code van besturingssysteem Android niet (volledig) openbaar is en gepubliceerd wordt, vervalt het recht voor veel fabrikanten om Androidtoestellen te verkopen, meldde Nu.nl gisteren. Men baseert zich op Florian Mueller, die het weer uit de VS haalde.

Het pijnpunt zit hem in artikel 4 van de GPL:

You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License.

Op zich geen gekke clausule: je moet je aan de licentie houden, en doe je dat niet dan vervalt de licentie en mag je helemaal niks meer.

Mueller’s zorg is gebaseerd op de boude statement dat “virtually every Android OEM … was out of compliance at some point”, oftewel iedereen die Android uitlevert heeft ooit wel een keer een hoekje van de GPL geschonden en is daarmee zijn licentie kwijtgeraakt. Waar hij dit op baseert, weet ik niet. Het gaat me wat ver om te zeggen “iedereen zal wel een keer de licentie geschonden hebben”, hoewel het me zou verbazen als de meerderheid van Android-leveranciers zich perfect aan de GPL houdt.

De lastige consequentie van de GPL schenden is wel dat je het distributierecht kwijt bent totdat je van alle relevante auteursrechthebbenden hernieuwde toestemming hebt gekregen. Dat zegt in ieder geval de Sofware Freedom Law Center, de handhaver van de GPL. En bij Linux is het zo goed als onmogelijk die toestemming te vragen, want er zijn honderden zo niet duizenden auteurs met minstens één regel creativiteit in de Linuxkernel.

Dit principe is echter nog nooit bij de rechter getest, en eerlijk gezegd gaat het me wel érg ver. Volgens mij kun je gewoon opnieuw de Linuxkernel downloaden, en dan krijg je daar een nieuwe licentie bij. Die nieuwe licentieverlening staat los van je eerdere schending. En als dat al te bijdehand klinkt: wacht dan eventjes tot er een nieuwe major release uit is en ga dan netjes daarmee werken. Ik kan me níet voorstellen dat een rechter zal zeggen “u had de licentie op versie 2.3.12 geschonden, dus versie 2.6 mag u niet gebruiken”. Die twee licenties zijn weliswaar inhoudelijk identiek maar gaan over duidelijk verschillende programma’s.

Oh, en open source is nu echt mainstream: GPL-licentieruzies halen Nu.nl.

Arnoud

Schendt HTC de GPL door broncode vertraagd te publiceren?

Een lezer wees me (dank!) op een bericht bij Freedom to Tinker waar werd gesignaleerd dat de Android-gebaseerde HTC smartphone Linux draait, maar de broncode maar moeizaam beschikbaar komt. Linux is open source (GPL versie 2) en de broncode moet dus meegeleverd worden (of er moet een schriftelijk aanbod bij zitten waar staat waar je de broncode kunt bestellen). Ene “vladyman” had HTC gevraagd hoe dit zit, en kreeg als antwoord:

Thank you for contacting HTC Technical Assistance Center. HTC will typically publish on developer.htc.com the Kernel open source code for recently released devices as soon as possible. HTC will normally publish this within 90 to 120 days. This time frame is within the requirements of the open source community.

Nou, dat lijkt me niet. Ik heb nog nooit gehoord van een tijdsbestek van 90 tot 120 dagen voordat broncodes beschikbaar komen. De GPL zelf bevat zo’n vertragingsmechanisme al helemaal niet: de broncode moet gewoon bij het product zitten.

Er zijn verschillende verklaringen waarom HTC zo reageert: ze hebben de juiste broncodes niet paraat, er zitten codes van derden in die (nog) geen GPL mogen worden, men is naar de verkeerde cursus open source compliance geweest of men werkt gewoon altijd al zo en dus nu ook, want wetten en regels kunnen natuurlijk niet het bedrijfsbeleid in de weg zitten. Of, en dan wordt het wat meer aluhoedje: men is bang dat afgifte van de broncode zal leiden tot een succesvolle jailbreak van de telefoon.

Het blijkt namelijk dat de HTC G2 wel te jailbreaken is, maar tot nu toe levert dat slechts beperkte resultaten op. De meeste hacks worden bij de eerstvolgende reset ongedaan gemaakt door een speciaal stukje firmware. Vanuit Linux zou dat stukje firmware aan te sturen moeten zijn, maar daarvoor is wel de broncode van de Linux-kernel in het apparaat nodig. En die komt “normaliter” pas na 90 tot 120 dagen beschikbaar.

Frustrerend is wel dat eigenlijk alleen de auteursrechthebbenden op de Linuxkernel hier wat tegen kunnen doen. Als ontvanger van de code kun je je niet op de GPL beroepen tegenover HTC (of T-Mobile, die het toestel uiteindelijk aan je levert) want de GPL is een licentie tussen jou en de auteursrechthebbende, niet tussen jou en T-Mobile. Ik heb me wel eens afgevraagd of het geen goed idee zou zijn om juist wél toe te staan dat jij mag procederen uit naam van Linus over jouw exemplaar van Linux.

Update (15 oktober) in de comments wijst Piet erop dat HTC de code ruim binnen die 90 dagen heeft vrijgegeven.

Arnoud

Plugins voor phpBB: verplicht GPL of toch niet?

Bij de phpBB-gemeenschap een interessante discussie over plugins voor deze forumsoftware. PhpBB is open source en beschikbaar onder de GPL (versie 2). De vraag is dan wat dat betekent voor uitbreidingen en plugins voor phpBB.

De phpBB software is niet zo netjes opgezet als Joomla!, waardoor mijn redenering over plugins voor Joomla van afgelopen februari hier niet zomaar opgaat. Bij phpBB kun je een uitbreiding (een “mod”) alleen maken door regels code uit phpBB zelf te wijzigen en van uitbreidingen te voorzien. Dan zitten er in je mod dus stukken code die uit phpBB-bestanden komen. Dat is in principe een verveelvoudiging in gewijzigde vorm of een ‘afgeleid werk’ in de terminologie van de GPL.

Op de phpBB-site zelf wordt het zo uitgelegd:

Most modification require phpBB to work so most modifications need to be released under the GPL v2. … All modifications will have some part of it that needs to be released under GPL v2. These parts are usually what is in the install script or in other words, the part that integrates the script in to phpBB.

In de discussie zegt ene Alfatrion nog:

Copying several lines of could would fall under fair use for the states or the more limited European quoatation exemptions (art. 15a). This is true for most of the world because of the Berne Convention.

Wellicht is dit gebruik ‘fair use’ naar Amerikaans recht, maar ik betwijfel het. En gezien het feit dat deze persoon mijn blog citeert, is hij (zij?) waarschijnlijk Nederlander. En dan kan hij geen beroep doen op ‘fair use’. Wie in Nederland een beschermd werk wijzigt op een manier die schending van auteursrecht oplevert, kan in Nederland voor de rechter worden gedaagd. De zaak zal dan naar Nederlands recht worden beoordeeld.

Citaatrecht bij software is iets waar weinig juristen in geloven. Ik zou denken dat het opgaat als sprake is van een bug report, dan moet je regels citeren om te laten zien waar de fout zit. Maar jij bespreekt of bekritiseert deze regels niet, je breidt ze uit. En dat is een verveelvoudiging in gewijzigde vorm en geen citaat.

Afhankelijk van hoe veel je kopieert uit de originele bestanden, zou je wellicht aanspraak kunnen maken op artikel 18a Auteurswet:

Als inbreuk op het auteursrecht op een werk van letterkunde, wetenschap of kunst wordt niet beschouwd de incidentele verwerking ervan als onderdeel van ondergeschikte betekenis in een ander werk.

Een paar regeltjes uit phpBB in een groot eigen werk, met als enige doel aangeven waar in phpBB het eigen werk moet worden ingevoegd, zou onder deze uitzondering moeten vallen.

Ga je echter uitgebreid bestaande code aanpassen en niet zozeer eigen code toevoegen, dan ben je toch echt een afgeleid werk aan het maken.

Arnoud

Maakt linken met GPL code mijn code open source?

Een open source ontwikkelaar mailde me:

Ik wil voor mijn programma gebruik maken van de s-lang library. Nu zag ik dat deze onder de GPL valt, maar mijn programma is tot nu toe altijd onder de BSD licentie uitgebracht. Moet ik mijn programma nu GPL maken?

Inderdaad heeft de GNU General Public License (GPL) als eis dat je “afgeleide werken” alleen onder de GPL mag verspreiden. Dit mechanisme zorgt er voor dat mensen die voortbouwen op GPL code, hun bijdragen niet voor zichzelf mogen houden. Nare mensen zien dat als een “viraal effect“, ik zie het als een belangrijke voorwaarde voor open innovatie.

De combinatie van eigen code en GPL code kan dus alleen onder de GPL worden uitgebracht. De vraag wanneer iets nu een afgeleid werk is, laat ik even in het midden. De vraag is hier tenslotte of dat eigen programma op zichzelf ook onder de GPL moet worden geplaatst, of onder de huidige licentie kan blijven.

De GPL zegt daar het volgende over:

If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

Vrije vertaling: jouw code blijft jouw code, en als je daar een BSD licentie onder plakt, dan mag dat. Het is alleen de combinatie van jouw code en de s-lang library die onder GPL verspreid mag/moet worden. Knipt iemand s-lang weg, dan blijft jouw code over en die is onder BSD. Bouwt die iemand de code dan om naar bijvoorbeeld ncurses ipv s-lang, dan kan hij het resultaat onder zijn eigen gesloten licentie aanbieden als hij dat wil (want ncurses is MIT-licensed).

Kortom, laat de BSD license op je eigen werk staan en leg in de README uit dat je s-lang nodig hebt. Met eventueel een tekstje als “Since s-lang is GPL, when you distribute the combination of this software and s-lang, you must comply with the GNU GPLv2 for the combination.”

Arnoud

Alweer eerste rechtszaak over GPL

De auteurs van het programma BusyBox hebben een rechtszaak aangespannen tegen het bedrijf Monsoon Multimedia wegens schending van GPL versie 2 in digitale videorecorders van Monsoon. Tweakers parafraseert net zoals iedereen klakkeloos het persbericht:

De auteurs, gesteund door de FSF, hebben hiermee de eerste rechtzaak in de Amerikaanse geschiedenis waarin een bedrijf wordt aangeklaagd wegens zijn vermeende disrespect jegens de gpl-softwarelicentie.

Dit is helemaal niet de eerste zaak, dat was MySQL vs Progress maar die zaak werd geschikt. Zoals hier waarschijnlijk ook wel zal gebeurenook gebeurd is trouwens. Maar goed, een persbericht met “Tweede rechtszaak aangespannen” scoort lang zo mooi niet natuurlijk.

Het begon zo onschuldig. In maart postte ene RyecoAaron op een Monsoon support forum

Do the Hava boxes run Linux? nmap reports that it is and thinks it might be a Linksys WRT54GL

Ja, inclusief smiley.

Het duurde even, maar op 5 september postte Gary-MM van Monsoon:

I have a little secret to let you in on – HAVA runs Linux! Yes, much of the source is GPL and we should publish those sections which we have modified per the terms of GPL. A project is underway to pull this together.

Inderdaad, dat klopt niet; ze moeten alle GPL broncode aan klanten beschikbaar stellen, niet alleen de gewijzigde broncode. Maar op 6 september meldde het bedrijf dan ook de hele broncode van Busybox te zullen vrijgeven.

Als iemand aangeeft dat hij fout zit en de fout gaat herstellen, is het wel een beetje erg snel om dan twee weken later een rechtszaak te beginnen. Dat heet rauwelijks dagvaarden en is niet netjes. Zeker als je de bijdragen van het bedrijf aan het forum tegen ze gaat gebruiken:

15. Upon information and belief, on August 28, 2007, Defendants were notified by third parties of Plaintiffs’ copyright in BusyBox and of Defendant’s infringement thereof. This notification was provided via a public forum on Defendant’s website. Upon information and belief, on September 5, 2007, via the same forum, Defendant’s employee or agent, identified as “Gary-MM” of “MyHAVA Support”, confirmed that Defendant was redistributing BusyBox, but not providing source code as per the requirements of the License.

Dit soort dingen zullen bedrijven niet echt happig maken om in het openbaar te praten over hun open source-gebruik.

Gelukkig kan Monsoon er de lol van inzien:

Don’t worry kids, we’re taking care of it. It is all matter of course for such things, there is no conspiracy involved. I have said it before and will say it again, we have every intention of complying with the terms of GPL. This has been raised to the highest levels within the company and we are following through. Not being a lawyer, I am going to refrain from any more detailed comment.

UPDATE: (31 oktober) en natuurlijk is er geschikt.

Arnoud

Linus: Liever GPL versie 2

Linus Torvalds spreekt: liever GPL versie 2 dan versie 3, zo meldt Tweakers.

‘Ik vind niet dat het een ‘verschrikkelijke’ licentie is,’ antwoordde Torvalds op de vraag van EFYTimes onder welke omstandigheden hij het onder de gplv3-licentie uitbrengen van de Linux-kernel zou steunen, ‘Ik vind alleen niet dat het eenzelfde soort ‘geweldige’ licentie is als gplv2.’ Alleen als de tweede versie van gpl er niet zou zijn, zou Torvalds overwegen van versie drie gebruik te maken: ‘Maar aangezien ik een betere keuze heb, waarom zou ik?’

In eerste instantie was Torvalds een van de grootste critici van GPL versie 3.

Hij noemt verder GPL versie 3 ‘egoïstisch’: waar versie 2 slechts eiste dat uitbreidingen werden gedeeld, wil versie 3 ook nog eens bepalen hoe iemand de code mag gebruiken. Iets waar ik het helemaal mee eens ben.

Arnoud

Drie stromingen in open source

Open source bestaat in drie hoofdstromingen: de “vrijheid, blijheid” BSD gemeenschap waar alles mag zonder beperking, de “houd mijn code open” LGPL/Mozilla gemeenschap en de “eerlijk zullen we alles delen” GPL gemeenschap. Deze gemeenschappen onderscheiden zich dus door de mate van vrijheid bij het al dan niet open of gesloten houden van de code. Waar de BSD gemeenschap niets eist, vraagt de LGPL/Mozilla gemeenschap om het delen van verbeteringen en de GPL gemeenschap ook om het delen van uitbreidingen.

Binnenkort komt er een nieuwe versie van GPL versie 3. Deze is sterk politiek gemotiveerd en kan daarmee een nieuwe stroming creëren. Dat zou er dan wel eens zo uit te kunnen zien:

BSD – vrijheid, blijheid voor iedereen, doe maar met de code wat je wilt. Wil iemand zijn verbeteringen niet bijdragen, jammer voor hem. In extreme gevallen laten we Theo de Raadt er wat van zeggen.

GPLv2 – gezellig samen goede code ontwikkelen, maar als je er wat mee doet, word je wel geacht je bijdragen met iedereen te delen. En natuurlijk de broncode publiceren als je de code verspreidt, anders laten we Harald Welte of Armijn Hemel op je los.

GPLv3 – op de barricaden voor de vrijheid van de gebruiker, en wie de verkeerde dingen doet, is een vijand van het volkde gemeenschap en gaat naast Tivo, Novell en Microsoft in het kolenhok – tenzij hij een debat met RMS wint.

De al pragmatische LGPL/Mozilla stroming gaat dan meer samen met de pragmatische GPLv2 stroming, en de meer principiële stroom splitst zich af tot de GPLv3 beweging. Maar de insteek bij GPLv3 vind ik erg negatief, men is “tegen” van alles en niet zozeer “voor” iets. Als je niet uitkijkt, kan dat een sfeer oproepen van wij-hebben-gelijk en voor-afwijkende-meningen-is-geen-plaats en dat komt de samenwerking niet ten goede.

UPDATE: (27 juli) vandaag publiceerde Livre mijn artikel GPL versie 3 is in feite tegen open source.

Arnoud