Твоя идея — ерунда

http://charlesleifer.com/blog/your-idea-sucks/
  • Перевод
Я думал, что достиг желанного. Один из моих open-source проектов начал набирать небольшую аудиторию фолловеров на GitHub. Больше никакой нытливой неуверенности в себе, ведь около тысячи наблюдателей за звёздами следят за моим проектом — это всё, что нужно для подтверждения ценности. Это то, что можно вспоминать в моменты неуверенности. Напоминание, что я действительно достиг того, чего стою на самом деле. Никогда не думал, что звёзды могут отвернуться от меня.

* * *

Всё случилось из-за одного из тех самых людей, чьи мнения я так усердно собирал. Я говорю об одном конкретном человеке, который использовал мой проект для управления хранилищем данных бэкенда на платформе его компании. Это была критически важная функция, и как технический директор своей компании он нёс ответственность за её техническую обоснованность. Он очень профессионально вложился в сторону моей разработки. Его проект сильно отличался от большинства других, где мой код обычно использовался для сторонних или любительских задач.

Его ожидания от меня как мейнтейнера и моя собственная вера в своё желание делиться кодом — сочетание этих двух факторов привело к довольно невероятной череде событий, о которой я расскажу.

Твоя идея — ерунда


Ненавижу запросы на новые функции. Я должен или привести разумные причины для отклонения запроса — объяснить, как использовать существующие API для выполнения задачи, или выполнить работу для реализации этой функции (если я честный парень). В любом случае, запросы на новые функции заставляют трудиться.

В большинстве случаев при отклонении запроса достаточно короткого объяснения, на этом тема закрывается. Я так привык к такой динамике, что если кто-то вдруг оспаривал мои объяснения, то это дерьмо сразу попадало на вентилятор.

Вернёмся к парню, о котором я упоминал. Ранее он сделал два пулл-реквеста — один удалял кавычки из псевдонимов таблиц SQL, а другой изменял схему, по которой генерировались псевдонимы. Оба патча были проблемными. Первый требовал поддержки списка всех ключевых слов SQL и проверки, совпадает ли псевдоним с ключевым словом, — и использования кавычек только в этом случае. Второй был чисто косметическим, влияющим на то, как запросы отправляются в базу данных (это всегда скрыто от пользователя и специально вынесено на уровень абстракции библиотекой). Я объяснил проблемы патчей, как их понимал, и отклонил их.

Следующий баг-репорт от него был не лучше. В этом случае он пытался дважды присоединить ту же таблицу. Я объяснил, что для двукратной ссылки на одну таблицу нужно использовать конкретный API. Я начал злиться.


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

Через пару дней появился новый тикет для разработки. Теперь он считал, что определённый API должен вести себя иначе. Я показал ему место в документации, где явно описано поведение API. Он ответил следующее (выделение его):

один факт, что причудливость API задокументирована, не означает, что нет места для улучшения. и я не видел документации/описания, почему тебе нравится именно такое решение архитектуры, а не другие альтернативы.

Наши отношения вышли на новый уровень, где мои решения архитектуры не только оспаривались (или неприкрыто назывались неправильными), но на меня возлагалась ответственность защищать их. Тут уж не до вежливости.

Этот уровень был об ожиданиях. Он чувствовал, что ему должны, а я чувствовал свободу от обязательств. Я выразил ему своё негодование и возмущение, после чего мы вошли в последнюю, самую разрушительную фазу.

Вопрос закрыт с чрезвычайным предубеждением


Я перестал отвечать на его тикеты. Иногда я удалял их (а если не мог, то нажимал «редактировать» и стирал весь текст). Иногда в негодовании спрашивал, кем он себя возомнил, когда приходит в трекер и требует от меня объяснений по тем аспектам моей библиотеки, с которыми он не согласен. В конце концов я забанил его на проекте.

В какой-то момент он отредактировал страницу проекта на Википедии, добавил туда раздел «Полемика», в котором говорилось, что я злонамеренно банил пользователей проектов и отказывался обсуждать технические вопросы. Он также начал кампанию поливания грязью в Twitter/HackerNews/Reddit/Wikipedia, всячески понося меня и проект. Это было чертовское безумие. Закончилось тем, что я попросил сотрудников Википедии удалить страницу моего проекта. Я говорил, что это было чертовское безумие?


В этих комментариях он упоминает о ситуации после того, как его забанили, а один из его коллег начал делать замечания таким же тоном.

Якобы третирую собственных пользователей и заслуживаю осуждения. За свою тяжёлую работу, результат которой выложил для всех? Что за хрень, подумал я. Нет, ну в самом деле!

Кто кого третирует?


Он был абсолютно убеждён, что виноват именно я. Сам проект и трекер, размещённые на GitHub, были общей честной площадкой для любых обсуждений. Когда я удалил некоторые из его комментариев, то сильно ущемил его свободу слова. Я также проявил своё истинное лицо: мелкого тирана в крошечном королевстве кода, так что он совершал благородный поступок, предупреждая остальных об этом.

Конечно же, моё мнение было противоположным. Я написал код и для помощи другим и улучшения библиотеки выложил его в свободный доступ. Факт публикации на GitHub не даёт проекту какой-то особый статус, по-моему, кроме того, что это просто удобная платформа для хостинга и анализа кода, с трекером. В конце концов, проект мой. Я лицензировал его таким образом, что никому не запрещено взять код и изменить его в соответствии со своими вкусами (именно это он в конце концов и сделал).

