Почему исследователи CS не хотят делиться кодом и какие методы я могу использовать для поощрения обмена?

Изучая предметную область, я наткнулся на ряд статей, которые утверждают, что улучшают состояние дел, и были опубликованы в уважаемых изданиях (например, CVPR, ICIP). Эти документы часто написаны таким образом, что некоторые детали затемняются, а в их методах может отсутствовать детализация. Связавшись с этими авторами для получения дополнительной информации и спросив, не могли бы они сделать свой исходный код доступным, они перестают отвечать или отклоняют предложение.

Почему исследователи информатики не хотят делиться своим кодом?

Я ожидал, что распространение вашего исходного кода будет иметь положительный эффект для автора, например, большее признание и известность в сообществе и больше цитирований. Что мне не хватает?

На будущее, какие есть лучшие способы обратиться к коллегам-исследователям, которые приведут к большему успеху в получении копии их исходного кода?

Важный вопрос, но вы разделили его на два вопроса? (На сайтах SE должен быть один вопрос на один... ну вопрос.) То есть не могли бы вы из второго вопроса сделать еще один пост?
Я думал разделить вопросы, но думал, что 2-й не будет стоять сам по себе.
Вы можете ознакомиться с инициативой «Коллективный разум»: hipeac.net/system/files/grigori.pdf и соответствующей моделью публикации ctuning.org/cm-journal .
Я мог бы опубликовать ответ, но это было бы что-то вроде: как мы можем что-то изменить, чтобы больше людей публиковали свой исходный код? Будет ли это приемлемым, или это относится к другому вопросу?
@FaheemMitha, для меня это звучит как другой вопрос, но хороший. Почему бы вам не опубликовать другой вопрос, спрашивая, как что-то изменить, чтобы больше исследователей CS делились своим исходным кодом?
Решение этой проблемы простое: лучше финансировать исследования в области CS (и исследования в целом). Проблема в том, что нет поддержки затрат на доведение исследовательского кода до уровня качества, при котором затраты на обслуживание приемлемы.
@DikranMarsupial Я не уверен, что вложение дополнительных денег в исследователей улучшит ситуацию, поскольку у них ограниченное время. Я не думаю, что проблема заключается в распространении высококачественного кода, это просто оправдание, которое люди используют. Публикация плохого кода лучше, чем его отсутствие.
дополнительные средства решат проблему, поскольку это означает, что они могут либо нанять кого-то для поддержки кода, либо их можно откупить от других обязанностей, чтобы высвободить время для самостоятельной работы. Мне нравится выпускать код, и я делал это в прошлом, причина, по которой я не выпускаю больше, заключается в том, что у меня нет времени на обслуживание, которое, как я знаю по опыту, необходимо. Я не согласен с тем, что плохой код лучше, чем ничего, я потратил несколько недель в начале этого года, пытаясь заставить работать чужой исследовательский код, но безрезультатно. Конечно, авторы оказали ограниченную помощь, поскольку у них те же проблемы, что и у меня.
Я должен добавить, что моя жена довольно активно предоставляет код и ее отвлекает объем запросов пользователей о помощи, исправлениях ошибок, расширениях и т. д. В моем случае у моего программного обеспечения есть ограниченная аудитория, если вы находитесь в поле там, где большая аудитория, затраты на содержание далеко не тривиальны.

Ответы (5)

Почему исследователи могут неохотно делиться своим кодом: по моему опыту, есть две распространенные причины, по которым некоторые/многие исследователи не делятся своим кодом.

Во-первых, код может дать исследователям важное преимущество для дальнейшей работы. Это может помочь им стать на шаг впереди других исследователей и быстрее публиковать последующие исследования. Если у исследователей есть планы на дальнейшие исследования, сохранение их кода в секрете дает им конкурентное преимущество и помогает избежать кражи со стороны кого-то другого. (Это может быть хорошо, а может быть и плохо; я не занимаю позицию по этому поводу.)

