"Эрик С.Рэймонд. Собор и Базар (Linux) " - читать интересную книгу автора

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

5. Роза или не Роза?

Изучая работу Линуса и формируя мою собственную теорию о том, почему
Linux имеет такой успех, я решил проверить свои измышления на моем новом,
значительно менее сложном проекте. Сначала я реорганизовал и упростил
popclient. Реализация Карла Харриса была неплохой, однако много С -
программистов находило в ней массу сложных и ненужных вещей. Код считался
центральной частью, а структуры данных были просто поддержкой кода. В
результате код был хорош, но дизайн структур данных по высоким стандартам
хаккера, программирующего на LISP'e, был по меньшей мере ужасным.
Однако, у меня была другая цель, отличная от улучшения кода и
организации данных. Мне было нужно полное понимание того, что я делаю.
Согласитесь, не очень-то здорово отвечать за исправление ошибок в программе,
которую ты не понимаешь.
В течение первого месяца, я просто следовал дизайну Карла Харриса.
Первым изменением, которое я сделал стала поддержка IMAP-протокола. Я
реализовал это, реорганизовав машинные протоколы в общий драйвер и три
таблицы методов (для POP2, POP3 и IMAP). Это и предыдущие изменения
продемонстрировали общий принцип, который следует помнить хорошему
программисту, особенно тем кто пользуется С - подобными языками:
9. Хорошие структуры данных и плохой код работают несколько лучше, чем
хороший код и плохие данные.
Брукс Глава 9: "Если вы покажете мне код и скроете структуры данных, я
ничего не пойму в вашей программе. Однако, если вы покажете мне структуры
данных, код скорее всего не понадобится. Он будет очевиден. " Прошло шесть
месяцев, и я начал подумывать об изменении имени - это был уже не просто
popclient. Однако, я колебался,потому что в дизайне не было ничего
принципиально нового. Для уникальности моей версии popclient'a еще очень
многого не хватало.
Все значительно изменилось, когда fetchmail научился направлять почту в
SMTP порт. Наступил день, когда я пришел к этому. Я уже говорил, что я решил
использовать этот проект для проверки моей теории о том, что действия Линуса
Торвальдса были правильными. Вы спросите, как я делал это? Я использовал для