Dlaczego artykuły badawcze, które wspominają niestandardowe oprogramowanie, nie publikują kodu źródłowego? [Zamknięte]

69

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?

Antoine
źródło
42
Z tego samego powodu w większości artykułów brakuje surowych danych (publikując jedynie „zniekształcone statystycznie„ wyniki ”).
SK-logic
2
Zredagowałem pytanie. Być może „wzmianka” nie jest najlepszym słowem. W niektórych przypadkach niektóre z punktów poruszonych w dokumentach krytycznie zależą od oprogramowania, ale oprogramowanie to vaporware. W celu prawidłowej oceny ważności artykułu ktoś musi być w stanie uruchomić oprogramowanie.
Kaz
7
@JohnL Powiedziałbym, że artykuł może krytycznie polegać na oprogramowaniu, nie mówiąc o oprogramowaniu. Jak interesująca własność świata, która została zademonstrowana / znaleziona za pomocą narzędzia programowego. Jeśli nie możemy przejrzeć narzędzia, skąd możemy wiedzieć, że wniosek jest poprawny? (A raczej: łatwiej jest to sprawdzić, jeśli widzimy to narzędzie!)
Andres F.,
4
@Andres F - Jedną z możliwości jest wdrożenie własnej wersji oprogramowania przy użyciu pomysłów opisanych w artykule. Chociaż jest to więcej pracy, ma również prawdopodobnie większą wartość - ponowne uruchomienie tej samej implementacji pokazuje tylko jedną implementację. Nowa implementacja pomaga wykazać, że same pomysły są ważne, a nie przypadek niektórych szczegółów implementacji. Istotne problemy, które mogły nie zostać zauważone lub opisane wcześniej, mogą zostać wykryte podczas ponownego wdrożenia.
Steve314,
3
@KonradRudolph, oczywiście, że nie zawsze będzie dostępny. Może nawet stać się niedostępny w ciągu kilku lat od publikacji (taśmy skasowane i ponownie użyte, cała grupa rozwiązana, strzępy papieru itp.)
SK-logic

Odpowiedzi:

71

Przychodzi mi na myśl kilka powodów.

  • Kod jest za duży dla artykułu. Przez krótki czas interesujące projekty były na tyle krótkie, że można je było opublikować w artykule, który je opisał. Może się to nadal zdarzyć, ale wiele projektów o wystarczająco dużych rozmiarach, aby były interesujące, stało się zbyt dużych, aby można je było opublikować w artykułach, które je opisują.
  • Hosty publiczne nie są bezpłatne ani trwałe. Do niedawna tanie, trwałe, łatwo dostępne hosty publiczne nie były dostępne.
  • Publikacja pracy jest łatwiejsza niż publikacja projektu. Niektóre osoby mają czas na opublikowanie artykułu lub projektu, ale nie jedno i drugie.
  • Zachęty związane z rolą. Wiele lat temu zapytałem kolegę o rozwój produktu i patenty i dowiedziałem się, że większość tamtejszych ludzi zrobiła jedno lub drugie. Podobnie jak w przypadku pisarzy papierowych (think academia) i programistów open source, nagrody są skierowane na jeden lub drugi produkt.
  • Automotywacja. Pragnienie opisania pomysłów lub wdrożenia kodu nie zawsze występuje w równych częściach u tej samej osoby. Wielu moich profesorów otwarcie przyznało, że albo nigdy nie kodowali zbyt wiele, albo byli daleko od kodowania płynnego. Podobnie, wielu programistów z trudem pisze komentarze w kodzie lub decyduje się na kontrolę źródła.
  • Problemem jest także trwałość hostingu projektu i produktu roboczego. Kto chce linkować gdzieś, co może zniknąć za kilka lat, w rezultacie pomniejsz wartość papieru.
  • Tradycja. Wydawcy są nastawieni na recenzowanie i publikowanie artykułów, ale mogą nie być gotowi na taką samą ocenę projektó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.
  • Nagi kod może być szokujący . Korekta dokumentu o długości papieru wymaga o wiele mniejszego dopracowania niż kontrola kodu, przegląd kodu i zapewnienie jakości projektu. Mam dużo kodu, o którym wygodniej byłoby ci mówić niż pokazywać. Mamy nadzieję, że wszystko idzie naprzód do momentu, w którym wszyscy napiszemy piękny kod, ale jeśli Twój kod został spieszył, ledwo lub nie działa całkowicie, możesz być bardziej komfortowy, nie udostępniając plików wykonywalnych lub źródła.
  • Zamknięte źródło. Nie wszyscy przyjęli oprogramowanie typu open source. Wiele prac jest napisanych o pracy dla DoD, projektach komercyjnych lub projektach finansowanych ze środków prywatnych, w których korzyści płynące z ujawnienia projektu opinii publicznej, ale nadal istnieją tajemnice handlowe lub korzyści rynkowe, które można by zniweczyć przez otwarte pozyskiwanie kodu lub inne produkty pracy.
  • Opublikuj dalsze prace w oparciu o ten kod. Jeśli kod nie zostanie opublikowany, może dać autorowi przewagę w publikowaniu dalszych prac. Inni konkurujący badacze mogą potrzebować ponownego wykonania pracy, co może zająć cenny czas.
