Serwis dla miłośników książek LubimyCzytać.pl wdrożył otwarty algorytm rekomendacji stworzony pierwotnie na potrzeby serwisu filmowego Filmaster.pl. Dzięki temu również bibliofile mogą teraz skorzystać z uroków spersonalizowanych sugestii, funkcji tak chwalonej przez kinomanów korzystających z Filmastera.
Wdrożenie było możliwe, gdyż algorytm stworzony przez zespół Filmastera opublikowany jest na licencji Affero GPLv3. Oznacza, że każdy może go wykorzystać w swoim projekcie, o ile wszelkie zmiany i poprawki udostępni publicznie na tej samej licencji.
To własnie potęga otwartości! Dobre rozwiązania, stworzone na potrzeby jednego projektu, szybko replikowane są w innych. Korzystają z tego wszyscy zainteresowani, gdyż algorytm unowocześniany przez kilka zespółów jednocześnie dąży do doskonałości szybciej niż ma to miejsce w przypadku zamkniętych, chronionych pod kluczem rozwiązań.
Marcin Szajda, twórca LubimyCzytać.pl, chwali wdrożenie:
Od dłuższego czasu poszukiwaliśmy rozwiązania, które na podstawie ocen użytkowników pozwoliłoby nam z dużą precyzją sugerować im książki warte przeczytania. Wybór padł na silnik rekomendacji Filmastera. Nowy silnik rekomendacji działa w serwisie od kilku dni, a odzew społeczności jest bardzo pozytywny. Każdy użytkownik, który ocenił w serwisie co najmniej 20 książek, otrzymuje codziennie aktualizowaną, pokategoryzowaną listę książek. Sam silnik nie jest trudny do wdrożenia, działa szybko, sprawnie i co najważniejsze bardzo dobrze poleca książki. Skuteczność algorytmu mierzona pierwiastkiem z błędu średniokwadratowego jest w granicach RMSE=0.88.
Jesteśmy bardzo zadowoleni z wdrożenia algorytmu rekomendacji Filmastera.
Autorem algorytmu rekomendacji jest Jakub Tlałka. Jego prezentację z Auli Polskiej można obejrzeć na stronie konferencji: Filmaster – komputerowe wróżbiarstwo czyli jak poprawić wyniki silnika rekomendacji o 20%? W miniony weeken Jakub na Jesieni Linuksowej w Ustroniu Jaszowcu, wygłosił również referat na temat rekomendacji, gdzie opowiedział m.in. o sposobach poprawiania skuteczności algorytmu. Wideo z tej prezentacji nie jest jeszcze dostępne.
Szczegółowo o algorytmie rekomendacji poczytać można na wiki projektu Filmaster: New recommendation engine, a na bitbuckecie ściągnąć można otwarty kod algorytmu.