Во-вторых, большая часть исследовательского кода имеет исследовательское качество. Исследователи, вероятно, думали, что этого достаточно, чтобы проверить гипотезы статьи, но это все. У него может быть много известных проблем; у него может не быть никакой документации; это может быть сложно использовать; он может компилироваться только на одной платформе; и так далее. Все это может затруднить использование кем-то другим. Или может потребоваться куча работы, чтобы объяснить кому-то еще, как использовать код. Кроме того, код может быть прототипом, но не производственным качеством. Нет ничего необычного в том, чтобы при кодировании использовать ярлыки: ярлыки, которые не влияют на результаты исследования и хороши в контексте исследовательской работы, но это было бы неприемлемо для развернутого кода производственного качества. Некоторые люди перфекционисты, и не не нравится идея совместного использования кода с известными уязвимостями или там, где они срезали путь; они не хотят смущаться, когда другие видят код.

Вторая причина, вероятно, более важная; это очень распространено.

Как обращаться к исследователям: я предлагаю переориентировать ваше взаимодействие с этими исследователями. Каковы ваши настоящие цели? Ваша настоящая цель — лучше понять их алгоритмы. Итак, начните с этой точки зрения и действуйте соответственно. Если в документе есть какие-то части, за которыми трудно уследить или которые неоднозначны, начните с чтения и перечитывания их статьи, чтобы увидеть, есть ли какие-то детали, которые вы могли пропустить. Хорошо подумайте, как заполнить недостающие пробелы. Сначала приложите серьезные усилия самостоятельно.

Если вы находитесь на уровне исследования, и вы приложили серьезные усилия, чтобы понять, и вы все еще не понимаете ... напишите авторам и попросите их разъяснить конкретные моменты, которые вы считаете неясными . Не беспокойте авторов без необходимости, но если вы проявите интерес к их работе и у вас возникнет хороший вопрос, многие авторы будут рады ответить. Они просто благодарны, что кто-то читает их статьи и достаточно заинтересован в их работе, чтобы внимательно изучить их работу и задать проницательные вопросы.

Но убедитесь, что вы задаете хорошие вопросы. Не поленитесь и попросите авторов прояснить то, в чем вы могли бы разобраться самостоятельно, если подумать. Авторы это чувствуют и спишут вас как вредителя, а не ценного коллегу.

Очень важно: пожалуйста, поймите, что мой ответ, объясняющий, почему исследователи могут не делиться своим кодом, задуман как описательный , а не предписывающий ответ. Я решительно не делаю никаких суждений о том, хороши ли их доводы или правы (или неправы) исследователи, думая таким образом. Я не занимаю позицию относительно того, должны ли исследователи делиться своим кодом или нет; Я просто описываю, как ведут себя некоторые исследователи . То, что они должны сделать, это совершенно другой шарик воска.

Оригинальный постер просил помочь понять, почему многие исследователи не делятся своим кодом, и я отвечаю на это. Споры о том, являются ли эти причины хорошими, субъективны и не относятся к данному вопросу; если вы хотите провести эту дискуссию, задайте отдельный вопрос.

И, пожалуйста, я призываю вас использовать немного сочувствия здесь. Вне зависимости от того, правы вы или нет исследователи, отказывающиеся делиться своим кодом в таких обстоятельствах, пожалуйста, поймите, что у многих исследователей действительно есть причины, которые кажутся им вескими и подходящими. Постарайтесь понять их мышление, прежде чем рефлекторно критиковать их. Я не пытаюсь сказать, что их доводы обязательно правильны и полезны для данной области. Я просто говорю, что если вы хотите убедить людей изменить свою практику, важно сначала понять мотивы и структурные силы, которые повлияли на их нынешние действия, прежде чем вы начнете пытаться запугать их и заставить действовать по-другому.


Приложение: Я определенно поддерживаю рекомендацию Яна Горзного прочитать статью в SIAM News, которую он цитирует. Это информативно.

Я ценю откровенность и секретность этого ответа.
+1 Большая часть кода написана к крайнему сроку, будь то аспирант, пытающийся закончить, или постдок, получающий результат вовремя. Я знаю многих людей (в том числе и меня), которые были бы смущены, если бы о них судили по качеству их кода, а не по фактическим исследованиям, которые он поддерживает.

