Проектирование и философия Linux
Когда новый пользователь сталкивается с Linux, часто
возникают ложные ожидания. Linux - уникальная операционная
система, и важно понимать его философию и особенности
проектирования, чтобы эффективно его использовать. Даже если вы
умудренный годами UNIX-гуру, вы найдете в последующем интересное
для себя.
В фирмах, разрабатывающих коммерческие UNIX, вся система
создается под жестким контролем качества, существует система
управления написанием программ, внесением изменений,
документированием, информированием о выявленных ошибках и их
устранением. Разработчикам запрещено по собственному желанию
добавлять какие-то свойства или менять критически важные коды по
своему желанию. Они могут вносить изменения только, как реакцию
на выявленные ошибки, документировать вносимые изменения так,
чтобы можно было систему при необходимости "вернуть назад".
Каждый разработчик закреплен за одной или несколькими частями
системного кода, и только этот разработчик имеет право исправлять
замеченные ошибки.
Внутри фирм департаменты контроля качества осуществляют
жесткое тестирование всякой новой версии операционной системы.
Разработчики обязаны под контролем устранять выявленные ошибки.
Существует сложная система статистического анализа, определяющая,
сколько ошибок должно быть устранено, чтобы об'явить переход к
новой версии.
Подход, используемый создателями коммерческого UNIX
при написании и сопровождении кодов, весьма сложен и это вполне обоснованно.
Фирма должна иметь постоянные и хорошо детализированные
подтверждения тому, что следующая версия операционной системы
созревает для выпуска на рынок. Отсюда сбор и анализ статистики о
работе этой системы. Это очень большая и трудоемкая работа -
создавать коммерческий UNIX. Часто настолько большая, что
требуются сотни, если не тысячи программистов, специалистов по
тестированию, писателей документации, административного
персонала. Разумеется, никакие два производителя коммерческого
UNIX не похожи друг на друга, но общие принципы именно таковы,
как описаны выше.
Применительно к Linux вы можете выкинуть из головы
вышеописанную концепцию организации разработки большой
программной системы, отладки, контроля качества, статистического
анализа и т.п. Судя по всему, Linux был и останется хакерской
системой.
(Что я понимаю под словом "хакер" - это фанатически
преданный программированию человек, которому нравится работать на
компьютере и делать на нем интересные вещи. Это не соответствует
пониманию некоторыми слова "хакер", как обозначения для
компьютерного хулигана).
Linux первоначально создавался группой энтузиастов в
Internet со всего мира. Любой, в Internet и за его
пределами, имеющий достаточные знания и навыки, имеет возможность
принять участие в совершенствовании и отладке ядра, переносе в
Linux новых программ, написании документации, помощи новичкам.
Нет определенной организации, отвечающей за развитие системы.
Большей частью Linux-сообщество общается через группы по
интересам USENET. Существует ряд соглашений для принимающих
участие в разработках: например, любой, желающий, чтобы его код
был включен в "официальное" ядро, должен написать Линусу Торвальдсy,
который проведет тестирование и включит код в ядро (если
предлагаемый код вписывается в систему и не противоречит ее
принципам - скорее всего он будет включен).
Сама по себе система проектируется по открытому принципу.
Хотя число вносимых радикальных изменений в систему уменьшается,
общая тенденция выдачи новой версии ядра через несколько месяцев
(а иногда и чаще) сохраняется. Разумеется, это приблизительная
характеристика, она зависит от многих факторов, включая число
обнаруженных ошибок, число замечаний пользователей, и то, сколько
часов Линус спал в этом месяце.
Естественно, не все ошибки выявляются и не все проблемы
решаются между выпусками версий. Но когда создается впечатление,
что существенные и часто проявляющиеся ошибки устранены и система
ведет себя достаточно "стабильно", выпускается новая версия. Это
не попытка выпустить безошибочную версию, а желание выпустить
версию UNIX, с которой можно работать. Linux прежде всего
ориентирован на разработчиков.
Все, у кого есть новые программы, которые они хотели бы
добавить в систему, обычно делают их доступными для других на
"альфа" стадии, т.е. на стадии тестирования теми отважными или
еще не уставшими пользователями, которые хотят сокрушать
возникающие проблемы первоначального кода. Поскольку
Linux-сообщество в большой степени кучкуется вокруг Internet,
альфа-программы выкладываются на один или более Linux FTP-сервера
(смотрите Приложение C) и посылается письмо в одну из Linux-групп
USENET, о том как можно получить и тестировать представленный
код. Пользователи, которые скачивают и тестируют эти
альфа-программы, могут по почте сообщать результаты, указывать
ошибки, задавать вопросы автору.
После решения начальных проблем с альфа-кодом, код
приобретает статус "бета", при котором он обычно уже достаточно
стабилен, хотя и небезгрешен (он работает, но не все еще его
ветви полностью работоспособны). Иначе код попадает в разряд
"готового", когда он считается полным и правильным. Относительно
новых кодов ядра необходимо просить Линуса включить их в
стандартное ядро или добавить как факультативную опцию ядра.
Следует иметь в виду, что это лишь соглашения, а не правила.
Некоторые люди так уверены в своих программах, что не считают
нужным публиковать альфа-версию. Так что от разработчика зависит
в известной мере и процедура.
Вас может несколько удивить столь неупорядоченная система
привлечения добровольцев, программирования и отладки UNIX. Может
ли она дать вообще положительный результат? Как оказывается, это
один из самых эффективных и успешных проектов, когда-либо
существовавших. Полностью все ядро было написано без привлечения
каких либо частей ранее существовавшего кода.
Большая работа была проделана добровольцами по переносу
свободно распространяемых программ в Linux. Были написаны
библиотеки, создана файловая система, драйверы для многих
популярных устройств.
Обычно программная система Linux распространяется в виде
дистрибутива (distribution),
содержащего средства инсталляции и раскрутки
системы. Большинству пользователей трудно самим собрать систему
из разрозненных частей. Но не существует некоего стандартного
дистрибутива - их много, каждый со своими преимуществами и
недостатками. О различных дистрибутивах Linux речь пойдет в
Разделе 2.1.
Несмотря на полноту Linux, вам все равно потребуется немножко
ноу-хау по инсталляции и использованию UNIX как такового. Ни один
из дистрибутивов Linux не свободен полностью от ошибок, так что
вам может потребоваться что-то доделать "вручную" после
инсталляции. Пользование UNIX - непростая задача, даже для
коммерческих версий UNIX. Если у вас серьезные намерения
относительно Linux, имейте в виду, что потребуются значительные
усилия и внимание с вашей стороны, чтобы обеспечить нормальную
его эксплуатацию. Это справедливо относительно любого UNIX, и
Linux не является исключением. Из-за большой разношерстности
Linux-сообщества и большого разнообразия в желаниях относительно
возможностей системы не все и не для всех может быть быстро
реализовано.