DeveloperDon
źródło
27
Jeśli artykuł zależy od kodu źródłowego, nie powinien zostać opublikowany. Jeśli nie możesz opublikować kodu, nie możesz opublikować artykułu. Artykuł z napisem „nasz program robi te cudowne rzeczy” i nie można go ocenić bez uruchomienia tego programu, wówczas papier graniczy z byciem reklamową broszurą dla niektórych programów.
Kaz
3
W pełnej zgodzie z Kazem - jeśli do przeglądu badań potrzebujesz czegoś, co jest niedostępne (dane, kod itp.), Nie powinno być akceptowane przez recenzowane czasopismo. Prawie wszystkie argumenty, o których wspominał DeveloperDon, odnoszą się również do publikowania danych ... jednak w ostatnich latach nastąpił raczej duży ruch w tym kierunku.
Joe
3
Wspaniały post. Dodałbym również, że czasami oddzielni naukowcy odtwarzający oprogramowanie samodzielnie stanowią CZĘŚĆ powtarzalności eksperymentu. Jeśli działa to tylko w sposób, w jaki koduje go 1 osoba, ale nie w sposób, w jaki kodują go inni ... to wyniki mogą zostać zakwestionowane, a błędy można zidentyfikować.
Jimbo Jonny
4
Twój drugi do ostatniego punktu jest najsilniejszy
Ja ... ”-” - ”„ ”
4
@AndresF. Kod jest absolutnie najmniej ważną rzeczą w gazecie. Artykuł brzmi: „Oto, co zrobiłem; oto moje metody; oto moje wyniki”. Kod jest kodyfikacją metody i powinien dawać dokładnie takie same wyniki. Jeśli chcesz odtworzyć wyniki pracy, ale korzystasz z jej kodu, niczego nie odtworzyłeś; czego powinien zrobić, to czytać ich sekcji Metody, wymyślić własne życie, a następnie napisać referat o tym, kiedy nie można odtworzyć ich wyniki.
Tacroy
40

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.

Spacedman
źródło
7
+1 Świetna prezentacja. Cieszę się, że ludzie dążą do zmiany :)
Andres F.,
+1 dzięki za link; może to pomóc mi w trwających negocjacjach z moim szefem na temat wydania części naszego kodu jako Open Source.
Frank
Słowo do góry! Dobra analogia zasługuje na głos ode mnie.
nullpotent
Nie jestem pewien, czy to porównanie jest naprawdę dobre do tego celu. Jestem chemikiem (który wolałby, aby opublikowano znacznie więcej kodu), nie matematykiem, ale dowody, które zwykle widziałem, nie dają najmniejszego kroku. Więc IMHO odpowiadają raczej skróconemu opisowi algorytmu pseudokodu niż faktycznemu kodowi źródłowemu.
cbeleites
27

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.