Стивен, у меня точно такой же опыт, как и у вас, и я объясняю это тем, что соотношение выгоды/затраты слишком низкое.

Упаковать часть программного обеспечения, чтобы его мог использовать другой человек, сложно — часто даже сложнее, чем написать его в первую очередь. Это требует, среди прочего:

  • написание документации и инструкций по установке,
  • убедиться, что код работает на различных компьютерах и операционных системах (я программирую на Ubuntu, но вы можете кодировать на Windows, поэтому мне нужно получить виртуальную машину Windows, чтобы убедиться, что он работает и там),
  • отвечая на вопросы обслуживания в форме «почему я получаю ту или иную ошибку компиляции, когда я компилирую вашу программу в новой версии Ubuntu» (поди разберись. Может быть, новая версия Ubuntu удалила какую-то библиотеку, требуемую кодом? кто знает).
  • забота о сторонних зависимостях (мой код может работать нормально, но он зависит от какого-то стороннего файла jar, автор которого решил удалить из Интернета).

Кроме того, я должен быть готов отвечать на вопросы и исправлять ошибки через несколько лет после выпуска, когда я уже работаю полный рабочий день в другом месте и у меня есть маленькие дети.

И все это без какой-либо специальной оплаты или академического кредита за все эти усилия.

Одним из возможных решений, о котором я недавно подумал, является создание нового журнала Journal of Reproducible Computer Science , который будет принимать только публикации, эксперименты с которыми можно легко повторить. Вот некоторые из моих мыслей о таком журнале:

Представленные статьи должны иметь подробный раздел воспроизведения , содержащий (как минимум) следующие подразделы: - предварительные условия - какие системы, стороннее программное обеспечение и т. д. необходимы для повторения эксперимента; - инструкции - подробная инструкция, как повторить эксперимент. - лицензии - либо с открытым исходным кодом, либо с закрытым исходным кодом, но должны разрешать свободное использование в исследовательских целях.

Процесс рецензирования требует, чтобы каждый из 3 разных рецензентов, с разным опытом, прошел этот раздел, используя разные компьютеры и операционные системы.

После процесса рецензирования, если статья будет принята к публикации, будет еще один этап подготовки к публикации , который продлится в течение года. На этом этапе статья будет доступна всем читателям, и у них будет возможность повторить эксперимент, а также связаться с автором в случае возникновения каких-либо проблем. Только после этого года газета будет окончательно опубликована.

Этот журнал позволит исследователям получить признание за трудную и важную работу по созданию их кода, пригодного для использования другими.

РЕДАКТИРОВАТЬ: теперь я вижу, что кто-то уже думал об этом! https://www.scienceexchange.com/воспроизводимость

«Science Exchange, PLOS ONE, figshare и Mendeley запустили Инициативу воспроизводимости для решения этой проблемы. Пришло время начать вознаграждать людей, которые тратят дополнительное время на наиболее тщательную и воспроизводимую работу. Текущие академические стимулы делают акцент на новизне. , что достигается за счет строгости. Исследования, представленные в рамках Инициативы, присоединяются к пулу исследований, которые будут выборочно воспроизводиться по мере поступления финансирования. Инициатива работает на основе добровольного согласия, поскольку мы считаем, что научный консенсус , в отличие от просто наиболее цитируемых, работа является ценным сигналом, помогающим выявить высококачественные воспроизводимые результаты, которые можно надежно использовать для продвижения научного понимания».

