metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2008-05-03 10:39 pm

Сложные open-source проекты

Последний год был как-то богат на копание во внутренностях С и С++ проектов. Надо сказать, что опыта с обоими языками у меня очень мало, хотя синтаксис я знаю, представляю как программировать вообще, страуструпа прочел (до K&R не добрался). Так же мало опыта с make-файлами и прочей инфраструктурой. Посему большинство работы с оными проектами сводилось к "заставить это дело сбилдится, подправить пару мест кода, сделать dll, подключить ее к дельфи и забыть".

При этом я серьезно не понимаю одну вещь. Как для этих проектов (большинство из них open-source) появляются новые разработчики?

Гибкость языка и кроссплатформенные заморочки приводят к тому, что каждый проект содержит свой дичайший набор макросов для кроссплатформенной разработки, свои синонимы типов, кто во что горазд. Про структурирование проектов и речи нет - может, автор проекта и знает связи между модулями, но с первого взгляда они выглядят как дикий бардак. Плюс еще массовые include друг друга, да сишный билд в виде компиляция файлов в объектные модули+линковка добавляет веселости.

Т.е. человеку, чтобы въехать в это дело, надо сидеть и заниматься только этим и ничем больше месяцами. Вопрос - откуда сейчас возьмутся люди со знаниями, опытом и свободным временем для этого?
Студенты всяких околокомпьютерных специальностей могли бы - но у них нет опыта, и самое главное - нет цели использовать собственный продукт в промышленных разработках. А без такой цели все переделки будут абстрактными. Если же цель есть - то у них не будет свободного времени. Это же верно для разработчиков всевозможного коммерческого софта. Тупо начальство не поймет, если разработчик вместо реализации непосредственно нужных фич начнет улучшать используемый сервер БД или там займется теорией компиляторов, чтобы сделать в систему пару-тройку DSL.

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

[identity profile] psilogic.livejournal.com 2008-05-03 09:03 pm (UTC)(link)
Иногда интересно сбацать что-то свое - не за бабло, а именно из интереса. А потом другие начинают использовать, ну и пошло...

Когда-то возился с подобным проектом. Ничего такого уж страшного. Основа написана двумя-тремя людьми, остальные, хоть их и много, добавляют по капле и не вносят большого бардака.

[identity profile] metaclass.livejournal.com 2008-05-03 10:01 pm (UTC)(link)
Когда начинаешь с нуля, тут понятно. А интересно, как народ въезжает в немелкий проект с его середины, и откуда у этого народа на это время.

[identity profile] psilogic.livejournal.com 2008-05-04 08:19 am (UTC)(link)
Ну вот про себя могу сказать. Откуда время - так не круглые же сутки работаешь. 8 часов сон, 8 часов работа, остальное - для себя. Вот из этого "для себя" и берется время. Как въезжает - а так же, как въезжаешь в модуль, оставшийся от уволившегося коллеги на обычной работе, никаких принципиальных отличий. Разве что знаешь, что если че сломаешь, ругать некому :)

[identity profile] metaclass.livejournal.com 2008-05-04 11:45 am (UTC)(link)
А, у людей еще время для себя бывает? :)

[identity profile] psilogic.livejournal.com 2008-05-04 12:48 pm (UTC)(link)
Ну рабство вроде как в 1917-м отменили... :)