По правде, мы оба могли бы вести себя более вежливо. Я уверен, что ему было обидно, что он тратил время на подготовку тикетов с описанием проблемы, а их закрывали без достаточного обсуждения. Мне было неприятно, что со мной спорят в таком тоне, будто имеют на это право — я так говорю, потому что в то время я думал, что библиотека полностью в моей собственности.

Cui bono


Другой способ взглянуть на ситуацию — посмотреть, кому выгодна публикация проекта с открытыми исходниками. В идеале, это одинаково выгодно и конечным пользователям, и мейнтейнеру. Конечные пользователи (один из которых сам мейнтейнер) получают непрерывно улучшающийся продукт, а мейнтейнер плюс к этому может добавить ещё один хороший пунктик в своё резюме (или тёплое ощущение поддержки извне). Я начал задаваться вопросом, может, я делаю всё не из правильных намерений?

Мне нравится думать, что я действую в духе Бена Франклина, который написал:

Если мы охотно пользуемся большими преимуществами от чужих изобретений, то мы должны быть рады случаю послужить другим своим изобретением, и мы должны это делать бескорыстно и великодушно.

Но были ли мои намерения настолько чисты? Никак нет. Как я говорил раньше, этот проект стал своего рода промежуточным этапом; способом понять самого себя как разработчика, а оттуда — как человека. В конце концов, это был любительский проект. Творческое самовыражение. Вещь, форма которой говорила нечто обо мне как о человеке, чего я стою, что я считаю правильным.

И тут приходит парень, который заставляет меня защищать вещи, которые ему не нравятся или которые он считает странными. В конце концов, я думаю, что он был более прав, чем я готов был признать в то время. Он ожидал обсуждения его идей по их заслугам, и поскольку в проекте не было чётко обозначено, что это моё хобби, то он вполне мог просить место за столом как равный. Он его не получил, и я раскаиваюсь, что в тот момент не видел ситуацию более ясно.

Уверен, что нечто подобное случилось бы раньше, если бы другой человек, который многое вложил в проект, но имеющий собственные идеи насчёт реализации, пришёл бы и начал делать изменения.

Вся эта ситуация заставила меня более внимательно следить за своей мотивацией при работе над открытыми проектами. Я остро осознал, насколько важно искать баланс между доверием пользователей к вам как мейнтейнеру (по любым заявлениям, которые вы делаете для своей библиотеки), и между тем, чтобы не ставить под угрозу концептуальную цельность проекта, когда они просят внести изменения.

Этот опыт также показал, что сохранить право собственности может быть непросто в open-source. Если код проекта опубликован под свободной лицензией, то принадлежит ли он своему создателю? Или он получил собственную жизнь, в которой его должны защищать пользователи как тот, с которым я встретился, даже если это означает отрезать создателя? Не это ли та причина, по которой у нас есть разрешающие лицензии и кнопка «Форк»?
Поделиться публикацией