Я не думаю, что это правильный ответ. Вы можете просто документировать свою настройку или даже просто распространять код. Даже если я не умею бегать, я могу многому научиться, просто осмотрев его.
Я тоже так думал, но со временем понял, что когда вы публикуете свой код, вы неизбежно несете за него некоторую ответственность. Если код плохо задокументирован, если он не компилируется, если он не запускается — люди возложат на вас ответственность, и это может плохо сказаться на вашей репутации.
Я согласен с тем, что если ваш код не компилируется или не запускается, это может плохо сказаться на вашей репутации, но я думаю, что разумно отклонять запросы на изменение/исправление вашего кода, если вы просто публикуете его. Если вы управляете проектом с открытым исходным кодом, это отличается, но почему публикация исходного кода требует большего, чем просто ответы на вопросы (как и любая публикация)?
Представленные документы должны иметь раздел с подробным воспроизведением — подобная идея обсуждалась в сообществе компьютерной архитектуры в течение нескольких лет, но она предполагает предоставление работающей виртуальной машины с установленным и готовым кодом. Вы загружаете виртуальную машину и уходите.
@ErelSegalHalevi Для репутации гораздо хуже скрывать детали реализации. ИМХО, это в основном означает "поверь мне". Так не работает наука. Сокрытие кода нарушает самый важный закон создания науки: ложность. Вы не можете аннулировать произведение, если у вас нет к нему доступа. Автор может спрятаться за эту черную занавеску, отрицая любую попытку воспроизвести/аннулировать его статью, заявив, что она не идентична его методу.
@Spidey, ответ Эреля абсолютно точен. Он действительно описывает образ мышления, который есть у многих исследователей. Такое мышление может быть хорошим, а может быть и плохим для области, но независимо от того, важно то, что многие исследователи действительно разделяют это мышление и действуют соответственно. Оригинальный постер просил объяснить, почему многие исследователи решили не делиться своим кодом; Эрель дал точное описание того, почему некоторые/многие исследователи решили поступить так. Вы можете соглашаться или не соглашаться с тем, сделали ли они лучший выбор, но здесь вопрос не в этом.
@Spidey, я согласен, что для науки было бы намного лучше опубликовать весь код. Вот почему я предложил способ побудить авторов публиковать свой код.
+1 за «Журнал воспроизводимых компьютерных наук», что, кстати, делает интересным гугление. Но как разработчик я думаю, что ваши требования к упаковке кода слишком сильны. Любой, кто знаком с фразой «битая гниль», поймет, что неразумно ожидать, что кто-то другой будет поддерживать код, который был просто создан для демонстрации точки зрения.
Много исследований в этой области провел Г.Фурсин: он пытается сделать КС воспроизводимой. Например, см. презентацию на сайте hipeac.net/system/files/grigori.pdf . Он также пытается протолкнуть новую модель публикации ctuning.org/cm-journal.
@DW Ты прав на 100%. Я хотел сказать, что это не уважительная причина, чтобы не делиться.
@ErelSegalHalevi: Ваша мечта о воспроизводимых документах очень хороша. Но подумайте о времени публикации. В настоящее время публикация статьи занимает от 6 до 18 месяцев. Публикация в этом журнале может занять 2-3 года, если неоплачиваемые рецензенты (обычно профессора) нужны, чтобы прочитать всю вашу документацию, изучить используемый язык, установить инструменты, устранить неполадки в коде и запустить, чтобы проверить, все ли в порядке. Кажется более практичным использовать облачный экземпляр, загружать код и предоставлять рецензентам/читателям доступ к загруженному коду, а не делать все самостоятельно. Поступая так, также повышайте доверие.
@Espanta: Шаг за шагом. Во-первых, поделитесь кодом. Затем мы думаем о рецензировании кода.
@Spidey: «Это намного хуже (...)» - если смотреть только на науку, да, но (по крайней мере, на моем месте) многие кандидаты наук имеют конечной целью покинуть академию после получения докторской степени, чтобы либо устроиться на работу в промышленности или начать свою собственную компанию. Как только они появятся, о них будут судить по качеству любого их кода, который находится в открытом доступе, и «экспериментальный код в стиле прототипа» очень плохо отразится на их репутации. Следовательно, я могу полностью понять, если они делятся кодом только по запросу, а не загружают его где-то. (Однако они должны реагировать на запросы.)

Эта статья в SIAM News проливает свет на первый вопрос, так что, возможно, ее стоит посмотреть. Для математической аудитории в нем доказывается, почему исследователи должны публиковать свой исходный код, и перечисляются многие причины, по которым исследователи не делятся своим исходным кодом. Это делается с помощью умной аналогии, которая сравнивает обмен математическими доказательствами с обменом исходным кодом. Взглянем; у него есть довольно обширный список причин, по которым исследователи могут предпочесть не делиться своим исходным кодом (а также некоторые ответы, утверждающие, что эти причины не являются хорошими).

