Группа исследователей, специализирующихся на биологической эволюции, применила инструменты для анализа развития природной экосистемы для рассмотрения эволюции открытого проекта Debian.

Использовав накопившиеся с 1993 года данные о числе, составе и взаимосвязи пакетов во всех релизах Debian GNU/Linux, было проанализировано изменение таких параметров, как зависимости между пакетами и проблемы с совместимостью приложений. Также была отслежена история жизни пакетов, учитывающая такие события как добавление новых пакетов в дистрибутив и удаление устаревших. Для моделирования проявления зависимостей и несовместимостей был использован метод установки пакетов в случайном порядке, что позволяло накопить статистику по наиболее частым зависимостям и несовместимостям между пакетами.

После проведения анализа было выявлено несколько интересных тенденций. Например, модульность системы росла экспоненциально до момента выхода релиза Debian 3.0 (Woody), после чего произошел резкий перелом - модульность дистрибутива стабилизировалась на одном уровне для всех последующих релизов. Подобная стабилизация произвела большое влияние на функциональность, определяющую степень успешности установки случайно выбранных пакетов - начиная с выпуска Debian 3.1 (Sarge) данный показатель стал существенно увеличиваться. В качестве причины такого поведения называется появление большого временного разрыва между выпущенными в то время релизами (до Debian 3.0 релизы выходили преимущественно раз в год, в то время как между выходом версий 3.0 и 3.1 прошло три года, а между 3.1, 4.0, 5.0 и 6.0 - по два года).

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

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

Источник: http://www.opennet.ru/opennews/art.shtml?num=32363