Комментарии 81

    +4
    Для любопытствующих: по-видимому, всё началось с этого pull-request'a. По автору находится довольно много issue.
      +10
      >> make genned SQL easier on the eyes by removing unnecessary quotes

      По мне, так этот товарищ — улучшатель из разряда тех самых эффективных менеджеров, особливо распространённых в наших госстуктурах, которые продвигают всякого рода сомнительные решения, очковтирательства ради. И хорошо, если эти решения в итоге бесполезны, потому как часто они бывают даже вредны.
        +2

        Там есть и адекватные, например про то, .first() должен бы добавлять LIMIT 1, где автор сразу переходит на личности мотивируя всё тем же "ты кто такой вообще мне тут советовать?", а остальной народ вежливо намекает, что вича стоящая.

      +26

      Мне кажется, на первом же споре про архитектуру нужно было ответить что-то типа: "Если не нравится архитектура, то делай форк и делай архитектуру которая нравится. Общественность нас рассудит выбрав то что ей нравится." Думаю на этом конфликт был бы исчерпан.

        +2

        Либо — предложить самому пофиксить свой тикет и сделать pull request (для тех тикетов, которые просто не хочется делать, но которые не ломают архитектуру).
        Раздражение автора ведь началось с необходимости (хотя кто заставляет-то?) трудиться по тикетам, которые ему неинтересны. В коммерческой разработке вполне нормально принять тикет с низким приоритетом или делегировать задачу. Похоже, автор пока не умеет пользоваться этими механизмами, поэтому поставил себя в позицию "или я сейчас делаю фикс, или я нечестный парень". Дальше, конечно, конфликт неизбежен, особенно при таком неуважительном отношении собеседника.

          +4
          Пулл-реквест тоже был. Просто он был спорный. Об этом написано же.
            +1

            А, так под "он предложил два патча" имелось в виду, "сделал два pull-request'а", а не "предложил мне сделать два изменения в программе". Да, похоже я неправильно прочитал. Судя по гитхабу, там действительно pull-request c концептуальными возражениями автора библиотеки.
            Тогда только fork ;)

          0
          форк очень травматичен, как для авторов, так и для пользователей
          люди обычно стараются договориться, в первую очередь ради пользователей
          +22

          Я считаю что разработчик вправе придерживаться своей точки зрения по поводу своего проекта. Он не обязан доказывать свою правоту. Он разработал что-то и выложил в открытый доступ. Вы не обязаны этим пользоваться. А если уже пользуетесь – будьте благодарны, предлагайте изменения, поддерживайте проект, считаясь с мнением автора. А для несогласных


          у нас есть разрешающие лицензии и кнопка «Форк»
            +6

            Бывает критика объективная и субъективная. Если критика объективная — игнорировать ее глупо.
            Если пользователь был в чем то прав и реально хотел помочь проекту, то мейнтайнер все таки поступил плохо.

              +1

              Но судя по тикетам, которые создавал пользователь — он не совсем технически подкован, в частности, он предлагал выкинуть кавычки экранирующие названия таблиц и полей, что закономерно привело бы к проблеме, мотивируя это тем, что кавычки мешают читать SQL людям.

                +1

                По поводу объективной/субъективной критики согласен, но не полностью. Поясню.
                Могут быть логичные и объективные причины внести какие-то изменения в проект, которые не будут сочетаться с виденьем автора, его долгосрочными планами по поводу проекта и т.д. Например вы просите внедрить локальную фичу для какого-то редкого случая, а автор в это время планирует сделать какое-то глобальное изменение, которые поможет и в вашем случае и в других.


                Но, в итоге, конечно больше всего влияет адекватность. Если и автор и комментатор адекватны, они найдут общее решение. В данной ситуации комментатор был, судя по всему, не очень адекватен.

                  0
                  Ну так если полезность фичи положительная, может, стоит принять этот тикет и присвоить ему низкий приоритет? А дальше, если пользователь реально заинтересован, пусть pull request присылает.
                    0

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

                +1

                Тут есть тонкость, что чтобы разобраться в критике, и тем более учесть ее, нужно потратить время — тот самый ограниченный ресурс, который opensource-разработчик вкладывает в проект. Имхо, у мейнтейнера есть право сказать "изини, у меня нет времени глубоко в это погружаться", хотя вряд ли он им будет пользоваться, если критика существенная (касается реальных проблем) и обоснованная.
                И уж тем более у него может не быть времени разбираться пусть даже в честной критике всяких мелочей.

              +9
              Этот опыт также показал, что сохранить право собственности может быть непросто в open-source.

              Проще простого: я овнер и мне решать, будет так или нет. Не нравится? Пиши сам или форкай.
              Автор просто не совсем уверен в себе и попав впервые в такую ситуацию — опешил.
              Если код проекта опубликован под свободной лицензией, то принадлежит ли он своему создателю? Или он получил собственную жизнь, в которой его должны защищать пользователи как тот, с которым я встретился, даже если это означает отрезать создателя?

              Зависит от цели автора, думаю: если цель — развить опен сорс проект, он, все же, принадлежит уже комьюнити, хотя, авторство остается за автором; а если цель — только найти и исправить ошибки, то только за автором, имхо.
                0
                Прав автора и мейнтейнера никто не отменял. Считаешь, что мейнтейнер сильно не прав, форкай и поддерживай продукт сам. Только потенциальных пользователей форка привлекать придётся уже самому; не факт, что они согласятся перейти. И чужие pull-requests тоже придётся рассматривать.
                +1
                Для не желающих понимать, почему их pull-request не будет принят, есть отличный ответ:
                «Кнопка Fork справа вверху»
                  +4
                  Чтобы сделать пулл реквест надо сначала сделать форк ;)
                    0
                    Форк это как правило головная боль, если нет причин кардинально менять проект или остановится на какой-то ревизии. Со временем, параллельные ветки разойдутся настолько что станут несовместимы и одна из них точно помрёт а это дикое количество человеко-часов на смарку. Поэтому нет смысла делать форк для мелких исправлений — слишком высоки расходы на поддержание проекта.
                    0
                    Я не читал все полностью, но могу сказать, что у автора Pull-request'а могла быть мотивация «нагнуть» проект. Интересы могут завязаны на совершенно других проектах… А так как автор сразу начать искать «истину», то тему можно было развернуть по полной…
                      +7
                      Знакомая проблема. У меня все началось с request'а «fixed performance issue» на 5000 строк, который изменял почти каждую строчку в коде. После серии обсуждений мы пришли к тому, что я добился (правда удалось это только с третий попытки) от автора только изменений касающихся производительности.

                      Однако даже беглого изучения этих изменений хватило чтобы понять, что производительность вообще никак не меняется (ну это и не удивительно ведь автор хотел улучшить производительность, в основном, меня is_null на !== null).

                      После этого я довольно вежливо объяснил автору pull request'ов, что вообще ничего не поменялось, и мне больше не охото рассматривать его идеи. И предложил создать свой форк и развивать его как ему нравиться. Что он и сделал (я не особо слежу за форком, но бейджей там точно больше).

                      В общем, порой на Github'е встречаются довольно странные люди, поэтому нужно попытаться добиться от них конструктивной критики (т.е конкретных изменений, которые можно просто проверить), и на их основании делать выводы. Если выводы не утешительные, или диалог вообще не получается, то просто вежливо предлагаем сделать форк. Но тут все зависит от вас, так как на подобные вещи приходится тратить время…
                        +4
                        И предложил создать свой форк и развивать его как ему нравиться.

                        Жму вашу руку. Это честно, и это как раз о том, ради чего опер-сорс создавался — ради развития, а не ради переделывания чего-то чужого под себя.

                        Тем более, уж если честно, на каждом уровне профессионализма хочется внести другие изменения — как в свои старые проекты, так и в чужие. И профессионализм еще и в том, чтобы понимать, что из этого стоит делать, а что — нет.
                          +5
                          Я бы отправил PR в корзину сразу после первой строчки описания — «fixed code-style | Thx @ PHPStorm ;-)»
                          Потому что код-стайл — штука религиозная.
                            0
                            Тем более что речь в том числе шла о замене табов на пробелы.
                          0
                          Вообще странно. Да, свобода слова, но, нет, «не у меня дома». Просто и банально: github (и другие площадки) позволяют это сделать. Более того, подними на VPS за $5 свой gitlab, и хоть образвивайся и комментами обпишись. Автор оригинального проекта — не роскомнадзор, чтобы вообще запрещать что-то там высказывать.

                          Непонятно, в чем суть претензий к оригинальному автору. Ну напишите друг другу письма, созвонитесь, обсудите тему (если кому-то так уж хочется). Но мейнтейнер проекта на то и мейнтейнер, что он ведет корабль проекта по бурным водам разработки. Если завтра в его ORM пришлют реквест для вывода сообщения политического содержания, то, что же, его принимать, потому что «свобода слова»?

                          И это они еще до суда не дошли, я так понимаю!
                            +11
                            Я перестал отвечать на его тикеты. Иногда я удалял их (а если не мог, то нажимал «редактировать» и стирал весь текст). Иногда в негодовании спрашивал, кем он себя возомнил, когда приходит в трекер и требует от меня объяснений по тем аспектам моей библиотеки, с которыми он не согласен. В конце концов я забанил его на проекте.

                            Даже если человек открыто называет ваши архитектурные решения неправильными, это не повод так с ним себя вести. Кто-то потратил своё время, думая над тем, как сделать ваш проект лучше, не поленился зайти в трекер и написать об этом, а вы удаляете его сообщения. Даже если его предложения абсолютно и безкомпромисно противоречат вашему видению, так делать нельзя — вам следовало закрыть тикет с «wontfix» и оставить его в истории проекта. Лично я не увидел в предоставленной вами переписке абсолютно ничего такого, что могло бы оправдать ваш модераторский произвол.

                              +2

                              Соглашусь: автор редиска и так вести себя не должен. Редактировать чужие сообщения — очень плохо и это и есть «модераторский произвол». Именно из-за таких людей сейчас и вошли в моду CODE CONDUCT'ы.


                              Выкладывание чего либо в Open Source — ответственность. Поддержка проекта требует времени, сил не только на код, но и на консультирование не всегда адекватных пользователей. И это нужно делать вежливо.

                                0

                                Ну это всё-таки перевод, мопед не автора)

                                  0

                                  Простите, не заметил.

                                –33
                                Не это ли та причина, по которой у нас есть разрешающие лицензии и кнопка «Форк»?

                                Ух ты, до программистишек-любителей интересных проектов и прочего тупорылого гичья начинает доходить, от кого именно свободен их "свободный" код. Может, еще дойдет, кто получает те деньги, которых он реально стоит.


                                Я никогда никуда не выкладываю код проектов, которыми время от времени занимаюсь ради фана, поэтому у меня нет проблем, описанных в статье (и левые ушлые дяди денег на них тоже не сделают). Да, наивным глупым проповедникам "свободных" лицензий это не нравится, но как же это приятно — нагло вытирать ноги об убеждения апологетов неоплачиваемого труда и наслаждаться тем, что они ничего не могут сделать в ответ.

                                  +9

                                  Пишу код под пермиссивными лицензиями, так что любой человек может взять и использовать его в своих коммерческих проектах, не раскрывая исходники тех проектов. Мне просто нравится писать код, я это делаю ради удовольствия от процесса, так почему это должно меня волнвоать и составлять для меня проблему?

                                    –7

                                    Я вас понимаю, мне тоже нравится проектировать системы. При этом я по вышеописанным причинам (да и просто из лени) не выкладываю ничего. Некоторые люди видят в последнем (и даже во мне лично тоже) проблему, с которой нужно бороться. Я не вижу. А вы?

                                      +3
                                      практически Никто не видит в Вас проблемы, ваши личные решения представляют разве что исследовательский интерес. Это случай неуловимого Джо.
                                      наивным глупым проповедникам «свободных» лицензий это не нравится
                                      Скорее всего им просто наплевать. Хотите прятать свой код — прячьте, хотите тешить себя иллюзией, что о кого-то там «вытираете ноги».
                                        –5

                                        Да, я прекрасно вижу, как вам наплевать на мои санкции ;)
                                        А представьте, с каким треском сектанты-любители бесплатно поза###чивать код лопаются ИРЛ.)

                                    +11

                                    Если не видите причин выкладывать свои работы, не выкладывайте.
                                    Зачем столько пафоса?

                                      +5

                                      Статья не будет хорошо смотреться без таких вот комментариев. Они, так сказать, дополняют картину :)

                                        –17

                                        Никакого пафоса.
                                        Это просто вшивые программки.
                                        Я лишь троллю опенсорц-помешанных при случае, не более того.

                                          +5

                                          Забавные у вас методы троллинга. Качественные такие.

                                            +1

                                            Мне Вас жаль. У Вас какие-то нелады с психикой.

                                              –1

                                              Вы что же, зеленкой думаете меня вылечить?))


                                              Однажды я пытался троллить яблочников в похожей манере.
                                              Они, к моему, удивлению, спокойно и конструктивно объяснили мне, в чем я неправ.
                                              С тех пор на мак пересел, между прочим.


                                              А вы вот беситесь, ибо возразить по существу нечего.
                                              Свободный код свободен, в первую очередь, от самих разработчиков, поэтому я не вижу рациональных причин выкладывать что-то в открытый доступ. Такой вывод напрямую следует и из статьи: автор выложил свой труд бесплатно и еще виноват оказался, перечитайте последнюю часть. Какие-то недостаточно(!) чистые были у него намерения, забыл раздать имущество окрестным бомжам и одеться в рубище, видимо.

                                          +4
                                          Вы так говорите, будто ваши проекты кому-то сильно нужны и на них реально можно заработать. Но как это проверить?
                                            –4

                                            Вы так говорите, будто свои проекты я вам задолжал, и я не имею права голоса без пары компиляторов С++ в портфолио.
                                            Зачем столько пафоса?

                                              0
                                              я пишу что вы не только их не должны, все гораздо веселее. Всем на это еще и плевать.
                                                –4

                                                А еще вы можете устроить благотворительный марафон, чтобы показать мне, насколько вам плевать. Или митинг у дома Столлмана. Чтобы все увидели, как вам все равно на мнение нехорошего человека в сети. Еще можете меня какой-нибудь зеленкой пообливать — ну, это чтобы показать мне, что вы не обращаете внимания. Какой вариант вам больше по душе?

                                                  +1

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

                                            +3
                                            Я никогда никуда не выкладываю код проектов… (и левые ушлые дяди денег на них тоже не сделают)… нагло вытирать ноги об убеждения апологетов неоплачиваемого труда

                                            Может, стоит быть последовательным, и не выкладывать исходный код своих комментариев? Написал тихонечко в стол или в /dev/null, писательский зуд удовлетворил. И нет таких проблем, что ушлые дяди заработают на твоих комментах лайки. Журналисты профессионально пишут статьи, и получают за это деньги! А ты, подобно апологетам неоплачиваемого труда, тратишь время на что? Чтобы кто-то за счёт твоих комментариев расшевелил аудиторию своего поста?


                                            Самовыражение и творчество должно быть только приватным! Сделал фотографию — спрячь в архив, чтоб левые ушлые дяди в фотобанк не утащили. Решил программистскую задачу — ни с кем не делись кодом и статьями на богомерзких сайтиках для тупорылого гичья. Твиттер само собой должен быть приватным, какой смысл в его публикации, если денег за это не платят.

                                              0
                                              ты, подобно апологетам неоплачиваемого труда

                                              Ты не поверишь, но я одумался, и теперь с твоей точкой зрения совершенно согласен.
                                              Неплохо было бы заставлять всех программистов каждый день в свободное от основной работы время уделять несколько часов опенсорсным проектам, ибо польза от этого будет всем, а работы еще много. А еще неплохо было бы запретить высказываться публично против подобной практики, ибо это тормозит прогресс и заставляет компании тратить на зарплату деньги, которые могли бы пойти на исследования.

                                            0

                                            -

                                              +3

                                              Да уж, непростая задача для разработчика — сформулировать, почему он написал код именно так, а не иначе! Вопрос, который задал ему коллаборатор, не несёт в себе и тени наезда. Нормальный рабочий вопрос, я такие на работе вижу и сам пишу не так уж и редко. Но автор реагирует на него именно как на наезд. Нужен определённый опыт, чтобы научиться отделять критику кода и критику личности автора кода. Если бы автор это умел делать, то и повода для статьи не возникло бы :)


                                              Объяснить человеку, почему API реализован именно таким образом, какие у проекта есть требования и ограничения, всё же более конструктивно, чем воевать с ним. Эти объяснения могут помочь ему или другим людям сделать более качественный патч в следующий раз, их можно превратить в техническую документацию. А может оказаться и наоборот: что за конкретной формой API не лежит чёткого обоснования, он просто вышел так, как вышел. И это может быть поводом пересмотреть существующие представления о текущей архитектуре, чтобы она стала лучше.


                                              В общем, если бы автор действительно использовал свой проект так, как он представляет:


                                              этот проект стал своего рода промежуточным этапом; способом понять самого себя как разработчика, а оттуда — как человека

                                              то данный конфликт — реальная возможность узнать о себе что-то новое и найти способ стать чуть совершеннее. Только не думаю, что путь к совершенству лежит через войны в Википедии.

                                                0
                                                Думаю, вам будет интересно прочитать почему это стало возникать вдруг: https://habrahabr.ru/post/317880/. На многие вопросы такого рода даются ответы. Увы, но это так. Загнивающий Запад-то может и загнивает, однако нам нужно поучиться культуре общения у наших зарубежных собратьев. Сам много общаюсь по работе, да и все из нас проводят свое время на Stackoverflow и видят разницу на практике, так сказать.
                                                +1
                                                Если пришли предлагать идею. Попросите изложить ее детально: за и против. Если кто-то сделал правки и вас они не устраивают — отказывайте, но вежливо — желательно объяснив что не устроило.

                                                Этикет не просто так придуман был хорошо вооруженными людьми.
                                                  +2

                                                  Я неоднократно сталкивался с похожей проблемой как пользователь open source проектов.


                                                  Нужна мне какая-то функциональность. Зачем писать велосипед когда можно взять готовое. Я ищу готовое решение на GitHub и нахожу несколько проектов. Проекты крупные, популярные и на хабре их не раз упоминали. Но начинаю их изучать и пониаю что где-то реализация корявая, где-то не полная, где-то не удобные или не логичные мне архитектурные решения, где-то некорректная реализация архитектурных шаблонов, где-то мне нужно изменить поведение под мой проект, но я не могу его подменить в библиотеке потому что все захардкожено.


                                                  Вроде мелочь, а пользоваться нельзя. И PR не зделаешь, так как ломает BC и меняет архитектуру нельзя. Вот и приходится пилить свои велосипеды. А так не хочется этого делать. И не потому что это лишняя работа, а потому что, скорей всего, никто кроме меня не будет пользоваться моим решением. И не потому что оно хуже, а потому что оно не популярное.


                                                  Бывало и такое что я делаю PR, но после правок от ментейнера, он оказываются бесполезны для меня.

                                                    +2

                                                    А что мешает написать свое решение и просто выложить его?


                                                    Иногда меня тоже не устраивают либы и я пишу дополнение к нему (с моими фиксами) которые выкладываю на гитхаб. У людей появляется выбор: использовать стандартный вариант и вариант с моими дополнениями.

                                                      +1
                                                      Интересно, нет ли при большом выборе сложностей с поиском устраивающего решения.
                                                        0
                                                        А что мешает написать свое решение и просто выложить его?

                                                        @springimport я в результате так и делаю. Как я и сказал, пишу свой велосипеде и выкладываю его на GitHub. Но это не совсем правильно, о чем я уже написал.


                                                        Что хорошего в том что каждый будет писать свою реализацию функциональности и постить ее на GitHub?


                                                        Просто для примера, список реализаций CQRS на PHP.
                                                        Я просмотрел около 20 проектов из списка, не найдя удобно мне сделал свою реализацию и думаю выложить её на GitHub. Хорошо ли это? Не уверен.

                                                        +1
                                                        а почему менять архитектуру нельзя? Это больно и сложно, но бывает неизбежно.
                                                        0

                                                        В любом проекте всегда есть несогласные с идеей, дизайном, архитектурой, кодом, фреймворком,…. Поэтому нужен менеджер (или сам автор), который будет защищать от желающих увести проект дорогой, отличной от той, что видит автор. Это абслютно нормально, закрыть тикет по стратегическим причинам, написав, что мнение автора другое, извините. Но отказывать надо вежливо, не надо ругать юзеров. Но таки да, юзер, открывающий новый тикет и войны правок, понимая, что у автора другое мнение — тролль, фу таким быть.

                                                          0
                                                          Склонен согласиться: автора протроллили. Это не совсем здоровая ситуация — когда человек не делает форк, но пытается навязать группе свою архитектуру, не являясь мэйнтэйнером. Возможно, он рассчитывал на рейдерский захват проекта. Либо просто у него проблемы с ЧСВ. Существует же огромное число инженеров, которые, ведут свои проекты, и потому убеждены в исключительной важности своего мнения и правильности своего подхода к реализации.
                                                            0

                                                            Скорее всего, у него нет проблем, всё проще: он хочет, чтобы проект развивался туда, куда ему надо, чужими силами (например, потому что он ему не подходит, а альтернатив нет). Форк надо поддерживать, тратить время… А тут потроллил немного и уже управляешь проектом, но работают другие, причём бесплатно.
                                                            Мне тоже несколько таких трололо-предложений в развитии куда-то не туда поступало.

                                                              0
                                                              Ну мэйнтэйнер мог попросить обосновать изменение базовых принципов построения запроса. Скорее-всего, ответ был бы в духе: «Потому что Господь запрещает варить козлёнка в молоке его матери», или что-то вроде того, что отсылало бы к общим терминам, а не к конкретным причинам. И тогда можно было спокойно такому чуваку «предложить развиться в известном направлении», и в Википедии уже не было бы обсуждения на тему необоснованной блокировки. Это же несмываемое пятно на профессиональной биографии: «я тут пытался закоммитить код в крупный open-source проект, меня послали на йух и заблокировали».
                                                          0
                                                          Удивляюсь количеству комментариев о том, что в схемах не хватает каких-то инструментов и технологий. Автор не просто так реализовал схему на github. Открывайте issues, делайте PR, предлагайте свои варианты.
                                                          If you think that these can be improved in anyway, please do suggest.
                                                            +1
                                                            Упс, кажется я ошибся вкладкой ((
                                                            +6
                                                            Проекту явно не хватает манифеста:
                                                            1. Мэйнтэйнер всегда прав.
                                                            2. Если код не нравится — не используй.
                                                            3. Если код содержит ошибки — исправь и приложи тесты и комментарии в PR
                                                            4. Если код содержит ошибки архитектуры — разработай свою, опубликуй и стань подобен Мэйнтэйнеру.
                                                            5. Единственный комментарий для PR — это он принят или отклонён.
                                                            6. Любые запросы на добавление функционала только через комментарии в платеже PayPal где сумма — число минут на разработку.
                                                            7. Cкачать стиль оформления кода можно <тут>
                                                            8. Не занимайте внимание мэйнтэйнера своими проблемами, он тратит время на работу, код, друзей, спорт и отдых — попробуйте сначала войти в одну из категорий
                                                            9. Мэйнтэйнер тоже человек и может ошибаться, но уже есть пункт 1 и пункт 3.
                                                            10. Аминь, да прибудет с тобой fork.
                                                              +2
                                                              Любой продукт, не только ПО, возможно раздавать и продавать имея самые разные планы по развитию самого продукта и компании распространения (продаж).
                                                              Продукт возможно предоставлять как есть. В таком варианте любые обращения от пользователей — клиентов по улучшениям могут как полностью игнорироваться, так и вызывать ответ «роботов», вежливое ничего не обещающее сообщение с благодарностью за внимание.
                                                              Продукт намерены развивать, ориентируясь на отзывы пользователей. В этом варианте обращения обрабатывают живые люди и с отдельными пользователями может завязываться переписка, в целях конкретизации проблем и пожеланий.
                                                              Для развития продукта или компании по продвижению продукта ищут партнеров. Вот тут могут возникать разнообразные переписки, в которых могут обсуждаться неожиданные для авторов — производителей вещи, что может потребовать пересмотреть свои взгляды на что-то или отказаться от самой идеи партнерства.
                                                              Автору элементарно не хватило жизненного опыта, что бы различить продуктивное общение от чего-то другого. Это не имеет отношения к душевным — моральным качествам. Опыт такого различения наживается сам собой.
                                                              А вот то, что автор отследил у себя мотивацию к некорректности ущемлением личного профессионального самолюбия, это хорошо, в следующий раз ему будет проще вежливо слить безграмотного деструктора.
                                                              Для справки, привычки, так или иначе реагировать на что-то неприятное, мы наживаем неосознанно, в детстве. Если кто научиться такое у себя отслеживать и менять, то это редкость и это очень хорошо, с чем автора и поздравляю.
                                                                +3
                                                                Отношусь к гитхабу как к соц.сети типа FB, где могут репостить (fork).
                                                                Как и положено соц.сети есть свои тролли.
                                                                Бан, игнор хорошие инструменты.
                                                                Не кормите троллей.
                                                                  +1

                                                                  FOSS подразумевает бесплатность использования кода, но не написания. Оригинальный автор мог бы ответить: Окей, вы хотите читаемый SQL, и вы его получите, но за деньгу. Да, вы уже прислали мне PR с изменениями, типа ну вот же, всё уже готово; но дело не в самом изменении, дело в том, что придётся поддерживать проект с вашими изменениями до скончания времён. Это усложняет жизнь, поэтому есть два варианта: "я не буду это делать" и "я сделаю это за вознаграждение".

                                                                    0
                                                                    Это закончится пожеланием а-ля «ну и всего доброго» и форком, чушь какая. Никто не станет доплачивать автору опенсорсного проекта за внесение правок — на то он и опенсорсный. Обращение возникло, насколько я понимаю, ради оптимизации проекта, а вся грубость и ненависть началась ровно с момента, когда автор нагрубил в ответ на не такой уж бессмысленный тикет.

                                                                    По содержанию поста: на мейнтейнера ругались не без причины, т.к. задокументированный баг не перестаёт быть багом. Так или иначе, его отношение к подобным моментам контрпродуктивно и, как по мне, ошибочно. В чём вообще проблема поддержки проекта с вполне обоснованными изменениями до, как Вы говорите, скончания времён? Вот точно ведь лучше, чем иметь совершенно кривой код (зато свой!) и отклонять конструктивную критику.
                                                                    +3
                                                                    Ну, в общем то, всегда, когда ты что-то бесплатно делаешь для людей, будет кто-то, кто посчитает что ты сделал мало, не так, не лично для него, не был достаточно вежлив, не хочешь решать именно его задачи забесплатно и т.д. Это их выбор — считать, что ты им что-то должен. А твой выбор — принимать это или нет. Зачем по этому поводу переживать — непонятно.
                                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                                        +4

                                                                        В целом мораль очень простая: кто делает вещи — тот и прав. Если ты вкладываешь время и силы в проект, то этим ты доказываешь, что ты являешься одним из немногих людей, кому важна жизнь проекта, и тогда к твоему мнению лучше прислушатсья, и в случае конфликта тебе должны бы уступать. Особенно если ты мэйнтейнер и вкладываешь в том числе и кучу нервов, тебя лучше беречь.


                                                                        Если ты форкаешь чужой проект с целью перехватить власть и направить его в другом направлении, то тем самым можешь доказать, что этот проект тебе важнее, чем текущим мэйнтейнерам. Успешный форк, который действительно в исторической перспективе жизнеспособнее исходного проекта, будет доказательством, что твои слова не были пустыми, и тогда хороший мэйнтейнер снимет шляпу и порадуется, что его дело стало ещё живее чем прежде, и что он ошибался в нужности своих вещей и идей.


                                                                        Если ты ноешь, какой проект плохой и как разработчики его делают неправильно и руки растут у них не оттуда, пишешь об этом на багтрекер, на форумы, в рассылку, на википедию, в спортлото, или даже форкаешь но не рассчитываешь силы и забрасываешь форк — это никак не доказывает что тебе важна жизнь проекта, сколько бы ты ни утверждал обратное в этом процессе. Ну может чуть и важна, но твоё место гораздо скромнее, и в твоём положении надо сидеть тише и быть более благодарным за хотя бы то, что уже есть и делается, и твоё мнение не должно, вообще говоря, учитываться. Но может учитываться, если оно вдруг верное. Описанный человек (сейчас скорее обсуждаю статью и историю как описана в статье, но не пытаюсь судить что там было на самом деле) не понимает что имеет смысл только делиться и не имеет смысла требовать, и поэтому ведёт себя неадекватно.


                                                                        Есть то, что есть. Причиной существования проекта являются люди, у людей есть принципы, благодаря которым и в соответствии с которым они этот проект делают. Если твой маленький патчик не принимают, потому что он не соответствует этим принципам этих людей, то увы: ведь если принципы будут нарушены, то у проекта станет меньше причин к существованию, люди будут вкладывать в него меньше времени и сил, а ты этого не хочешь, и это важнее для тебя, чем твой патчик. Или предложи сообществу себя как человека, вкладывающего силы, и свои принципы взамен, в равном количестве на примере форка или в меньшем на примере просто активного участия в имеющемся проекте. Почини чей-нибудь ещё патч, чтобы у мэйнтейнера было время починить твой, например.


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

                                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                                            0
                                                                            Хм) жестоко. Может приступ самокопания, по молодости бывает.
                                                                            А если серьезно. Человека обложили на нескольких ресурсах за безвозмездный труд (не зависимо от востребованности построенного) и он заглянул на хабрахабр за переоценкой собственного отношения к произошедшему.
                                                                            Люди несовершенны, прощать проще, а выводы можно делать из самых разных приоритетов.
                                                                              0
                                                                              ну на хабр он вероятно не заглядывал — это перевод.
                                                                                +1
                                                                                Значит ваша оценка еще менее уместна. Нашинские морали насчет открытости чувственного опыта сильно отличаются от зарубежных.
                                                                            0
                                                                            Открытый проект не означает безответственности, все таки прислушиваться к разумных замечаниям необходимо, иначе это просто ребячество.
                                                                            Если замечания неприемлимы, то надо прямо так и говорить, реверансы здесь ни к чему. Но хамить и спорить на повышенных нельзя.
                                                                              +1
                                                                              У меня была ситуация с отклонением моего пулл-реквеста. Потратил достаточно много времени на улучшение одной библиотеки структур данных: изучал статью для алгоритма, разбирал существующий код, думал на реализацией и над применением фич и особенностей языка, сопровождал документацией и комментариями. Это был мой первый вклад в помощь какому-либо проекту. Но автор библиотеки отклонил со словами, что реализация слишком сложная для него и он хочет иметь в своей библиотеке только то, что сам понимает. Как по мне, то реализация не была такой сложной и большой + в самой библиотеке есть вещи намного жёстче + именно эта структура данных есть в куче других языков, хорошо описана и исследована и является в некотором смысле стандартной. Мне было довольно обидно и желание помогать опенсорсу уменьшилось(

                                                                              После чтения этого блог-поста и комментариев я немного успокоился. И скорей всего моя вина тоже присутствует. Неплохо бы с человеком обсудить, наверное, что ты хочешь делать. Но пока что я думаю так: если у меня будет большой опенсорсный проект, я постараюсь адекватно разбирать все issue и PR по модулю неадекватных личностей и троллей.
                                                                                +3

                                                                                Я бы посоветовал, прежде чем делать большой PR, сначала обсудить его в issues с мейнтейнером. Это поможет избавиться от лишней работы и предвидеть правки PR. Хотя по моему опыту на PR мейнтейнеры реагируют активнее.

                                                                                  +2

                                                                                  Pull Request — это продажа. Вы должны «продать» ~корову~ своё улучшение мэйнтейнеру или команде разработки. Так, чтобы они захотели его «купить».


                                                                                  Поэтому оформление PR — очень важно. Вы должны снабдить его понятным и подробным описанием решаемых проблем, почему это важно, с примерами, use case'ами и прочим. Прям вот на страничку где-то. Тогда шансы, что его примут, возрастают.


                                                                                  Сложно? Да. Затратно? Да. Долго? Да.


                                                                                  Вот один мой PR, описанием к которому я горжусь: https://github.com/rails/rails/pull/22911

                                                                                    +1

                                                                                    У меня была такая же ситуация и даже могу дать ссылку на мой риквест: [RFC] Case Insensitivity Proof of Concept.


                                                                                    Его не приняли и желание дальше контрибьютить в Open Source и в ANTLR в частности поубавилось. Ну ничего — живем. Дальнейшие мои риквесты принимались, правда не с такими объемными фичами.

                                                                                    0
                                                                                    Мейнтейнер, мейнтейнер… Напомнило фразу из пелевинского «Generation P»: «Творцы нам тут на… не нужны. Криэйтером, Вован, криэйтером»

                                                                                    Насчёт сути конфликта: по-моему, выхода из него нет. Есть такие люди, которым нужно всех доставить. Делать ответвление и самостоятельно пилить код он бы не стал. Ему надо троллить.

                                                                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                    Самое читаемое