05 сентября 2011

Fork me плохая концепция.

Концепция fork me, вообще непонятно почему, овладела умами опенсорсников. Вот вы представте себе, что значит форкнуть проект масштаба GTK, Qt, libreoffice и т.д.? Если для исправления багов, то есть другие пути:
  1. багтрекер, список рассылки, форум и т.д.
  2. скачать исходники, пропатчить, а патч отправить куда-нибудь в пункте 1.
Если для добавления уникальной возможности, то есть такие же пути как в случае с багом.
Зачем еще нужен форк?
Ну ладно, вот есть проект более мелкого масштаба. Restas например, или cl-opengl.
Вот его например зачем форкать? Ну чтобы, баг, фичу исправить, добавить. Ну так скачайте себе репозитарий, доработайте исходный код, снимите patch, отправте патч.
За три присланных патча, можно уже напрашиваться в соразработчики. А то смотришь у всех, кому не лень по репозитарию лежит.
Ну ладно, допустим удобно merge request'ы делать. Так а что, просто создать команду разработчиков уже не модно. Нужен code review, ну так можно ветвить проект, и основной разработчик пускай ветки мержит.
Итак, какие выводы я делаю:
  • гитхаб маркетологи переборщили с "базаром"
  • либо стараются разделить и влавствовать разработчиками, потому что одно дело: один репозитарий поддерживается 5-ю разработчиками, другое дело 5 репозитариев у пяти разработчиков. Это версия моя любимая, так как пахнет мировым заговором.

Посмотрите на gitorious.org. Те же межрепозитариальные merge request'ы, но никто об этом не кричит, работают себе потихонечку. Командную разработку поддерживают. Вообще-то функциональности не так много как на гитхабе, зато все по православному бесплатно.

О, теперь внимание, Fork Me призыв смотрится особенно феерично для этого репозитария: https://github.com/torvalds/linux

6 комментариев:

  1. Как я понимаю, проекты в основном fork'ают если возникли явные религионые споры о будущих фичах и политике развития проекта в целом. Иногда разработчики отказываются включать заплатку или новую фичу в проект от чего ии появляется мысль - fork me...

    ОтветитьУдалить
  2. Все правильно понимаете. Если брать крупные проекты как Qt, OpenOffice, то ради одной непринятой фичи копировать целый проект, мне кажется, нецелесообразно. Допустим, фич гораздо больше, и направление развития другое, тогда к форку понадобится еще и некоторое сообщество несогласных с исходным проектом. Встает проблема мержинга багфиксов из старой ветки, если обе ветки будут развиваться. Кроме того для форка нужна некоторая критическая масса программистов и пользователей, чтобы он не загнулся на второй месяц работы. А вместе с форком куча же всяких вики, форумов, репозитариев бинарных пакетов. Призыв "форк ми" на крупных проектах мне кажется очень маркетологовским. Иногда, глядя на исходники Qt у меня возникает только одна мысль - "закопать". Поэтому если патч не принимают, на мой взгляд, гораздо действеннее распиарить патч среди пользователей, которые создатут гораздо большую силу влияния на "правление" проекта. И тут кстати может оказаться, что патч нафик никому не упал.
    Ладно, есть небольшие проекты. Форки маленьких проектов приводят к рассеиванию усилий . Каждый пилит свою версию под свои нужды, и соответственно готового продукта, как такового нет, есть только кастомизированные решения. В маленьких проектах, как нигде, необходима командная разработка и ветвление в рамках одного репозитария. Нет ну разве сложно было реализовать не merge requerst, patch request, и переименовать слоган в "patch me". Собственно надо этот вопрос и задать гитхабовцам.

    ОтветитьУдалить
  3. имхо, это происходит из-за того, что они пытаются делать социальную сеть вместо хостинга проектов. а соц.сеть означает индивидуализм.

    ОтветитьУдалить
  4. да, это все объясняет. почему программисты ведутся? у них же есть списки рассылок?
    хотя что говорить, поймал себя на мысли что как гуи для гита гитхаб очень удобен.

    ОтветитьУдалить
    Ответы
    1. Форк это очень удобно, потом что позволяет "персонализировать" проект под свои нужды и легко поддерживать этот "персонализированный" вариант, что бы он не отставал от основной ветки. При этом
      1) вы не отвлекаете разработчиков основной ветки по своим локальным проблемам;
      2) другие участники могут воспользоваться вашими доработкам;
      3) разработчики основной ветки имеют представление о том как их код используется другими;

      Кстати, ваш форк https://github.com/filonenko-mikhail/embeddable-maxima как видимо как раз по этим причинам и сделан. Или нет?

      Удалить
    2. Ох, меньше всего я хотел бы, чтобы embeddable-maxima была форком. Хотя git прекрасно осуществляет слияния, в моих планах есть такие изменения, которые рано или поздно приведут к конфликтам. Пролоббировать свои изменения в главную ветку не получилось по определенным причинам. Поэтому сейчас я ищу заинтересованных лисперов.
      Баннеры уже везде появляются с надписью "Fork me", и на это люди время тратят, рисуют, размещают. Вот раньше просто крупными буквами писали opensource, ссылка на исходники такая-то, лицензия такая-то. Ну разве два магических слова помогут увеличить количество единомышленников?
      Да, на канале #lisp кто-то мне доказывал, что слово fork указывает не на _разделение_ проекта, а на то, что вы пользуетесь распределенной системой контроля версий. Может я просто неправильно итепретировал. Так или иначе время покажет, я уважительно отношусь к работе разработчиков гитхаба, но маркетолога пускай или уволят существующего, или наймут более глубокомыслящего.

      Удалить