Вот цитата:

Десять главных причин не делиться своим кодом (и почему вы все равно должны это делать). Рэндалл Дж. ЛеВек. Новости СИАМ, 1 апреля 2013 г.

Я предлагаю вам предоставить больше информации о статье, на которую вы ссылаетесь. Например, укажите название и, возможно, предложение, описывающее основную идею. Обратите внимание, что срок действия ссылок истекает, и ваш ответ был бы более полезным, если бы он предоставлял информацию, даже если ссылка не работает.

При совместном использовании кода есть несколько проблем:

  • Первая проблема связана с вопросами авторского права, поскольку некоторые исследования/проекты CS финансируются определенными промышленниками/финансирующими организациями, которые не поощряют обмен конфиденциальной информацией, такой как алгоритмы, код или программное обеспечение, при публикации в публичных периодических изданиях.

  • Действительно, есть статьи, основанные на определенных данных (собранных в результате выполнения кода), которые, к сожалению, авторы модифицируют вручную. Если они делятся кодом, обнаружение их ошибок/ошибок/модификаций становится очень простым, что приводит к провалу либо в их MS/PhD, либо в исследовательском проекте, что нежелательно.

  • В исследованиях CS и особенно в публикациях разработка кода, особенно длинного и сложного кода, является нетривиальной задачей и в большинстве случаев считается активом, приносящим деньги и генерирующим бумаги. Делясь кодом с общественностью, они очень подробно раскрывают факты, которые могут снизить их вклад в будущие исследования. Кроме того, они могут быть не единственными, кто может восстановить статью и отдать должное этому конкретному исследованию и коду. В большинстве случаев магистранты выбирают алгоритм или метод, немного изменяют его и представляют на его основе диссертацию и статью, которые могут противоречить выводам и утверждениям первого автора. Вспомните Тома Хердона , аспиранта, раскритиковавшего выводы двух выдающихся экономистов Гарвардского университета ( здесьэто ссылка). В случае раскрытия кодов в КС последствия, скорее всего, будут катастрофическими (случаев может быть не так уж и много, но если они и произойдут, то будут катастрофическими).

  • Коды жизненно необходимы большинству исследователей для проведения экспериментов и исследований. Если у вас есть код, вы можете просто поэкспериментировать с ним и изменить его, чтобы получить новый набор результатов, которые могут быть более ценными, чем первоначальные результаты. Без авторства первоначального автора им нет кредита.

Тем не менее, Elsevier недавно представила новую функцию, использующую COLLAGE, под названием Executable Papers , которая в настоящее время доступна для журнала Computers & Graphics, с помощью которой доступны коды и данные, и исследователи могут изменять код и входные значения для игры.

Надеюсь, поможет.