mgoeminne
źródło
2
Nie sądzę, że musisz wysłać każdego, kto prosi o Twój cenny kod ... IMHO Ta odpowiedź jest błędna. Chciałbym jednak zobaczyć świat badań, w którym informacje są bezpłatne ...
Dirk
3
@Dirk O ile mi wiadomo, jest to stosunkowo częste w badaniach empirycznych dotyczących oprogramowania. W ostatnim (jeszcze nieakceptowanym) zgłoszeniu mojego zespołu w tej dziedzinie jeden z recenzentów wyraźnie poprosił o publiczny dostęp do naszych danych, a także niektórych fragmentów kodu. Nie rozumiem, dlaczego kod powinien być tak cenny. Jest to (ogólnie) realizacja pomysłów opisanych w artykule. Publikowanie programów pozwala czytelnikowi sprawdzić, czy poprawnie tłumaczymy nasze pomysły na działania.
mgoeminne,
1
Hmm, więc wiesz (a) kim jest twój recenzent oraz (b) przekazujesz swój kod i dane komuś, kto może z tobą konkurować?
Dirk
1
Nie tak naprawdę, ponieważ (a) recenzenci proszą o opublikowanie kodu w miejscu, do którego mają dostęp anonimowo (lub uwierzytelnienie odbywa się w czasopiśmie) (b) Od czasu opublikowania artykułu inni badacze mogą szczerze korzystać z tej samej metodologii / narzędzi aby powielić badanie na innym zbiorze danych lub nawet na tym samym zbiorze danych. Replikacje są mniej prestiżowe niż oryginalny papier, będą cytować twoją pracę i oferują silną walidację twojego papieru. Oryginalni autorzy chętnie pozwalają innym wykonać za nich całą tę pracę.
mgoeminne,
@Paul Nie widzę związku z publikacją kodu źródłowego. W każdym razie dobrzy redaktorzy zwracają uwagę na notatki, które recenzenci piszą, aby uzasadnić swoje decyzje. Dlatego wzmianki takie jak „To bzdury” nie są brane pod uwagę. Jeśli redaktor uzna, że ​​rekomendacje recenzentów nie są wystarczająco istotne, zwraca się o opinię do innego eksperta. Studenci nie biorą udziału w procesie recenzowania. A jeśli nie możesz pozwolić, by twój artykuł został zaakceptowany po kilku latach od złożenia, powinieneś wyobrazić sobie, że ten artykuł (lub jego zawartość) nie jest tak dobry.
mgoeminne,
14

To nie jest zamknięte źródło. Oprogramowanie po prostu wcale nie zostało opublikowane.

Krótka odpowiedź:

Istnieje kilka powodów, dla których nie publikować oprogramowania, ale rzadko jest publikowane oprogramowanie w sposób zamknięty.

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:

Dlaczego nie publikują oprogramowania?

Istnieje kilka powodów:

  • Opublikowane oprogramowanie wymaga dokumentacji. Zwykle ludzie nie lubią pisać dokumentacji.
  • Opublikowane oprogramowanie może przyciągać użytkowników. Użytkownicy mogą mieć pytania. To wymaga czasu (ale patrz wyżej).
  • Opublikowane oprogramowanie może wymagać nietrywialnej konserwacji.
  • Oprogramowanie do publikowania wymaga hostingu.

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 )

gerrit
źródło
Może być również możliwe opublikowanie kodu, ale na podstawie licencji, która nie zezwala na modyfikację.
asmeurer
Nawet nie pomyślałem o tej sytuacji, w której autorzy opublikowaliby tylko skompilowaną wersję, aby udowodnić, że oprogramowanie faktycznie istnieje, ponieważ nie pomaga zrozumieć, jak to zrobili - przez to, jak rozumiem szczegóły implementacji. Uwielbiam czytać źródła kod!
alecail
8

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.

codingFriend1
źródło
13
To powiedziawszy, spróbuj zapytać naukowców! Czasami dostarczą ci kod źródłowy.
Lucina
3
Nie sądzę, żebyś był tu w pełni sprawiedliwy: „Zamiast tego w społeczności badawczej ważniejsze jest, aby artykuł brzmiał i wyglądał bardzo naukowo”. Oznacza to, że treść nie ma żadnej wartości, prawie dlatego, że nie można jej zrozumieć, ponieważ wygląda naukowo. Liczba artykułów, które publikujesz jest prawie nieistotna, jeśli nikt nie jest bardzo zainteresowany treścią. Moim zdaniem ta odpowiedź mówi raczej o twoich uprzedzeniach niż o rzeczywistości.
temptar
2
@temptar Cóż, może jestem trochę negatywnie nastawiony. Najbardziej uderza mnie to, że większość badaczy oczywiście nie chce opisać swoich badań w sposób łatwy do zrozumienia. Kiedyś miałem profesora, który po wyjaśnieniu mi algorytmu dodał: „Ale w artykule napiszemy to bardziej skomplikowane, aby brzmiało bardziej naukowo”.
codingFriend1
6
@ codingFriend1 - nie możesz i nie powinieneś uogólniać na podstawie jednego doświadczenia. To głęboko nienaukowe podejście. Musisz zastanowić się, kim jest grupa docelowa specjalisty ds. Badań, aw wielu, wielu przypadkach, to nie ludzie potrzebują wyjaśnienia, które uważasz za konieczne. Po to mamy komunikację naukową - pomost do niespecjalistów.
temptar
3
Popieram odpowiedź codingFriend1. To była powszechna krytyka skierowana do społeczności naukowej, w której mieszkam, a szczególnie do mojego uniwersytetu (który jest jednak najlepszy w kraju): że naukowcy są zmuszani do publikowania artykułów, im bardziej egzotyczny, tym lepiej. "Opublikuj lub zgiń". Zgłaszają to również naukowcy z obszarów, z którymi mniej się znam. Przepraszam, ale w wielu miejscach jest to smutna i rozpowszechniona prawda.
Andres F.,
7

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 .

