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

Характерная черта великих - это их лень. Они знают, что судят не по
усилиям, а по результатам. Почти всегда легче начать с чего-то сделанного,
чем с нуля.
Линус Торвальдс, например, не пытался написать свою систему с нуля. Он
начал использовать идеи и исходники от Minix, небольшой UNIX-подобной
системы для 386 машин. Почти весь исходный текст Minix был переписан,
однако, он послужил основой для того что позже стало Linux'ом.
Действуя в том же духе, я начал искать существующую POP утилиту, чтобы
использовать ее как основу для разработки.
В мире UNIX'a всегда существовала традиция делать исходные тексты
открытыми и дружественными к повторному использованию кода. Именно поэтому
проект GNU выбрал UNIX как основную операционную систему. Мир Linux'a
полностью перенял эту традицию. Здесь вы можете найти терабайты исходных
текстов, и поэтому шансов найти что-нибудь подходящее в мире Linux'a выше,
чем где бы то ни было.
Мне это подошло. Вместе с теми программами, которые я нашел раньше, у
меня оказались девять кандидатов: fetchpop, PopTart, get-mail, gwpop, pimp,
popperl, popc, popmail и upop. Сначала я остановился на fetchpop, автором
которой является Seung-Hong Oh. Я добавил туда мою процедуру переписывания
заголовка и другие возможности, которые автор принял в версии 1.9
Несколькими неделями позже я наткнулся на код 'popclient' - программу,
написанную Карлом Харрисом - и обнаружил одну проблему. Хотя у fetchpop были
оригинальные идеи (например, режим демона), но написан он был любителем. Код
Карла был значительно профессиональнее, но его программе недоставало
несколько важных возможностей, в том числе и тех, которые я реализовал для
fetchpop'a.
Что делать? Оставить все как есть или начать заново? Если бы я начал
заново мне пришлось бы пожертвовать своими программами ради более надежной
основы для разработки.
Самым существенным поводом для того чтобы начать заново, была поддержка
нескольких протоколов. POP3 один из наиболее часто используемых post-office
протоколов сервера, однако он далеко не единственный. Fetchpop и другие
подобные программы не используют POP2, RPOP или APOP, а у меня уже появилась
мысль использовать IMAP - недавно разработанный, очень мощный post - office
протокол.
3. "Даже если вы не планировали выбрасывать первую версию; выбрасывая
ее, вы все равно выигрываете." (Фред Брукс "The Mythical Man-Month", глава
11) Другими словами, когда вы первый раз реализуете какоелибо решение, вы
часто не понимаете проблему до конца. Во второй раз вы уже набираете
достаточно знаний, чтобы сделать это правильно. Итак, если вы хотите
написать что-нибудь стоящее, лучше хотя бы один раз начать все заново.
Я сказал себе, что изменения в fetchpop были моей первой попыткой.
Итак, я решил начать все заново. 25 июня я послал набор программ для
popclient'a Карлу Харрису и обнаружил, что он практически потерял интерес к
этой работе. Код был не очень аккуратный, и содержал несколько ошибок. Мне
пришлось сделать много изменений, и мы согласились, что мне следует стать
владельцем программы.
Я и не замеитл, как проект начал расширяться. Я больше не писал
программы, дополняющие popclient. Я стал работать с целой программой. В моей
голове уже кипели идеи о глобальных изменениях.