Библиотека сайта rus-linux.net
Невозможное #1: Разработка эффективного, хорошо спроектированного свободного ПО, такого как Debian GNU/Linux
Оригинал: Impossible thing #1: Developing efficient, well engineered free software like Debian GNU/Linux
Автор: Terry Hancock
Дата: 24 января 2008
Перевод: Александр Тарасов aka oioki
Дата перевода: 14 апреля 2008
Всегда, когда в какой-то области человеческой деятельности происходила смена парадигм, было сложно разглядеть новый мир, находясь в старом; однако когда революционная перемена происходила, все становилось так очевидно. Как говорил П. Буаст, успех бывает часто единственной видимой разницей между гением и безумием. Именно поэтому я хочу открыть глаза на то, что многими считается "невозможным", но что уже сделано свободным сообществом. На этой неделе рассмотрим наиболее очевидную область: свободное ПО.
Миф #1
"Свободная разработка ПО дает лишь простые программы и утилиты, но не в состоянии создать что-то крупномасштабное"
Даже смешно читать такое на страницах Free Software Magazine, но этот миф все еще озвучивается вполне умными людьми из других сообществ. Этот миф вырос из предположения, что все свободное ПО создается любителями в их свободное время. Привычной мыслью является то, что лишь профессионал, которому заплатили, может создать качественные эффективные программные решения, и что профессионалам не будут платить за работу над чем-то, что можно получить "свободно".
Насколько велико большое?
Сложно сравнивать значимость свободного и проприетарного ПО. Сразу появляется соблазн сказать, что раз программа свободна, то она ничего не стоит (и ничего из себя не представляет) - т.е. значимость определяется рыночной ценой. С этой точки зрения проприетарное ПО представляет собой промышленность с оборотом в сотни миллиардов долларов. Таким образом, как мы можем сравнивать его со свободным ПО, в котором нет такого понятия как цена за копию?
Но мы ценим программу не за ее цену, а за то, что она делает и какие задачи решает. Поэтому ценность использования - вполне справедливый критерий, в отличие от рыночной цены. К сожалению, сложно сопоставить этому критерию какое-то число, однако можно как-то оценить его по количеству пользователей свободного ПО.
Можно поставить вопрос и по-другому: что, если понадобится начать с самого начала и перестроить существующее ПО по проприетарной схеме, тогда сколько это будет стоить? Ведь, если смотреть в корень, то свободное ПО должно стоить тех усилий, которые вложили в его создание разработчики. Но все же - сколько это?
Оценить стоимость "свободного ПО" нелегко. Прежде всего, потребуется масса времени на то, чтобы разыскать все это ПО. Затем нужно решить, стоимость чего нужно учитывать, а что можно отбросить. К счастью, большая часть этой работы уже сделана до нас - в форме проекта Debian GNU/Linux, самого полного дистрибутива GNU/Linux и, пожалуй, самого яркого представителя свободного ПО.
Компания LibreSoft Research Group поддерживает проект, который собирает данные об исходном коде свободных программ и оценивает их по количеству строк кода (source lines of code, SLOC). Эти данные генерируются программой SLOCCount, написанной Дэвидом Уилером (David Wheeler). В ней используется COCOMO - давно известный и относительно простой способ оценки стоимости разработки программных продуктов в предположении их централизованной разработки. В нашем случае это вряд ли можно назвать точной оценкой труда, вложенного в Debian сообществом (но решение задачи о том, слишком это много или слишком мало, я оставляю читателю в виде упражнения).
Пожалуй, это слишком большие числа, легко потерять перспективу. Поэтому давайте возьмем для сравнения какой-то другой проект сравнимой стоимости, чтобы понять масштаб того, о чем мы говорим:
Итак, ориентировочная эквивалентная стоимость разработки Debian 4.0 "Etch" составляет три четверти от стоимости разработки Space Shuttle. Если кого-то это не убедит, что свободные программы бывают большими и сложными, то я не знаю, что нужно для убеждения.
Но разве больше - это лучше?
-
Оценивать процесс программирования по числу строк кода - все равно что
оценивать прогресс в конструировании самолетов по весу. /Билл Гейтс/
Большой размер свободных программных проектов можно попытаться объяснить низкой эффективностью. В конце концов, многие аналогично критикуют Microsoft Windows и Mac OS за их "раздутость". Тем не менее, заметим, что не совсем корректно сравнивать размеры системы Microsoft Windows и дистрибутива Debian GNU/Linux. Это то же самое, что сравнивать яблоко и яблоневый сад: Debian не является "операционной системой", это целая коллекция программ. Эквивалентом из проприетарного мира было бы что-то вроде "всего программного фонда США".
Поэтому для справедливого сравнения необходимо несколько урезать Debian, приняв к рассмотрению только те компоненты, которые обеспечивают функциональность, сравнимую с тем, что мы получаем, скажем, установив Microsoft Windows Vista "из коробки" (ее оценивают в 50 MSLOC). Так что оставим от Debian лишь то, что компьютерщики называют "операционной системой" - это ядро Linux, библиотеки GNU и утилиты GNU (но не весь проект GNU, в который помимо всего прочего включены и графические приложения типа GIMP). Еще, чтобы наша система была похожа на Windows, требуется графическое оконное окружение, т.е. сервер X. Еще, как мы знаем, в комплекте с Windows продолжает поставляться веб-браузер, так что мы включаем еще и веб-браузер от проекта Mozilla. Microsoft Office - это отдельный продукт, поэтому справедливости ради исключаем OpenOffice.org.
Таким образом, мы сможем сравнить эквивалентные наборы программ:
Столбец свободного ПО не только меньше столбца Windows, но еще и разделен по проектам. Такое разделение облегчает поддержку проектов. Возможно, что его следствием является увеличение эффективности разработки свободного ПО, а в отдаленной перспективе оно позволяет получить более компактный код (еще следует отметить, что в исходном коде Debian заложена поддержка для 11 разных архитектур процессоров).
Так что, свободное ПО не только включает большое количество вложенного в него труда, но, очевидно, лучше спроектировано и демонстрирует эффективные решения, которые имеют бОльшую пользовательскую ценность, чем эквивалентные проприетарные продукты! Свободные программы могут не только быть большими и сложными, но и решать некоторые задачи получше проприетарных аналогов.
Продолжение. Невозможное #2 .