Czy istnieje powód, dla którego kod źródłowy oprogramowania wymienionego w artykułach naukowych nie został wydany? Rozumiem, że prace badawcze dotyczą bardziej ogólnej idei osiągnięcia czegoś niż szczegółów implementacyjnych, ale nie rozumiem, dlaczego nie udostępniają kodu.
Na przykład ten papier kończy się na:
Wyniki
Ludzki system rysowania linii jest wdrażany za pomocą platformy Qt w C ++ przy użyciu OpenGL i działa na dwurdzeniowej stacji roboczej Intel 2,00 GHz bez dodatkowej pomocy sprzętowej. Możemy interaktywnie rysować linie, podczas gdy system syntetyzuje nową ścieżkę i teksturę.
Czy utrzymują kod źródłowy celowo zamknięty z powodu monetyzacji, którą zamierzają z nim zrobić, czy z powodu praw autorskich?
Odpowiedzi:
Przychodzi mi na myśl kilka powodów.
Również tradycyjne poglądy na temat rozsądnego poziomu odtwarzalności różnią się w zależności od dziedziny. Oczekuje się, że chemik publikujący artykuł na temat nowej metody syntezy zapisze wystarczająco dużo szczegółów, aby inny chemik mógł przeprowadzić syntezę. Nie oczekuje się, że wyśle produkty i produkt do dziennika. Czytelnicy, którzy chcą używać / powielać papier, powinni kupować własne produkty i samodzielnie przeprowadzać syntezę w swoim laboratorium (choć mogą poprosić o przyjazd i wizytę w laboratorium, aby zobaczyć, jak to się robi w praktyce). Biolog nie powinien też dołączać do papieru swoich nowych myszy transgenicznych. Ten pogląd na odtwarzalność odpowiada np. Podaniu (pseudo-kodu) opisu algorytmu w przeciwieństwie do wysyłania rzeczywistej implementacji.
źródło
Przeczytaj prezentację Randall LeVeque na temat „10 najważniejszych powodów, aby nie udostępniać swojego kodu (i dlaczego powinieneś mimo to)” http://faculty.washington.edu/rjl/talks/LeVeque_CSE2011.pdf
Przekonująco przekonuje, że kod jest analogiczny do dowodów w matematyce, i zachęca nas do rozważenia świata, w którym dowody nie są publikowane, ponieważ są one zbyt długie lub zbyt brzydkie, albo nie działają w skrajnych przypadkach, lub mogą być warte pieniądze, albo ktoś może je ukraść ...
Zasadniczo, jeśli zajmujesz się nauką, powinieneś opublikować swój kod. W przeciwnym razie robisz alchemię i możesz latać z powrotem do ciemnych wieków i, o ile o mnie chodzi, umrzeć zarazy.
źródło
Zasadniczo programy używane do tworzenia wyników pracy są tylko narzędziami i tylko wyniki mają znaczenie. Nie są więc umieszczane na papierze, który przedstawia kontekst, metodologię, wyniki i dyskusję na ich temat.
Ale wyniki muszą być odtwarzalne. A następnie, gdy źródła danych, na których oparty jest artykuł, są publicznie dostępne, programy przekształcające je w wyniki są również generalnie wymagane. Często umieszczane są „gdzieś” w Internecie, jeśli nie powoduje to żadnych problemów z patentami / prawami autorskimi. Lub przynajmniej autorzy muszą wysłać ci programy, jeśli o to poprosisz.
źródło
To nie jest zamknięte źródło. Oprogramowanie po prostu wcale nie zostało opublikowane.
Krótka odpowiedź:
Długa odpowiedź:
Zamknięte źródło oznacza, że oprogramowanie zostało opublikowane, a kod źródłowy nie. Ale częstym przypadkiem jest to, że ani oprogramowanie, ani kod źródłowy nie zostały opublikowane .
Z mojego doświadczenia (pracuję w naukach o atmosferze) autorzy są bardzo zadowoleni, jeśli się z nimi skontaktujesz i zapytasz, czy możesz zdobyć ich oprogramowanie (w tym oczywiście kod źródłowy) do prowadzenia badań. Jeśli zamierzam napisać artykuł z projektem opartym na ich projekcie, to przynajmniej uzyskają z tego cytat (dobrze!), Ale prawdopodobnie otrzymają z niego pracę współautora (oczywiście, że nie udokumentować swoje oprogramowanie, aby ktoś mógł z niego korzystać bez jego pomocy). Stosunkowo tani papier współautora, więc to jeszcze lepiej .
Prawdziwe pytanie brzmi:
Istnieje kilka powodów:
Lista może być dłuższa. To zasługuje na osobne pytanie, na Academia.SE, nie tutaj.
(Pamiętaj, że w mojej grupie publikujemy nasze oprogramowanie - licencjonowane na licencji GPL )
źródło
Może to zabrzmieć cynicznie, ale z mojego doświadczenia wynika, że prace naukowe nie są napisane, aby były łatwe do zrozumienia lub proste do odtworzenia. Zamiast tego w społeczności badawczej ważniejszy jest artykuł, który brzmi i wygląda bardzo naukowo. Z tego powodu większość autorów przekształca swój kod w formuły matematyczne i próbuje udowodnić, że ich algorytm jest matematycznie poprawny. Zwykle liczba stron takiego artykułu jest ograniczona, więc nie ma już miejsca na opublikowanie kodu. Ale oczywiście nie ograniczyłoby to żadnego autora do linkowania do pełnego kodu z adresem URL ...
Można założyć, że jeśli kod nie zostanie opublikowany, albo autorzy chcą spolaryzować swoje odkrycia, albo (co osobiście uważam, że tak jest częściej) obawiają się, że ludzie zobaczą, że ich badania nie są tak niesamowite, jak twierdzą. Często wyniki odnoszą się tylko do bardzo ograniczonej liczby przypadków.
Widziałem też, że z jednego prostego programu / algorytmu wyodrębniono kilka prac badawczych. Jeśli kod zostałby opublikowany, trudno byłoby napisać dalsze prace na ten sam temat. Wiedza jest więc powstrzymywana, aby z czasem publikować ją w małych kawałkach.
Zawsze należy pamiętać, że na uniwersytetach ważne są nie tyle wyniki lub możliwość zastosowania badań, ile liczba opublikowanych artykułów. To smutne, ale prawdziwe.
źródło
Oprócz zamiaru zarabiania, nie widzę dobrego powodu, aby pozostawić kod źródłowy poza dokumentami badawczymi. Zaczyna się niewielki ruch, który proponuje dostarczenie kodu źródłowego jako reguły do publikowania badań zależnych od oprogramowania w jakiś sposób, kształcie lub formie. Możesz przeczytać więcej na ten temat, nazywa się to Manifestem Kodu Nauki .
źródło
W powyższych odpowiedziach brakuje kilku praktycznych powodów, które często pojawiają się w grafice komputerowej (obszar, w którym opublikowano artykuł wspomniany przez autora). Wersja kodu różni się znacznie między polami w CS - na przykład w Machine Learning, kod jest zwykle publikowany. W interakcji człowiek-komputer kod prawie nigdy nie jest publikowany.
Wydałem sporo kodu w grafice komputerowej i chociaż uważam, że autorzy powinni opublikować swój kod, istnieje wiele prostych, niespecjalistycznych powodów, dla których tak nie jest . Na przykład
1) Większość projektów badawczych z zakresu grafiki komputerowej obejmuje współpracę między wieloma badaczami, często w różnych instytucjach, z których każdy zapewnia pewną część układanki (tj. Algorytmy, biblioteki itp.). Aby wydać działający kod, wszyscy badacze muszą się zgodzić. Rzadko jest to prosta dyskusja i zwykle łatwiej jest uniknąć problemu.
2) Często kod pojedynczej pracy jest osadzony w większej bazie kodu opracowywanej w laboratorium. Baza kodów będzie zawierać inne niepublikowane prace. Wydzielenie kodu dla pojedynczego projektu to dużo pracy, często bez bezpośrednich korzyści dla osób, które muszą wykonać tę pracę (patrz motywacja poniżej).
3) Uniwersytety często mają prawa własności intelektualnej do kodu. Dlatego konieczne jest skontaktowanie się z „biurem innowacji”, które sprawi, że twoje życie będzie nieskończenie trudne, abyś mógł udokumentować „wynalazek”, aby mogli go opatentować itp., Zanim go otworzysz. W niektórych przypadkach uniwersytet może nawet odmówić zgody na udostępnienie źródła (różni się to w zależności od instytucji i jest bardzo skomplikowane przez (1))
4) Wiele badań grafiki komputerowej jest przeprowadzanych przez korporacje. W takim przypadku autorzy również nie są właścicielami kodu i muszą uzyskać pozwolenie od prawników na wydanie kodu. Prawnicy mają niewielką lub żadną motywację, by powiedzieć tak.
5) Nie ma zachęty do publikowania kodu. Większość kodu badawczego grafiki komputerowej nigdy nie jest używana przez nikogo innego. Nawet jeśli tak jest, w przypadku kodu ogólnego zwykle zazwyczaj otrzymujesz potwierdzenie (bezwartościowe z punktu widzenia CV). Jeśli masz szczęście, otrzymasz cytat. Komisje zatrudniające i agencje Grant zazwyczaj nie dbają o to, czy wydałeś swój kod. Czas spędzony na przygotowaniu kodu do wydania to czas zmarnowany, który mógł zostać poświęcony na inny artykuł. (Są ludzie aktywnie próbujący to zmienić w grafice komputerowej).
6) Zachęca się do nie publikowania kodu. Kod może czasem przekształcić się w firmy typu start-up, uzyskać licencję dla istniejących firm itp. To finansuje przyszłe badania. Wszyscy musimy jeść.
źródło
To zależy. Osoba pisząca artykuł lub jej przełożony decyduje, co należy zrobić z kodem źródłowym. Czasami ludzie robią projekt open source.
Czasami projekty są zwykle finansowane przez firmy, co oznacza, że jest to ich własność. W takich przypadkach autor artykułu nie może pokazywać kodu.
źródło
Zwykle jest to kwestia ograniczeń strony. Jeśli algorytm jest wyjątkowo krótki, często jest reprezentowany, przynajmniej jako pseudokod, w artykule. Z drugiej strony, jeśli wydrukowana wersja podstawowego kodu ma nawet garść stron, wydrukowanie kodu nie pozostawia miejsca na treść artykułu. Artykuł w dzienniku, który ma dziesięć stron, jest długim artykułem.
Brak udostępnienia źródła stwarza ryzyko oszustwa. Ze względu na ten potencjał wiele czasopism wymaga od autorów podania kodu źródłowego jako informacji uzupełniających (które można uzyskać z czasopisma, jeśli masz dostęp; może to wiązać się z wysoką opłatą za subskrypcję). Niektóre inne czasopisma wymagają od autorów wydania kodu źródłowego każdemu, kto o to poprosi. Jeszcze inne czasopisma są jeszcze w ciemnych czasach; kod źródłowy nie jest wymagany do przesłania, a autorzy nie są zobowiązani do jego wydania.
Najprościej jest zapytać autorów, czy mogą dostarczyć ci kod źródłowy. Adresy e-mail autorów są obecnie zazwyczaj wymienione w większości artykułów w czasopismach.
źródło
Moje doświadczenie jako naukowca (5 artykułów opublikowanych) polega na tym, że czasopismo często nie wymaga wydania kodu, który został użyty do stworzenia wyników. Nie oznacza to, że czasopisma nie akceptują skryptów. Wiele czasopism pozwala na uzupełnianie materiałów online. Niektóre czasopisma nastawione na algorytmy i takie (np. Komputery i Geologia) wymagają dodania źródła algorytmu, ale jest to raczej wyjątek niż reguła.
Oprócz kultury w czasopismach, kod naukowców jest tylko środkiem do celu. Wielu nie jest profesjonalnymi programistami. Ponieważ wielu uważa kod za narzędzie do wyrażania nauki, nie odczuwa on pilnej potrzeby publikowania kodu. Ponadto dopracowanie kodu do punktu, w którym mógłby zostać opublikowany, zajmuje dużo pracy. Naukowiec otrzymuje wynagrodzenie za naukę, a nie za pisanie oprogramowania.
źródło
Najczęściej faktyczny program jest jedynie narzędziem do osiągnięcia celu, a nie sam produkt. Podanie pełnych szczegółów kodu źródłowego byłoby podobne do dostarczenia pełnego rysunku pióra używanego do podpisania raportu i / lub schematów komputera.
To powiedziawszy, zwłaszcza tam, gdzie zapraszana jest wzajemna ocena, kod źródłowy będzie dostępny - chociaż w ramach jakiejś formy Umowy o nieujawnianiu informacji (NDA) - ponieważ w ramach programu istnieje z natury własność intelektualna.
Jeśli naprawdę interesujesz się kodem, sugeruję, że komentarz @Buttons jest najlepszą radą: Zapytaj ich :)
źródło
Wiele zależy od celu, dla którego kod został napisany. Jeśli miałby to wykazać sens, być może nie jest zoptymalizowany, a zatem nie jest idealny do wydania. Jeśli podstawowe pojęcia i metodologia są prawidłowe, powinno być możliwe odtworzenie wyniku kodu od zera. Mogą występować również problemy dotyczące praw autorskich i własności.
Zasadniczo wydanie kodu nie jest technicznie niemożliwe, ale przyczyny, dla których może nie zostać wydany, są różne. Z tego powodu prawdopodobnie nie ma prostej odpowiedzi na to pytanie. W szczególnych przypadkach możesz zapytać zainteresowanych badaczy.
źródło
Artykuł, który zacytowałeś, ma już 28 stron, a większość treści dotyczy decyzji projektowych związanych z rozwiązaniem problemu (wymienionych w tytule).
Kod jest ostatnim krokiem do weryfikacji projektu. Nie jest to trywialne, ale nie jest to ta część, która dodaje wartości do wyników pracy, szczególnie jeśli weźmiesz pod uwagę przestrzeń, którą by to zajęło.
Nie każda sprawa jest taka sama. Niektóre artykuły zawierają kod źródłowy lub przynajmniej pseudo kod. Niektóre edytory na to nie pozwalają. Niektórzy na to pozwalają, ale ze względu na przestrzeń autorzy tego nie uwzględniają. W jednym czasopiśmie, w którym opublikowałem kod źródłowy, sformatowano go jako „liczby”, a wersja elektroniczna zawiera go jako dane graficzne, mimo że przesłałem go jako tekst.
źródło
Zachęty mają znaczenie, a zachęty badaczy mają na ogół zapewnić, że będą w stanie wytworzyć stały strumień dokumentów, które stopniowo będą na sobie nawzajem budować. Studenci na ogół potrzebują 3-5 opublikowanych prac, które mogą przekształcić w poszczególne rozdziały swojej pracy dyplomowej w celu ukończenia studiów. Wykładowcy młodsi muszą wygenerować jak najwięcej publikacji przed dokonaniem przeglądu kadencji. Z tego powodu większość artykułów akademickich to tak naprawdę papier
n
z serii. Na przykład dokument, do którego się odwołujesz, opiera się na dokumencie opublikowanym rok wcześniej przez tę samą grupę i omawia grunt, który prawdopodobnie obejmie następny artykuł.Publikacja kodu źródłowego potencjalnie pozwala innemu badaczowi z innej grupy na produkcję papieru
n+1
zanim oryginalny autor zrobi lub przynajmniej przedstawi artykuł, który obejmuje znaczną część ziemi, którą autor spodziewał się pokryć w ramach tego strumienia badań. Jeśli tak się stanie, absolwent może z łatwością znaleźć sobie kolejne 6-12 miesięcy w szkole, aby uzyskać wystarczającą ilość wyników badań do ukończenia studiów. Członek wydziału może skończyć z jedną mniej opublikowaną pracą, gdy nadejdzie czas przeglądu kadencji. Oba są oczywiście dużym ciosem w karierę naukowca. Dodaj fakt, że aplikacje akademickie są często częścią wysiłków badawczych wielu osób w grupie badawczej (bezpośrednio lub dlatego, że dzielą pewne komponenty), a grupa badawcza wywiera presję, aby nie publikować kodu, który może skończyć się zranieniem kogoś, kto pracujesz z każdym dniem.Często odbywają się podobne dyskusje w dziedzinach, w których gromadzenie surowych danych jest czasochłonne i wysoce rozproszone. Na przykład w astronomii grupa badawcza może spędzić lata gromadząc dane, zanim będą miały wystarczającą ilość informacji, aby opublikować jeden artykuł. Ale wykorzystają te dane do stworzenia serii dokumentów. Grupy badawcze bardzo niechętnie dzielą się większą ilością swoich zestawów danych niż jest to absolutnie konieczne, ponieważ innym grupom zbyt łatwo jest się poruszać w czasie, który zainwestowano w gromadzenie danych, aby czerpać korzyści z faktycznej analizy danych.
W końcu duża część tego kodu zostanie uwolniona, tak jak ostatecznie dane astronomiczne. Dzieje się tak często, gdy autor osiąga koniec tej serii artykułów lub gdy większość grup badawczych, które pracują nad podobnymi tematami, mają podobne silniki, więc wydanie kodu nie daje już nowemu badaczowi przewagi konkurencyjnej.
Byłoby idealne dla nauki, gdyby dane i kod zostały wydane szybciej. Ale często zaszkodziłoby to badaczowi naukowemu i to właśnie w tym przypadku ważne są zachęty.
źródło
Jako ktoś, kto robił to (po stronie studenta) kilka razy w przeszłości: często profesorowie piszący gazetę nigdy nawet nie widzą kodu źródłowego. Poproszą swoich uczniów o napisanie kodu, a następnie poprosą o ostateczny plik wykonywalny (lub nawet potwierdzenie wyniku), gdy będzie kompletny.
Ponadto często napisany kod i tak nie jest zbyt czytelny, ponieważ uczniowie po prostu zhakowali go razem, aby to zrobić, i ponieważ (chociaż są bardzo bystrzy) studenci bez doświadczenia w świecie rzeczywistym nie są najlepszymi programistami na świecie ...
źródło
Omówiono już większość powodów, o których myślę, ale pomyślałem, że dodam jeszcze dwa, które mi się przydarzyły:
Czasopismo nie ma pojęcia, co robić .
W przypadku jednego z artykułów, nad którymi pracowałem, zdecydowałem, że jestem absolutnie, bez żadnych wątpliwości, że będę zawierał kod źródłowy (cały punkt pracy to wizualizacja danych) i przykładowe dane, które mu towarzyszyć. Tak więc wraz ze zgłoszeniem załączyłem Elektroniczne suplementy 1 i 2 - skrypt R z moim kodem oraz plik CSV z danymi potrzebnymi dla wspomnianego skryptu R.
Okazuje się, że dziennik może przyjmować suplementy elektroniczne tylko wtedy, gdy zostały przypisane do plików Word. Próbując przez większą część dnia uzyskać skrypt R w tej formie, poddałem się i postanowiłem nie dołączać kodu jako dodatku. Mógłbym go założyć na moim uniwersytecie, ale jako doktorant wiedziałem, że stracę tam konto w ciągu ~ 1 roku - open source nie przyda się, jeśli zostanie natychmiast przejęty przez linkrot.
Skończyło się na tym, że umieściłem go na GitHubie i zamieściłem odniesienie do tego w gazecie, ale to dlatego, że naprawdę chciałem wprowadzić kod. Widzę, zwłaszcza, że większość ludzi w mojej branży nie używa czegoś takiego jak GitHub, po prostu decydując, że wysiłek nie będzie warty garstki ludzi, którzy go pobiorą i którzy i tak mogą do mnie napisać, jeśli naprawdę tego chcą.
Czasopismo po prostu nie jest zainteresowane
Na żądanie recenzenta umieściłem kilka drobnych szczegółów na temat samego kodu, ale jest to dziennik kliniczny (czytaj: nie ma jednego kodu), nie zezwala na suplementy elektroniczne, a dodanie kodu źródłowego prawdopodobnie byłoby więcej kłopotów niż było warto.
Paradoksalnie, jeśli ktoś nie szukać kodu, to jest (lub wkrótce będzie) open source, ale został już uruchomiony na krawędzi „to rośnie distractingly techniczna” i postanowiłem, że krótka, „make recenzent szczęśliwy „wspomnienie było wszystkim, co zamierzałem zrobić.
źródło
W wielu przypadkach implementacja (tj. Oprogramowanie nie ma znaczenia), ale w coraz większym stopniu implementacja wpływa na wyniki.
Za każdym razem, gdy implementacja ma znaczenie ... kod źródłowy powinien zostać zdecydowanie udostępniony! Im bardziej wyniki zależą od metod implementacyjnych lub obliczeniowych, tym ważniejsze staje się opublikowanie kodu źródłowego.
źródło
Chciałbym dodać kilka punktów na temat rodzaju kodu, z którym mam do czynienia jako chemometr (chemik przeprowadzający analizę danych):
Ludzie, którzy piszą kod analizy danych (tak jak ja), są stosunkowo nieliczni w porównaniu do osób, które używają tego kodu. „Kod niestandardowy napisany w domu” nie oznacza, że autorzy go napisali - może to być kod współpracowników, więc autorzy nie mogą go opublikować.
Można zaplanować oddzielną publikację kodu, a autor kodu (lub przełożony) może obawiać się, że nowość zostanie utracona, jeśli kod został (częściowo) upubliczniony wcześniej.
Nawet jeśli czasopismo, dla którego przeznaczona jest publikacja kodu, nie sprzeciwia się temu, że kod był wcześniej dostępny publicznie, czysta troska przełożonego (lub osoby w biurze IP) może wystarczyć, aby zatrzymać publikację kodu.
Kod analizy danych jest często dostosowywany do danych. Bez danych nie ma to większego sensu. (Możesz argumentować, że i tak dane powinny być publikowane, ale tutaj jest to inne pytanie i nie na temat).
W każdym razie, w moim instytucie, archiwizujemy surowe dane i kod analizy danych wraz z dokumentem. Domyślne zasady nie są (jeszcze?) Udostępniane publicznie , ale z pewnością byłyby dostępne na żądanie.
(Tradycyjny pogląd na to, co jest odtwarzalne w chemii, odpowiada raczej opisowi (być może pseudokodowi) algorytmu niż wysyłaniu rzeczywistego kodu źródłowego)
Wielu moich kolegów korzysta z interaktywnych narzędzi do analizy danych, które nie rejestrują etapów analizy danych. Więc nie ma kodu źródłowego, który mógłby zostać opublikowany. Analiza danych w mniejszym stopniu odpowiada programowaniu niż podejściu laboratoryjnemu: robisz rzeczy i zapisujesz to, co robisz i co obserwujesz w książce laboratoryjnej.
źródło