E-post/MSN/Jabber: stefan@gorling.se
Mobil: 070-815 38 26
Voddler och GPL (vad #voddlergate handlar om)
Blogg | Uppdaterad: 2010-03-02
Uppdatering: Eftersom det rådde oklarhet kring huruvida det faktiskt går att kompilera koden tog jag och byggde den. Bara man kommenterar bort referensen till den saknade funktion som diskuteras nedan går det alldeles utmärkt att bygga en binär. Vilken eventuell kod som Voddler har, men inte har med i den källkod som finns är dock svårt att uttala sig om. Dessutom byggde jag den på en debian-maskin i UK, så jag har inte så mycket testmöjligheter där. Men bygger, det gör den.
(En brasklapp här, detta är work in progress och kan ändras när jag kommer längre i undersökningen, jag kan fortfarande ha missat ett och annat. Kommentera eller maila mig stefan@gorling.se om ni känner till några detaljer jag missat i denna fråga.)
De senaste dagarna har det varit mycket prat kring att Voddler inte följt licensreglerna för den mediespelare, XBMC de använder sig av i sin klient. GPL är en s.k. viral licens som innebär att kod som använder den även den blir smittad, och därigenom måste publiceras.
Många är dock besvikna på den programkod som Voddler lämmnat ifrån sig (190 MB zip-fil)
Så här ser klienten ut
Voddler-klienten kan sägas bestå av tre olika delar.
- Ett frontend, menysystem och uppspelare baserat på den GPL-baserade XBMC, kallas VoddlerPlayer.
- Ett backend, som sköter det praktiska, hämtar data och information direkt från Voddlers servrar eller via P2P, som kallas VoddlerNet.
- En bunt python-kod som pluggar in i XBMCs infrastruktur och anpassar menyer och klistrar ihop det hela. Denna kod kommer vad jag kan se helt öppet med själva voddlerinstallationen.
VoddlerPlayer hämtar information från VoddlerNet över TCP/IP. VoddlerNet har en inbyggd webbserver som tar emot VoddlerPlayer-förfrågningar och svarar på dem. De två programmen har således ingen kontakt som gör att VoddlerNet-koden måste publiceras.
(Exakt hur detta går till kan ni se genom att läsa Foddler-koden, vad den gör är att logga in mot VoddlerNet som om den vore VoddlerPlayer, och lista filminformation och streama dem via VLC istället för XBMC.)
Vad Voddler undanhållit
Voddler har släppt programkod för XBMC-klienten, det är en relativt ointressant anpassning av XBMC med lite programkod för att läsa de Voddler-specifika RSS-filerna med filminfo och lite andra mindre anpassningar som jag inte tror att XBMC-projektet är så intresserade av att inkludera i sitt eget programkodsträd.
Vad jag kan hitta är det främst en enda programkodssnutt som saknas (och här är jag inte helt färdig ännu).Och det är metoden GetSsoToken(), som anropas i metoden doVoddleUserLogin() (xbmc/Util.cpp, rad 4722).
Vad jag kan förstå, speciellt genom att läsa Foddler-koden som reverse-engineerat just denna metod är det den kodnyckel som krävs för att VoddlerPlayer ska få ansluta till VoddlerNet. Utan denna kan XBMC-koden inte användas till att just spela Voddler-material, med denna nyckel kan vad som helst relativt enkelt ansluta och hämta ut allt Voddler-material, vilket också Foddler-klienten gör enkelt.
Varför Voddler undanhållit det
Den här lösningen är rätt klumpig och skiner knappast av brillians. Men när man ser på hur den är konstruerad är det lätt att förstå varför de inte vill lämna ifrån sig denna del av koden. Med en fungerande kodnyckel kan vem som helst surfa rakt in med sin RSS-läsare till VoddlerNet-webbservern och ladda ner okrypterade videoströmmar av sina favoritfilmer (Detta hyffsat förenklad beskrivning).
Detta eftersom uppkrypteringen (om strömmen är krypterad, men det utgår jag ifrån) sker i VoddlerNet-backend och sedan skickas vidare till XBMC-frontend okrypterad.
Om man hade inkluderat denna programkod hade vem som helst kunnat skriva program som laddade ner filmer och spred dem för vinden hursomhelst, något filmbolagen inte är särskilt sugna på.
Är det ett brott mot GPL?
Jag är lite kluven till det här. Visst, det är formellt ett brott mot GPL, å andra sidan uppfyller de andemeningen med licensen, de delar med sig med alla förbättringar/förändringar de gjort.
Men som Voddler säger i en IDG-artikel:
“Voddler tillbakavisar kritiken och hävdar att den kod de har lagt upp är tillräcklig för att följa licensen.
– Det går att kompilera en spelare utifrån den kod vi har lagt upp. Den kan inte spela vårt innehåll men den kan spela andra mediefiler, säger Ellinor Lejman, pressansvarig på Voddler.
Hon påpekar också att innehållshanteringen sköts av ett annat program som samarbetar med spelaren. Den lyder inte under gpl utan en stängd licens.”
Samtidigt vill de inte att vem som helst ska kunna prata med VoddlerNet-bakändan. Den är inte fri och får inte fipplas med. Kanske kunde de konstruerat den spärren på ett snyggare sätt dock.
Nu löser Voddler detta genom att byta ut GPL-baserade XBMC mot en ny Adobe AIR-klient som är sluten och där DRM-uppkrypteringen sker inne i denna klienten. Det innebär att även om hela VoddlerNet-programvarna är kvar (vilket jag har uppfattat det som att den ska vara), så kommer hack som Foddler enbart få ut en krypterad videoström.
Andra anklagelser
Noah Williams uppmärksammar på Twitter att VoddlerNet använder sig av kod under den mycket mindre restriktiva BSD-licensen. Denna licens kräver inte att du delar med dig av din programkod på samma sätt, men du måste skicka med själva BSD-licensen med programmet, vilket han hävdar att Voddler inte gör.
Uppdaterat: Denna programkod finns även refererad i en Make-fil i VoddlerPlayer men behövs inte, så den används säkerligen för getSsoToken(), rimligt antagande då det är ett krytpografiskt bibliotek det handlar om.