Разработка программ с открытыми исходниками как особый вид научных исследований

Разработка ПО с открытыми исходными текстами как особый вид прикладной науки


"Если вы продолжаете доказывать то, что другие уже сделали, приобретая уверенность, увеличивая сложность ваших решений просто ради интереса, - в один прекрасный день вы оглянетесь вокруг и увидите, что никто в действительности не делал этого! И это путь стать прикладным математиком."
Ричард Фейнманн.

// Кнут считал, что computer science == prikladnaia matematika

// Lecture Notes in Computer Science, N 122, p.82

//

// (Здесь и далее "//" выделены примечания переводчика.)

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

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

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

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

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

Относительно реальных механизмов функционирования виртуальных творческих коллективов, основанных на Интернете (Internet-based virtual teams, IVT) и проблем, порождаемых таким видом сотрудничества, пока известно немного, Среди типичных трудностей можно назвать следующие:

перегрузка и последующее "перегорание" (burnout) ведущих разработчиков вследствие чрезмерной нагрузки, сопровождающееся значительной потерей интереса к данному продукту;

консервативный подход к архитектуре (действительно, очень сложно изменить архитектуру продукта после начала его реализации);

письменные коммуникации по электронной почте в некоторой степени имеют тенденцию искажать смысл и провоцируют столкновения и "почтовые перепалки" (flame wars).

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


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

Финансирование проектов с открытыми исходниками очень похоже на финансирование прикладной науки. Иногда научные разработки финансируются косвенно, поскольку исследователи, работающие в некой организации, могут заинтересоваться каким-либо феноменом и изучают его, используя имеющиеся ресурсы. Значительная часть разработчиков программ с открытыми исходниками работает либо в академических учреждениях, либо в больших корпорациях. Крупные компании обычно предоставляют очень хорошую среду для проектов с открытыми исходниками, поскольку часто содержат "ниши", в которых одаренные разработчики частично незагружены по некоторым внутренним причинам. Ранние этапы разработки Unix в Bell Labs служат хорошей иллюстрацией таких возможностей.

Недавно некоторые крупные корпорации использовали второй способ поддержки проектов с открытыми исходниками. Когда некоторый проект может способствовать продвижению стратегически важной аппаратной компоненты, программисты этих фирм могут быть привлечены к работе над проектом менеджерами фирмы. Эта деятельность становится своего рода стандартными "прочими затратами", которыми пытаются завоевать потребителя. Вклад, внесенный фирмой Digital в разработку Linux, скорее всего, можно отнести к этому типу. Нынешний интерес Intel и IBM к Linux также, видимо, попадает в эту же категорию.

Дистрибьюторы Linux и работа IBM над Apache демонстрируют третий путь. В этом случае компании пытаются улучшить продукт, который они продают, или упрочить свою позицию в конкурентной борьбе с Microsoft.Он также очень близок парадигме прикладной науки, где бизнес использует результаты исследований и пытается извлечь из них прибыль.


Содержание раздела