Если коды в CS будут раскрыты, последствия, скорее всего, будут катастрофическими. — Значит, вы обвиняете в мошенничестве целую интеллектуальную дисциплину? Действительно?
@JeffE Я бы не стал так резко называть все это мошенничеством, но это определенно улучшило бы общее качество исследовательских работ.
Звучит как обвинение в мошенничестве или, по крайней мере, в преступной некомпетентности. Единственная причина, по которой публикация данных/кода будет «катастрофической», заключается в том, что эти данные/код не подтверждают опубликованные выводы об этих данных/коде, как это было в статье Рейнхарта-Рогоффа, упомянутой одним предложением ранее .
Я думаю, что ваш 2-й пункт действительно самый важный. Если другие могут воспроизвести современное исследование и немного изменить его, чтобы получить новые результаты для публикации, то вы потеряете возможность извлечь выгоду из всей своей тяжелой работы по разработке кода с самого начала.
вы теряете способность извлекать выгоду из всей своей тяжелой работы [нужна цитата]
Я не понимаю второй пункт и вторую половину третьего пункта. С каких это пор CS означает нечестную лженауку, авторы которой манипулируют данными и скрывают детали, потому что в противном случае то, что они называют «результатами», будет фальсифицировано? Если это приведет к катастрофе для авторов, если они будут честными и сделают вещи поддающимися проверке, ваша область уже должна была рухнуть и исчезнуть навсегда. Как сказал JeffE, вы обвиняете CS, если предполагаете, что это действительные ответы на вопрос OP. Вы должны представить доказательства. О, ты собирал улики по своему коду и манипулировал ими? Вот как работает CS, да?
«авторское право [...] большое количество исследований CS финансируется определенной организацией, которая не позволяет людям делиться своими кодами» - о какой организации вы говорите? Я не знаю ни одной причины, запрещающей исследователям CS делиться своим программным обеспечением, или какой-либо причины, по которой авторское право запрещает совместное использование программного обеспечения. Я думаю, что это утверждение просто ошибочно.
Все это хорошие гипотезы, и проблема не ограничивается CS. Кто-нибудь знает об исследовании, чтобы определить, что на самом деле играет роль? (вероятно, убийственная предвзятость из-за отсутствия ответов... =)
@Erel Segal Halevi: я редактирую последний абзац и предоставляю ссылку на функцию.
@JeffE: у меня нет намерения обвинять, это мое собственное мнение, основанное на том, что я уже наблюдал, и поэтому я использовал «вероятно» для защиты хороших парней и исследователей, таких как вы, которые не фальсифицируют результаты. Я еще добавлю один больше предложение к этому. Однако, если это задевает вас и других, я действительно извиняюсь. Я не собирался этого делать. Извини чувак :)
@DW: Для меня логично, что промышленники, финансирующие проекты, сохраняют за собой право на алгоритм и код. Как вы думаете, можно ли легко воспроизвести документы крупных компаний CS и коммуникации? и доступны для общественности? Они могут публиковать значение своих исследований, но я думаю, что они стараются не делиться ценными данными, такими как код, с общественностью. Не забывайте, что конкуренты смотрят друг на друга. Распространенным свидетельством является заявление об опубликованном документе, например «Одобрено для внешней публикации». Этот [ hpl.hp.com/techreports/2011/HPL-2011-55R1.pdf] является одним из них. Не согласны?
@Espanta, это огромный скачок от «вы думаете, что было бы логично, если бы спонсоры не позволяли исследователям делиться кодом» к тому, что вы на самом деле написали. То, что вы думаете, что что-то было бы логичным, не означает, что это действительно так. То, что вы на самом деле написали в ответе, почти наверняка неверно. Если вам важна точность, вы отредактируете свой ответ, чтобы исправить то, что вы написали, и удалить утверждение о том, что «большое количество исследований CS финансируется определенной организацией, которая не позволяет людям делиться своими кодами».
@DW: Спасибо друг. Я сделал дальнейшие изменения, чтобы сделать его более точным. Надеюсь, сейчас не будет особых проблем.
Моя точка зрения на это заключается в том, что если вы не можете поделиться кодом и данными, вы не можете публиковать. Просто как тот. Вы по-прежнему можете исследовать и продавать свою рабочую силу кому угодно, но что хорошего в том, чтобы рассказывать научному сообществу о своих достижениях, если никто не может их воспроизвести?
Йо должен делиться данными, но не обязательно кодом. В журналах рецензенты просили оценить, предоставляют ли авторы достаточно информации для воспроизведения работы. Код — не единственное, что нужно для воспроизведения исследований. Есть много других, которые влияют на результаты, которые варьируются от домена к домену. например, для облачных приложений, работающих на мобильных устройствах, существует очень большое количество показателей, таких как тип устройства и облака, язык программы, расстояние между мобильным облаком, время сбора данных, качество сети и многие другие. Таким образом, дублирование работы не во всех областях является легким делом; Авторское искусство заключается в установлении доверия к его работе.

Я не исследователь CS как таковой, но я пишу код Android для своих исследований в области физики атмосферы, поэтому мое мнение несколько ограничено. Тем не менее, я могу сказать по своему собственному опыту, что большая часть кода, который я разрабатываю и тестирую, является частью более крупного проекта, который разрабатывает команда, частью которой я являюсь. Это сочетание правил, которых я придерживаюсь, и необходимости пока держать часть кода в тайне.