hulkmeister
źródło
1
+1 za link! W pełni odzwierciedla moją wiarę w to, czym powinna być nauka i badania.
Andres F.,
6

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ść.

Ryan Schmidt
źródło
# 2 jest bardzo znaczący. Wydzielenie kodu, który jest odpowiedni dla papieru, może nie tylko wymagać ogromnej pracy, ale może się okazać, że jest to poza kontekstem (tj. Z dala od 100 innych narzędzi, bibliotek i niestandardowych ustawień laboratorium), jest zasadniczo bezwartościowy i niemożliwy do zrozumienia lub użycia. Ponadto „kod badawczy” jest często bardzo kruchy, zaprojektowany tak, aby udowodnić sens jednej pracy, a nie stworzyć solidny system oprogramowania, a badacz nie ma czasu ani ochoty go naprawić, aby być czymkolwiek innym niż silny ból głowy dla kogokolwiek innego.
Larry Gritz
5

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.

BЈовић
źródło
3

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.

David Hammen
źródło
1
Myślę, że kod źródłowy dostępny do recenzji nie wymaga, aby jego pełny tekst był zawarty w faktycznej pracy :) Nie tylko ze względu na możliwość oszustwa, ale myślę, że to naprawdę przydatne dla recenzentów, aby mogli sprawdzić, czy ty nie sprawdziłeś popełnić prawdziwy błąd. Zwłaszcza jeśli koderami byli naukowcy, a nie programiści!
Andres F.,
3

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.

Paul Hiemstra
źródło
Ale oprogramowanie jest poniekąd dowodem. Na tym właśnie polega informatyka: programy są dowodami. Myślę, że jest to albo przypadek niewystarczającej pewności co do wyników, albo kulturowe nieporozumienie dotyczące znaczenia faktycznego przedstawienia dowodu roboczego twoich badań.
Andres F.,
1
Nie mówiłem o persenie informatyki, ale ogólnie o nauce. W teorii CS wiele osób pracuje nad algorytmami i dowodami w matematyce. Oprogramowanie to tylko implementacja, refleksja.
Paul Hiemstra
Jeśli twój kod jest przypisem w gazecie, zgadzam się. Jeśli jest to jakaś weryfikacja i ma swoją własną sekcję, jakkolwiek małą, to JEST częścią dowodu lub przynajmniej walidacji. Jeśli nie opublikujesz kodu, to oczywiście nie ma on znaczenia i równie dobrze możesz usunąć każdą wzmiankę z gazety!
Andres F.,
2

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 :)

Andrew
źródło
1

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.

kuszenie
źródło
1

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.

Fuhrmanator
źródło
1

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 nz 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+1zanim 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.

Justin Cave
źródło
„Opublikowanie kodu źródłowego potencjalnie pozwala innemu badaczowi z innej grupy wyprodukować papier n + 1, zanim zrobi to pierwotny autor, lub przynajmniej wyprodukować papier, który obejmuje znaczną część gruntu, którego autor spodziewał się pokryć w ramach tego strumień badawczy ”. To nie brzmi dla mnie tak łatwo. Większość ludzi (w tym ja) miałaby trudności ze zrozumieniem rodzaju kodu, który badacze piszą, bez pomocy autorów, nie mówiąc już o jego rozszerzaniu. Czy znasz przypadki, w których to się faktycznie wydarzyło?
Faheem Mitha,
1

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 ...

BlueRaja - Danny Pflughoeft
źródło
1

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ć.

Fomite
źródło
0

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.

Trevor Boyd Smith
źródło
Odnośnie tego, kto / gdzie będzie przechowywać kod źródłowy. Idealnie, że czasopismo, w którym artykuł jest opublikowany, przechowuje cały kod źródłowy. Jednak wiele najważniejszych czasopism nie przechowuje zarówno artykułu, jak i kodu źródłowego. IMO, jeśli czasopismo nie ma możliwości przechowywania całego kodu źródłowego, autor jest odpowiedzialny za znalezienie adresowalnego miejsca do przechowywania kodu źródłowego.
Trevor Boyd Smith
0

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.

cbeleity
źródło
Ta odpowiedź pochodzi z punktu widzenia analizy danych, a więc raczej konkretnej niszy. Jednak pytanie to jest powiązane ze środowiskiem akademickim.SX, więc nie-informatycy mogą przyjść czytając to.
cbeleites