Ciekawe kiedy usłyszymy, że jakaś zamkniętoźródłowa firma ukradła ten kod i go używa bez podzielenia się zmianami.
Niestety takie oszustwa mają często miejsce przy open-source. Kradnie nawet „biedny” microsoft.
Akurat Microsoftowi (w odroznieniu od na przyklad developerow Linuksowego kernela, ktorym zdarzylo sie ukrasc troche kodu z BSD) nigdy sie to nie przydarzylo – gdyby sie przydarzylo, natychmiast by to zauwazono i nakrecono afere. Aczkolwiek byla kiedys sytuacja, gdy jakis podwykonawca Microsoftu „pozyczyl” sobie kod na GPL w jakiejs bzdurce do wypalania plyt – Microsoft zachowal sie prawidlowo i rozdal calosc na GPL.)
Jak można ukraść trochę kodu na licencji BSD?
@Bartek Krawczyk: Naruszajac jej warunki, na przyklad usuwając ją ze źródeł i zastepujac licencją GPL.
Wystarczy nie podawać info o autorze
@Bartek Krawczyk: Usuwając/modyfikując oryginalny copyright jak to miało miejsce w przypadku sterownika ath5k.
@blinkkin: OMG, BSD nie jest wolna, próbuje zawirusować czyjś kod!!111oneoneone
de Raadt nie ma racji. Oczywiście, nie było to pewnie miłe i dla samego sterownika byłoby lepiej gdyby był licencjonowany podwójnie – co do meritum sprawy nie mam wątpliwości. Jednak cała reszta to bullshit – co to w ogóle za pomysł że modyfikując coś na BSD muszę to udostępnić na BSD?
@Poldek: Chyba nie rozumiesz na jakich zasadach działa re-licencjonowanie BSD i prawa autorskie jako całość. Oryginalnego copyrightu nie można usunąć, bo to nic innego jak plagiat. Dodaje się po prostu drugą licencję do kodu.
Zresztą dobry tego przykład to niedawna afera z plagiatem tekstu na vBeta.pl pochodzącego z OSblog.pl. Używana licencja Creative Commons 3.0 Uznanie Autorstwa na OSblog.pl jest bardzo liberalna i utwory pochodne mogą być licencjonowanie na czym tam chcesz. Jednak nie możesz sobie przywłaszczyć autorstwa tekstu.
BSD to nie domena publiczna o czym wiele osób zapomina. Dwu-klauzulowa BSD gwarantuje praktycznie tylko uznanie autorstwa, ale tacy „ludzie” jak ty chcą i to usunąć.
@Edek: a to nie była inna sytuacja, gdy okazało się, że jakiś dźwięk w Windows powstał przy użyciu zcrackowanego softu?
@blinkkin: tym niemniej, pierwszy akapit komentarza Poldka – nadzwyczaj celny 😉
@Poldek: BSD nie jest wirusowe. Modyfikujac cos na licencji BSD nie musisz udostepniac tego na licencji BSD. Po prostu nie wolno ci usunac tekstu licencji ze zrodel. Mozesz wlaczyc taki kod do projektu na dowolnej innej licencji, mozesz go zamknac, ogolnie – mozesz zrobic co chcesz, pod warunkiem, ze przestrzegasz tych dwoch (albo trzech, albo czterech, zaleznie od wersji) licencji.
@Reddie: Pierwszy akapit komentarza Poldka jest kompletnie chybiony, poniewaz autor nie rozumie, czym jest wirusowosc. Wirusowosc GPL nie polega na tym, ze z kodu nie mozna usunac licencji GPL – wirusowosc GPL polega na tym, ze linkowanie z kodem na licencji GPL wymusza licencjonowanie linkowanego kawalka na GPL. Zadna inna licencja – ani open source, ani closed source – nie ma tej wlasciwosci.
Jeszcze odnosnie podwojnego licencjonowania – podwojne licencjonowanie na BSD i GPL to bezsens. W praktyce taki kod jest na licencji BSD (podwojne licencjonowanie oznacza, ze mozna sobie wybrac, ktorej licencji chcemy przestrzegac; GPL to po prostu zbior dodatkowych zakazow i obostrzen, ktory kazdy moze olac, 'wybierajac’ sobie przestrzeganie BSD), a doklejona licencja GPL jedynie zaciemnia sprawe. Uzyty kod na licencji BSD najlepiej zostawic na licencji BSD, nie doklejajac zadnych kolejnych licencji, ktore i tak nie maja w tym przypadku znaczenia prawnego.
Całkowicie niecelny. Różnica jest taka, że modyfikacje kodu BSD (nawet jedna linijka) mogą być licencjonowane na czymkolwiek. W przypadku LGPL takie modyfikacje muszą już być na LGPL lub GPL, natomiast kod zewnętrzny „rozmawiający” przez API może być różnie licencjonowany. Natomiast w przypadku GPL wszystko musi być na GPL, nawet kod niebędący bezpośrednią modyfikacją.
Prostszej licencji niż np. ISC nie da się napisać (o czymś już kiedyś wspominałem). Licencja, aby była prawidłowa musi posiadać przynajmniej jedno ograniczenie/warunek. Poniżej zamieszczam moje tłumaczenie (niekoniecznie prawidłowe) licencji ISC:
Warunek ten w praktyce nie stanowi żadnego problemu. Co więcej licencje BSD-like sprawiają mniej problemów prawnych niż domena publiczna.
W każdym razie poznanie podstawowych zasad praw autorskich (czym jest plagiat, copyright etc) nie jest moim zdaniem odkrywcze. Źle świadczy to tylko o osobie, która koniecznie chciała wtrącić swoje 3-grosze.
@Reddie:
Ja nie @Edek, ale wskażę: http://serwer22962.lh.pl/microsoft-przyznal-sie-do-uzycia-kodu-gpl-w-narzedziu-windows-7-usbdvd-tool/ (bo sam pisałem tego newsa ;-))
Choć fakt, coś o crackowanym sofcie audio też kiedyś było.
@Edek, blinkkin: przecież Poldek napisał to co napisał w formie ironiczno-prześmiewczej, celnie punktując fanbojów BSD dla których sensem życia jest narzekanie na GPL. A konkluzja powinna być taka, że niech każdy używa tego, co chce 😉
@Ktos: ok, tak mi się skojarzyło.
@Reddie: Analogicznie, (bodajze) Ballmer powiedzial to, co powiedzial – o Free Software i komunizmie – w formie ironiczno-przesmiewczej, celnie punktujac fanbojow Linuksa, dla ktorych sensem zycia jest narzekanie na Windows.
Odpiszę zbiorczo.
Nie mam zamiaru, jak i nikt z developerów Linuksowego kernela, nikomu nic odbierać. Tak się składa że całkiem nieźle znam sprawę tych sterowników i *NIE POPIERAM* tego co zrobił Jiri i to na kilku płaszczyznach. Uważam to za *błąd*. Jednakże:
– informacja o autorach NIGDY NIE ZNIKNĘŁA, a jak się okazało była i tak niepełna: http://lwn.net/Articles/252542/
– informacja o tym że sterownik bazuje na kodzie BSD pojawiła się bodajże następnego dnia, chyba również dodana przez Jiriego,
– wątek wskazany przez blinkkina to tragifarsa
Co do licencji dual: mają one bardzo duży sens, m.in. ze względu na czasami przykry fakt istnienia bibliotek GPL-only (przykład pierwszy z brzegu – Cygwin) oraz fakt istnienia projektów akceptujących tylko kod GPL. Ten dualizm jest przykładem tak ponoć wyznawanego przez fanów BSD racjonalizmu i podejścia wolnościowego.
@Edek: z tego, co Ballmer powiedział, nijak nie wynika, jakoby nie mówił tego poważnie.
W wypowiedzi Poldka wskazują na to takie odzywki jak „OMG” i „!!111oneoneone”, które – jak widać po dalszym ciągu komentarza – nie stanowią stałego elementu jego wypowiedzi.
@Poldek: Biblioteki GPL-only mozna linkowac z kodem na BSD; nie trzeba BSD licencjonowac podwojnie. Projektom akceptujacym tylko kod na GPL mozna wytlumaczyc, jak dziala licencja – jesli nie zrozumieja, prawdopodobnie i tak niczego uzytecznego nie stworza.
@Reddie: W przypadku Ballmera mozna spokojnie zalozyc, ze cokolwiek, co mowi, jest dla jaj.
> co to w ogóle za pomysł że modyfikując coś na BSD muszę to udostępnić na BSD?
Bredzisz, to jest wlasnie fundamentalna roznica miedzy
GNU a BSD, biorac cos na licencji BSD nie musisz tego
dalej udostepniac na BSD.
@jarek: LOL! Powiedz to Theo, a nie mi.
Nie zniknęła z głównego drzewa repozytorium, ale to akurat przywilej rozproszonej pracy z gitem. Diffy> w zaproponowanym przez Jiriego patchu musiały zostać z czegoś wygenerowane. Pewnie sprawy by nie było, gdyby Jiri zaproponowałby usunięcie copyrightu, ale bez tego nieszczęsnego diffa.
To jak zareagowała społeczność OpenBSD to osoby temat. Chamstwo uprawiają od dobrych kilku lat, co dobrze obrazuje niedawny wpis Thorstena Glasera (chodzi o ostatni akapit).
Z mojego punktu widzenia tragikomiczne jest co innego. Jeśli deweloper uznanego projektu open source nie rozumie podstawach zasad dotyczących licencjonowania, to jakie może być jego pojęcie o najbardziej skomplikowanej licencji – GPL? Śmiejemy się z EULA, ale czy z licencjami FLOSS jest lepiej, skoro do rozwiązania niewielkiego problemu potrzebni są prawnicy?
Widzę że mój poprzedni komentarz się nie ukazał, może jest jeszcze okazja do szybkich sprostowań:
1) chłopaki od BSD – mega szacun bez ironii, jak mogę wyrazić wdzięczność? Może macie jakąś stronkę z prezentami które chcielibyście dostać?
2) chłopaki od Linuksa – keep up the good work, i pamiętajcie o punkcie pierwszym i copyrightach.
3) wszyscy niezaangażowani: to taki folklor. BSD jest fajne, ale czasami GPL jest fajniejsze. Jeżeli napisaliście coś, co powinno być standardem, to wszystkim będzie miło jeżeli będzie to BSD. Jeżeli jest to coś naprawdę innowacyjnego i bez odpowiedników, to zdania będą pewnie podzielone, ale i BSD i GPL może być dobrym wyborem. Jeżeli natomiast budujecie biznes wokół swojej różnicy od innych, to (A)GPL lub nawet licencja własnościowa pewnie będzie najfajniejsze. I tyle.
@Poldek: LOL! Powiedz to Theo, a nie mi.
Ktory to jest argument „LOL” czy „powiedz to Theo”?
W chwili gdy to pisałem mojego poprzedniego komentarza jeszcze nie było :-). Ot, uroki moderowania (spoko, rozumiem),
@blinkkin: Mimo iż jestem zatwardziałym linuksiarzem, jestem bardzo pozytywnie nastawiony do BSD. Znajdziesz mój kod w projektach GPL i BSD. Ponadto:
@trasz: Biblioteki GPL-only mozna linkowac z kodem na BSD; nie trzeba BSD licencjonowac podwojnie – ja się z Tobą zgadzam, naprawdę! Nie chodzi jednak tylko o literę prawa, ale również odbiór w community. Jak sądzisz, co można znaleźć na listach dyskusyjnych Cygwina? I czy warto kogoś przekonywać? W imię czego, skoro nasze poprawki są i tak kosmetyczne? W naszym przypadku nie ma to większego sensu, zwłaszcza jeżeli udostępniamy na BSD/GPL narzędzie referencyjne wręcz *przeznaczone* do dalszej rozbudowy przez OEMów.
@blinkkin: jestem zdania, że prawnicy wkraczają tam gdzie zawodzą obyczaje. Jak już wspomniałem, zgadzam się że Jiri popełnił w tym względzie błąd, niemniej jednak cały przytoczony przez Ciebie wątek odnoszący się do podwójnego licencjonowania nie ma kompletnie żadnej wartości logicznej – nie można nawet z czystym sumieniem powiedzieć że to same brednie, bo zdarzają się sensowne opinie ginące pod stosem innych komentarzy.
@jarek: Jak już mówiłem, nie popieram tej akcji. Cytując Theo:
That means (at some ethical or friendliness level) you probably do not want to put a GPL at the top of a BSD or ISC file, because you would be telling the people who wrote the BSD or ISC file: „Thanks for what you wrote, but this is a one-way street, you give us code, and we take it, we give you you nothing back. screw off.”
At some ethical or friendliness level, to ja się zgadzam, jak już wielokrotnie w tym wątku wspomniałem. Ale co to ma do licencji, to w dalszym ciągu nie wiem.
Zagadka z cyklu licencje – Mamy aplikacje napisana w QT(LGPL) skompilowana MinGW (w zaleznosci od kompentow GPL i Public Domain). Wszystko dynamicznie linkujemy. Pytanie – czy można zamknąć kod aplikacji ? biblioteki Qt oczywista sprawa, a co z tymi z MinGW (
libgcc i mingw10) ??
@koniar: libgcc posiada wyjątek na linkowanie (GPL linking exception). Natomiast biblioteka uruchomieniowa MinGW jest domeną publiczną. Więc nie powinno być problemów z zamknięciem kodu aplikacji. Dla pewności możesz zapytać się na liście dyskusyjnej MinGW.
„You as a software manufacturer are free to use the MinGW runtime in your proprietary and OpenSource software as you see fit.” <- z MinGW
ps. libgcc – tylko dynamicznie mozna ? dobrze to rozumiem ?
Nie jestem pewien, ale chyba masz rację. W każdym razie lepiej użyć dynamicznego linkowania na wszelki wypadek. Zawsze o konkrety możesz zapytać się na liście dyskusyjnej GCC.
…i tak linkuje dynamicznie
… przeczytałem jeszcze exception i jest tam wyraźnie „the header files and runtime libraries covered by this Exception”, wiec inaczej sie nie da.
@michuk: tak gwoli ścisłości, czy na AGPL jest kod źródłowy Filmastera z implementacją algorytmu, czy sam algorytm też jest gdzieś opisany i zlicencjonowany?
Aha, poklikałem w linki i widzę, że jest dokumentacja algorytmu. Jednak wg. opisu, jedynie kod jest licencjonowany AGPL.
Nie rozumiem. A co jeszcze oprócz kodu chcesz licencjonować? Dokumentacja jest na Creative Commons 3.0 Uznanie Autorstwa.
@michuk: licencja AGPL dotyczy tej konkretnej implementacji. Czyli jeśli ktoś napisze sobie implementację w Ruby to licencja już go nie dotyczy.
W zasadzie to chodzi mi o to zdanie:
Algorytmy nie mogą mieć licencji. Mogą co najwyżej być opatentowane. Ale w Polsce i UE nie obowiązują patenty na oprogramowanie. I bardzo dobrze.
@michuk: jak już są opatentowane to mogą być udzielane na pewnych zasadach, i te zasady to właśnie licencja. I nie mówię czy to dobrze czy źle, tylko odnoszę się do konkretnego zdania z którego wynika właśnie, że algorytm _jest_ zlicencjonowany. Dzięki za wyjaśnienie 😛
Nie są opatentowane. Przynajmniej w Polsce. Jeszcze raz: u nas nie da się opatentować algorytmu.
@michuk: a czy ja mówiłem, że u nas?
Chcialbym zauwazyc, ze wykorzystanie tego kodu zrodlowego jest niemozliwe m.in. w jakimkolwiek portalu wykorzystujacym kod WordPressa – WordPress jest na GPLv2, ktore jest niekompatybilne z AGPLv3.
WordPress nie korzysta z tzw. „GPLv2-or-later”? W tym przypadku każdy może prze-licencjonować kod z GPLv2 na GPLv3. Co więcej nawet dodanie małego patcha na licencji GPLv3 spowodowałoby, że kod WordPressa efektywnie stałby się GPLv3.
Tak, więc wszystko zależy czy WordPress posiada zapis „GPLv2-or-later”? Jeśli posiada to nie ma problemu z AGPLv3, jeśli nie to rzeczywiście jest niekompatybilny.
Zresztą ciężko mi sobie wyobrazić przypadek, kiedy kod Filmasterowego „skryptu” napisanego w Pythonie, miesza się z PHP WordPressa. Tym bardziej, że Django (i inne Pythonowe frameworki) to popularne rozwiązanie.
@blinkkin Kod rekomendacji jest w C++, nie w Pythonie. To samo w Pythonie działało ok 100 razy dłużej.
@trasz Rekomendacje są na tyle oddzielone od reszty Filmastera, że nie jest problemem wziąć ten kod i w swoim projekcie wydzielić jako jako zewnętrzny moduł. Tak właśnie zrobiło LubimyCzytac, z naszym błogosławieństwem, co oznacza, że nie muszą całości swojego kodu udostępniać na AGPLv3, a jedynie poprawki do algorytmu.
@michuk: Dzięki za sprostowanie. Nie sprawdziłem kodu, a przez sporą ilość statusów na identi.ca/blipie związanych z Filmasterem do głowy wbiło mi się Django 😉
Postanowiłem zarejestrować się w serwisie i zobaczyć jak rzeczywiście działa ten algorytm.
Jesteśmy z Ciebie dumni…
To fajnie…
A na serio algorytm działa, choć właściwie trudno mi powiedzieć jak dobrze. Akurat zaproponował mi samych autorów i książki, o których nigdy nie słyszałem.
Wolę biblionetkę 🙂
Nie do końca rozumiem zbitek ostatnich trzech słów tego wpisu. Otwarty kod algorytmu ? Algorytm to algorytm, a jego implementacja to już inna para kaloszy. Czy nie chodzi o to, że na bitbukecie można ściągnąć przykład implemntacji algorytmu, który jest oparta o liberalnej licencję, co może oznaczać, że fragmenty lub całość implementacji, podobnie jak sam algorytm, można wykorzystać we własnym projekcie ?
Jeżeli się czepiam do wybaczcie, ale serio ostatnie zdanie jest dla mnie nieco niejednoznaczne.
pozdrawiam
S.Wojnowski
wojnowski o wordpresie
Tak, oczywiście chodzi o kod implementacji, a nie algorytmu. Algorytm nie ma kodu, bo to koncept. Ostati akapit to skrót myślowy po prostu.
Borys,
dzięki za słowo wyjaśnienia.
Sorry za literówki w moim poprzednim komentarzu.
Pozdrawiam
S.Wojnowski
LubimyCzytać.pl nie istnieje. Istnieje LubimyCzytac.pl a to różnica, dlaczego news jak i sama strona wprowadza w błąd?
Domena lubimyczytać.pl wskazuje na tem sam serwis co domena lubimyczytac.pl tylko posiada polski znak w adresie. To jedno i to samo.
Nieprawda. lubimyczytac.pl wskazuje na 178.63.65.137, natomiast lubimyczytać.pl NIE wskazuje na 178.63.65.137.
Nieprawda. lubimyczytac.pl wskazuje na 78.63.65.137 a lubimyczytać.pl nie wskazuje na 78.63.65.137. To kolejny nieinternacjonalizacyjny adres do serwisu.
Poczytaj: http://www.dns.pl/IDN/ lubimyczytać.pl to xn--lubimyczyta-vlb.pl. Jeżeli Twoja przeglądarka nie obsługuje konwersji to nie używaj adresu z „ć”.