image

Под катом интересный опрос

Возможно, заголовок этой статьи покажется Вам не корректным, ”Как можно писать open-source код? И что это за код такой?” — спросите Вы.

Чем open-source код отличается от “просто-кода”? Open-source проект — это ответственность за качество кода, за покрытие его тестами, за документацию, за своевременные ответы на вопросы и реагирование на bug репорты, за обработку pull-request’ов. Ваше поведение и мысли во время написания open-source кода, который увидит мир будут другие, соответственно и код на выходе получается другой.

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

Про опыт:


Однажды, выложив свой код на GitHub, я уже не смог остановится. Первым моим публичным репозиторием был PHP-код, предназначенный для интернализации на основе MySQL таблицы. Этот репозиторий не собрал звезд и сомнительно, что был кем-то замечен. Не в звездах дело, дело в том что Ваш код доступен всем. Ваш код не скрыт на сервере, не минифицирован/аглифицирован в браузере и не скомпилирован на жестком диске пользователя — он выставлен всем на показ. Осознание данного факта просто обязует Вас писать код в общепринятой манере (в соответствии с тем языком на котором Вы пишите), соблюдать отступы, добавлять описание к методам и классам (как минимум к публичным), адекватно именовать переменные, классы, методы и функции, соблюдать правило do-not-repeat-yourself.

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

Писать общедоступный код — это как посещать светские мероприятия. Вы выглядите, разговариваете и соответствуете высшим стандартам IT-индустрии, или как минимум стремитесь к ним. Писать общедоступный код — это как обсуждать функционал IT-коллективом равным по масштабу всему IT-сообществу планеты. Любой из членов open-source сообщества может предложить изменения, сообщить о bug’е и вынести на обсуждение дальнейшее развитие проекта.

Приятное в open-source проектах — это эмоции и ощущения, испытываемые от понимания, что твой проект полезен. Когда количество скачиваний растет вверх, когда вы получаете отзывы, когда к проекту присоединяются люди со всего света и Вы вместе делаете проект лучше — это то, ради чего стоит писать код. В этот момент простое написание кода для решения поставленных задач перерастает во вклад в IT-сообщество.

Про опасения Студий и Компаний:


Ваша компания пишет код? Вы считаете, что написанный код принадлежит только Вам и Вашим клиентам, которые за него заплатили? Если Ваш ответ — ”да”, подойдите к Вашим разработчикам и попросите посчитать, сколько строк кода написано за стенами Вашей компании третьей стороной, скачено с SourceForge, GitHub, установлено через NPM, apt-get, aptitude, и других источников дистрибуции кода.

Когда речь идет об open-source, многие руководители (не все, но такие есть) считают что на GitHub лежат целые проекты, готовые к использованию и зарабатыванию денег. Когда Ваши сотрудники предлагают опубликоваться на GitHub, они собираются “слить” весь код, за который разработчики получили зарплату, а кто-то другой (нехороший) соберет клон Вашего продукта и будет зарабатывать деньги. Или хуже того, обнаружит эксплойт и будет его тайно использовать. Это абсолютно не так. Во-первых, никому не нужен Ваш проект целиком кроме Вас и Вашего клиента, во вторых, — не нужно выкладывать проекты целиком. Маленькие кусочки, классы, методы, адаптеры и т.п., из которых Ваш проект состоит, могут оказаться полезными не только Вам. На Ваш вклад IT-сообщество ответит поиском и исправлением ошибок и уязвимостей, дополнением функционала и улучшением производительности. Возможно, Вы найдете нового сотрудника в лице активного контрибьютора.

Open-source проект это:


  1. Живые эмоции, общение с людьми по всему миру.
  2. Доступ к накопленным знаниям и предыдущему накопленному опыту.
  3. Максимально-требовательный подход к написанию кода, документации и тестов.
  4. Совместная работа над задачей.
  5. Открытость перед конечными пользователями.





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

Выкладывайте Ваш код. Выкладывайте код, написанный в стенах компании (с соглашения всех руководителей). Сделайте вклад в развитие IT-индустрии. Читайте чужой код. Улучшайте чужой код. Всегда пишите bug репорты. Задавайте вопросы владельцам проектов и не забывайте отвечать на вопросы, заданные Вам. Спасибо.
Есть ли у Вас личные (персональные) Open-Source проекты?

Проголосовало 943 человека. Воздержалось 183 человека.

Есть ли в Вашей компании корпоративные Open-Source проекты?

Проголосовало 826 человек. Воздержалось 260 человек.

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

Комментарии (65)


  1. a553
    11.01.2016 03:32
    +9

    Это всё идеологически правильно, а конечный результат полезен, но зачастую инициатива не остаётся безнаказанной:

    1. Как и любое другое сообщество, опен-сорс сообщество может быть достаточно токсичным, чтобы пропало желание контрибьютить. Достаточно вспомнить вечную драму вокруг GNU/Linux. А ваш пулл-реквест никогда не закрывали фразой «ты тупой идиот»? :)

    2. Зачастую чтобы открыть исходник какого-то компонента надо его сильно порефакторить — убрать специфичные для проекта хаки, выделить точки расширения, добавить тестов и доков. Это всё занимает большое время.

    3. Открытый код компонента — это ещё и обязанность его постоянно поддерживать, что постоянно занимает время разработчиков.

    4. В какой-то момент компания может осознать, что работа с третьесторонним фреймворком, который она использовала много лет, обходится дороже, чем написание собственного. И опен-сорсный фреймворк забрасывается в пользу нового, проприетарного. Заметьте, какое огромное количество библиотек за последнее время появилось, например, от Facebook.

    5. Компания делает продукт для конечного пользователя, которому достаточно наплевать, открыт ли код какого-то компонента продукта, которым он пользуется, или нет.


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


    1. drdimitru
      11.01.2016 04:07

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

      Дороже при схеме деньги-продукт.
      В случае долговременных подписок на сервисы с малым функционалом, порой (не всегда) безопаснее и дешевле развернуть in-house решение. Благо в нашей вселенной имеется баланс между Open-Source и платными решениями, и почти всегда есть Free-функционал в платных решениях. И платные подписки на поддержку и дополнительный функционал в Open-Source решениях. Плюс аналоги платных решений имплементированные Open-Source сообществом. Одним словом — выбор у нас есть.


    1. drdimitru
      11.01.2016 04:14
      +2

      1. Нет. А если напишут, желание не пропадет, в любом случае нет запретов открыть свой форк с блекджеком и всем прилагающимся.
      2. Да, согласен. Open-Source — это работа и ответственность, и это отнимает время.
      3. см.п.2.
      4. Не совсем понял данный пункт. Facebook создают новые решения и делятся с миром, так же принимают pull-request'ы. Когда забрасывают старые проекты — дают жизнь чему-то новому.
      5. Смотря кто является конечным пользователем. Для меня (и нашей компании) это в основном разработчики.


      1. a553
        11.01.2016 11:55

        Чем вам поможет форк онлайн игры или виртуальной машины .NET?


        1. VolCh
          11.01.2016 15:18

          или виртуальной машины .NET?

          Спросите у контрибуторов Моно


          1. a553
            11.01.2016 16:58

            Моно — не форк.


    1. VolCh
      11.01.2016 11:51
      +2

      В какой-то момент компания может осознать, что работа с третьесторонним фреймворком, который она использовала много лет, обходится дороже, чем написание собственного. И опен-сорсный фреймворк забрасывается в пользу нового, проприетарного. Заметьте, какое огромное количество библиотек за последнее время появилось, например, от Facebook.


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


      1. a553
        11.01.2016 11:55

        До этого они долгое время оставались закрытыми.


        1. VolCh
          11.01.2016 15:19
          +2

          Осознали стратегическую ошибку и исправились.


  1. KvanTTT
    11.01.2016 03:39
    +16

    Однажды, выложив свой код на GitHub, я уже не смог остановится. Первым моим публичным репозиторием был PHP-код

    Сперва это «просто issue», но затем это переходит в серьезные пулл-риквесты… Каждый программист хоть раз пробовал коммитить код в опенсорс… Ты что, хочешь добиться того, чтобы гитхаб полностью стал зеленым?.. Все эти стары и вотчи — прямой путь в активные контрибьютеры… Он снова пытался контрибьютить в опенсорс… Да я сам видел, как ты пушил код! Я нашла твой новый форк в нотификейшенах. Нам нужно поговорить…


  1. KvanTTT
    11.01.2016 03:48

    Вы спрашиваете про проекты, хотя сами пишете про выкладывание маленьких кусочков. Мне кажется про них и релевантней было бы спрашивать.


    1. drdimitru
      11.01.2016 04:18
      +1

      Позволил себе назвать маленькие кусочки — «Проектами». Связанно это с большими объемами работ по поддержке репозиториев с любым количеством строк кода — это issues, документация, pull-request'ы и публикация в package-менеджеры.
      P.S. Ваш предыдущий комментарий — я не понял.


      1. KvanTTT
        11.01.2016 10:20
        +4

        Это юмор на тему сравнения опенсорса и наркотиков)


  1. 0xd34df00d
    11.01.2016 04:33
    +30

    Open-source проект — это ответственность за качество кода, за покрытие его тестами, за документацию, за своевременные ответы на вопросы и реагирование на bug репорты, за обработку pull-request’ов.

    Нет. Opensource-проект — это просто публично выложенный код под соответствующей лицензией.

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


    1. JustRamil
      11.01.2016 05:35
      +1

      Нет. Opensource-проект — это просто публично выложенный код под соответствующей лицензией.

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


      Полностью согласен. В копилку добавлю от себя историю megamozg.ru/company/profishop/blog/22752


      1. mrqwer88
        11.01.2016 08:57
        -1

        Нет. Просто публично выложенный код под соответствующей лицензией — это просто открытый код.
        А не opensourсe-проект, хотя он может им стать при наличии «ответственности»(поддержки/документации/сообщества и тп).


        1. leventov
          11.01.2016 12:10
          +7

          Это вы сами только что придумали. Открытый код это буквальный перевод словосочетания «open source». А open source — это вовсе не размытое понятие, а вполне определенный термин с четкими критериями, что под него попадает, а что нет: en.wikipedia.org/wiki/Open_source


    1. Delphinum
      11.01.2016 16:14
      -5

      Ужас какой, вы для души говнокодите?


      1. 0xd34df00d
        11.01.2016 16:21
        +3

        Ну почему же сразу «говно-»? Неужто нежелание обеспечивать оперативные ответы, документировать софт и код (я стараюсь документировать только публичные API), собирать пакеты под распространённые дистрибутивы или поддерживать какие-то более старые версии компиляторов (это я уже отсебятины добавил по мотивам различных дискуссий) — говнокод?


        1. Delphinum
          11.01.2016 16:28
          -4

          Ну если это не говнокод, то он как минимум документирован, тестирован и форматирован. Если ваши open source проекты такие, то собсно это же и говорит автор.


          1. 0xd34df00d
            11.01.2016 17:00
            +1

            Форматирован — да. Документирован — ну, так себе. Уровня doxygen-комментариев в хедерах API.

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

            И автор говорит не только это.


            1. Delphinum
              11.01.2016 17:07

              По сути автор говорит именно про это + взаимодествие с сообществом.


              1. 0xd34df00d
                11.01.2016 17:19

                И какая-то там ещё ответственность.

                Против этой ответственности и взаимодействия я и возражал же.


                1. Delphinum
                  11.01.2016 17:22

                  это ответственность за качество кода

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


                  1. 0xd34df00d
                    11.01.2016 17:24

                    если вы будете взаимодействовать с обществом, то конечно на вас ложиться ответственность за качество кода

                    Не вижу оснований для такой импликации, если честно.


                    1. Delphinum
                      11.01.2016 17:31

                      Ну а кто будет кроме вас править ваш проект?


                      1. 0xd34df00d
                        11.01.2016 17:38
                        +1

                        Никто, и мне вполне комфортно с этой мыслью.

                        Когда-то давно я тоже задумывался и беспокоился об ответственности, старался побыстрее отвечать на вопросы, испытывал чувство вины и угрызения совести, если вопрос в конференции, скажем, задали, пока меня не было, и ответить я не успел, и так далее. Раньше я переживал, что у меня нет мейнтейнеров под Debian и Ubuntu, что я слишком редко делаю релизы, что сайт у проекта какой-то непонятный, и надо бы до ума довести, и так далее.

                        А потом я как-то этим переболел, и всё это стало совершенно неважно. Я просто пишу код, я делаю это для души, не думая о пользователях, мейнтейнерах и документации, и это весьма положительным образом сказалось на моих ментальных ресурсах.


                        1. Delphinum
                          11.01.2016 17:45

                          не думая о пользователях, мейнтейнерах и документации, и это весьма положительным образом сказалось на моих ментальных ресурсах

                          На ваших ресурсах то может и положительно сказалось, но комьюнити такой проект может и не получить. Да, это все еще Open Source.


                          1. 0xd34df00d
                            11.01.2016 17:54

                            Не получит — и ладно. Не вижу поводов для (моего) беспокойства.


                            1. Delphinum
                              11.01.2016 17:55

                              Ну видимо автор о «популярном» Open Source.


    1. drdimitru
      11.01.2016 23:30

      Любая публичная деятельность — это ответственность (которая частично закреплена законодательно в частных случаях), например:

      • Текст в статье выше накладывает на меня ответственность за достоверность и актуальность информации, за качество передачи моих мыслей через текст, так же как и на обсуждение данного текста в комментариях, ответы на вопросы, уточнения.
      • Речь произнесенная по теле/радио-эфиру.
      • Текст напечатанный в прессе.
      • Текст в комментариях под интернет-контентом.
      • Слова произнесенные в кругу коллег/друзей (Вы же думаете что говорите? Сказав что-то некорректное вы понесете ответственность в виде потери друзей или рабочего места).


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

      Никто не осудит Вас, если в readme.md Вы укажете что проект только для Вашего личного пользования и другим он не будет интересен, так как несет в себе пользу только для Вас. Или на проекте который был заброшен — что он больше не поддерживается Вами, кто-то другой может увидеть интерес в проекте, и возродит его, уже без Вашего участия.


      1. 0xd34df00d
        12.01.2016 04:35

        Вероятно, корректнее было бы говорить не об ответственности, а о наличии последствий.

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

        Если я не буду оперативно предоставлять ответы и далее по тексту, то какие последствия меня ждут? Если у моего проекта совершеннейше уродливый UI, какие последствия меня ждут? Если я не пишу документацию, какие последствия меня ждут? Я себя не позиционирую как техсаппорт, дизайнер, юзабилист или technical writer, если что.

        Иными словами, почему это всё входит в сферу моей ответственности как программиста?

        Никто не осудит Вас, если в readme.md Вы укажете что проект только для Вашего личного пользования и другим он не будет интересен, так как несет в себе пользу только для Вас.

        Зачем это указывать? Что плохого случится, если я это не укажу? Да и пусть люди сами решают.


        1. drdimitru
          12.01.2016 07:21

          Нет, просто п. 2, 3, 4 законодательно регулируются.
          А остальные пункты регулирует окружающая Вас аудитория.

          Да и пусть люди сами решают

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

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


          1. 0xd34df00d
            12.01.2016 14:39

            Нет, просто п. 2, 3, 4 законодательно регулируются.

            Таки потому, что они законодательно регулируются, я и сказал, что это отдельная история.

            Но это не означает, что в обществе не существует, общепринятых норм и стандартов.

            А где эти общепринятые нормы и стандарты почитать? А то мне вот совершенно неочевидно, что ваша версия ближе к истине, чем моя, например.

            Ну и опять же, про последствия вы не ответили. В чём именно-то ответственность заключается?

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

            Могу, но я так почему-то не делаю. А вот некоторые иные обязанности из перечисленных вами в исходном посте я не хочу на себя брать.


            1. drdimitru
              12.01.2016 19:22

              А где эти общепринятые нормы и стандарты почитать?

              У общества спросить, которое Вас окружает (Честно, не знаю где почитать).

              Для Вас неочевидно присутствие ответственности за ведение open-source проекта, ровно на столько же, на сколько неочевидно зачем писать «правильно» и «красиво» код, для тех кто его пишет «не правильно» и «не красиво» — но он же работает (этот код), зачем тратить время на придумывание «правильных» имен переменным, и т.п.

              Ну и опять же, про последствия вы не ответили. В чём именно-то ответственность заключается?

              Заранее извиняюсь что отвечаю вопросом на вопрос, но — «В чем ответственность заключается при «правильном» написании кода?»


              1. 0xd34df00d
                12.01.2016 19:30

                Но при этом я могу попытаться аргументированно объяснить человеку, пишущему «не красиво», почему писать «красиво» — хорошо.

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

                А, ну и ещё эстетика, да, но это субъективно. Мне просто неприятно писать некрасивый код, не для души это.

                О, у меня тут тоже вопрос родился. Вы, судя по профилю, на JS пишете, или около того. А почему вы пишете на JS, а не на каком-нибудь «правильном» «красивом» типобезопасном языке вроде Haskell?


                1. drdimitru
                  12.01.2016 19:40

                  В основном пишу на «правильных» и «красивых» CoffeeScript и TypeScript («типобезопасном»).
                  По факту мне удобно писать на любом языке, благо документации и рекомендаций по стилистике и «правильному» написанию кода имеется в избытке. Опыт был с Go, PHP, C#, Objective-C, совсем немного Java и другие классические языки как Bash, Basic и т.д.
                  В моей истории был период с написанием «не правильного» и «не красивого» кода, но в какой-то момент мозг переключился и отказался писать и воспринимать «говно-код». Подобная история произошла и с Open-Source.


                  1. 0xd34df00d
                    12.01.2016 19:42

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


                    1. drdimitru
                      12.01.2016 19:43

                      Мы должны научится не только потреблять, но и отдавать обществу.


                      1. 0xd34df00d
                        12.01.2016 19:46
                        +2

                        Выкладывать свой код под какой-нибудь BSD-лицензией — уже достаточно «отдавать», ИМХО.


  1. antirek
    11.01.2016 09:07
    +9

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

    Открытый код — это открытая реализация идеи. Кто-то сел и сказал: а клево вот так делать сортировку. А затем кто-то сел и написал на каком-то языке программирования реализацию этого метода сортировки. А кто-то взял и переписал то же самое на другом языке программирования. А еще кто-то увидел это и написал заметку на Хабр как на языке программирования работает алгоритм сортировки и как его использовать в проектах. При этом каждый не тратил столько времени, сколько ему бы потребовалось если бы он делал все сам: и придумывал метод сортировки и реализовывал его алгоритм на языке программирования и затем еще всем ходил и рассказывал какой метод клевый и используйте его в своих проектах.

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

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

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

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

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


  1. MrEsp
    11.01.2016 09:52

    Максимально-требовательный подход к написанию кода, документации и тестов.


    Возможно, вы к этому пришли поизучав код критически важных для мироздания проектов типа kernel, gcc. Это проекты production уровня, там все на уровне. А сколько еще в open source существует всего другого, криво понаписанного? Про документацию все то же самое. Даже некоторые либы высокого качества исчерпывающей документации по фичам не содержат.


    1. blind_oracle
      11.01.2016 14:23
      +1

      Криво написанное или спроектированное обычно долго не живёт — его никто кроме автора поддерживать не захочет, а автор скорее всего забьёт в итоге на своё «детище».


  1. QtRoS
    11.01.2016 12:36
    +1

    Люди, которые отвечают «Да» в первом опросе — где вы?
    Я по совместительству на работе провожу техническую часть собеседований, и еще ни разу никто не сказал, что он имеет свой Open-Source проект, а человек 100 точно было в сумме.


    1. RubaXa
      11.01.2016 13:09

      Тоже интересно.

      Ну и кажется, автор слабо себе представляет, что такое поддержка проекта даже от 1К звезд, радости увы там мало, а времени требует много.


      1. drdimitru
        11.01.2016 21:47

        Константин, поделитесь опытом по поддержке Sortable и FileAPI


        1. RubaXa
          11.01.2016 23:37
          +1

          Да не чем особо делится, могу сказать только одно, Issue радуют только первый год, но после набора критической массы, они превращаются в головную боль (в среднем от 1 в день и это не баги). Многие даже не хотят читать ваши доки или подумать, как можно на основе текущих возможностей, решить свою задачу и лепят очередной issue, в котором хотят, чтобы вы решили задачу. Конечно можно ответить на словах «как нужно сделать», но это тоже самое, что и спрограммировать, вы уже потратили время на задачу, её осмысление и решение, так что обычно решение, это готовый код.

          Но в целом, OpenSource (настоящий, не для себя, а для других) очень сильно помогает вырасти как вам, так и вашему проекту. На ранних этапах он поможет улучшить качество кода, переосмыслить api, увидеть альтернативные пути развития и применения, которые просто не пришли вам в голову, да и в целом можно посмотреть, как люди использую ваше детище (Например на Sortable, один чувак сделал игру крестики-нолики 0_o, а это ведь всего лишь либа для сортировки).

          Вот с FileAPI всё проще, инструмент с самого начало задумывался низкоуровневым, а не очередным плагином к jquery и подобным коробочным решением, поэтому его в основном используют опытные разрабы, которые в случае чего, могу грамотно описать проблему.

          P.S. Да, и возможно я не везучий, но настоящих PR крайне мало, либо это правки README.md ;]


          1. artemmalko
            12.01.2016 06:57

            Ох уж эти правки README.md Даже удивительно, что те, кому нравится ваш продукт не хотят сами в него вложить ничего. Найти бы какой-либо способ замотивировать слать стоящие PR.


            1. drdimitru
              12.01.2016 07:15

              Сделать проект (которым ты сам пользуешься) «лучше и быстрее» — не достаточная мотивация?
              RubaXa видимо создал идеальный проект «по коду», который не требует изменений


              1. RubaXa
                12.01.2016 09:48

                Ха-ха, если бы, 100+ задач говорят об обратном :]
                — 12 требуют помощи;
                — 43 по Метеору (а поддерживать его некому);
                — 38 тупа не разобраны, либо не понятно что это такое?!;
                — и т.д.

                А вы говорите «идеальный».


                1. drdimitru
                  13.01.2016 07:51

                  Это был <sarcasm />, идеальных проектов просто — нет.
                  Не знаю почему, но я уверен, что пережитые эмоции связанные с данным проектом, Вы бы не променяли, ни на что.


    1. JustRamil
      11.01.2016 13:34

      Люди, которые отвечают «Да» в первом опросе — где вы?

      Здесь. Вот для примера мой проект. github.com/forramil/profishop


    1. artemmalko
      11.01.2016 20:34

      Присоединяюсь, вот мой проект: TARS


    1. Delphinum
      11.01.2016 20:38
      +2

      Не повезло вам с кандидатами ) Нас много, очень много.
      Кстати, у меня другая проблема — Open Source проектов много, но ни один работодатель ни разу не посмотрел ни один из этих проектов. Просто услышали что проекты есть и забыли.


      1. drdimitru
        11.01.2016 21:44

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

        По поводу поиска работы — 50/50 где-то с интересом (или обязательно) рассматривают все репозитории во время собеседования, а где-то могут ответить, что им все равно и это баловство, а не программирование.

        По поводу поиска сотрудников (по своему опыту говорю только про Москву) — только каждый 4 собеседуемый кандидат за последние 3 года имел свой полезный репозиторий (рабочие репозитории есть почти у всех).


        1. Antelle
          11.01.2016 22:57

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


          1. drdimitru
            11.01.2016 23:06
            +1

            Данный аспект характерен для СНГ и России — экономия на IT-персонале ни к чему хорошему не приводит, вот известный пример: habrahabr.ru/post/273249


            1. Antelle
              11.01.2016 23:23
              +2

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


        1. Delphinum
          11.01.2016 23:07

          А что есть «полезный» репозиторий?


          1. drdimitru
            11.01.2016 23:10

            «Полезный» репозиторий в моем понимании — это репозиторий содержащий код и/или текстовую информацию из которой можно получить пользу.

            Проще описать «не полезный» репозиторий — это репозиторий без документации, без описания, содержащий нечитаемый код или код который не возможно или не имеет смысла повторно использовать.


            1. Delphinum
              11.01.2016 23:26

              Ну многие считают, что ВУЗ дает достаточно знаний для работы, затем приходят с дипломом в руках и мыслями в голове — я закончил ВУЗ, сейчас мне будут платить


              1. drdimitru
                11.01.2016 23:34

                Сколько людей, столько и мнений.
                Уверен что бывшим студентам новые коллеги быстро объяснят как все устроено, — жизнь всех научит.


    1. NickKolok
      16.01.2016 17:10

      Мои успехи на этом поприще достаточно скромны, но тем не менее…

      Тренажёр для подготовки к ЕГЭ: github.com/nickkolok/chas-ege

      Подробности
      Если не пилить — владельцы reshuege.ru окончательно вобьют в головы абитуриентов фразу «копирование = воровство», пруф: reshuege.ru/about
      В настоящее время используется не то чтобы очень активно, но трепыхается (хотя даже Яндекс уже сдался). Статистика: www.liveinternet.ru/stat/math.vsu.ru/chas-ege/referrers.html, где ege_ok.referrer — это ege-ok.ru
      Кроме собственно заданий, кто-то может найти полезными склонялку существительных и математические библиотеки (типа умножения многочленов).
      Школьники и студенты, желающие контрибьютить — велкам, nickkolok@mail.ru, есть инструкция.
      Также как вариант — для организации лаб по JS.


  1. scottKey
    12.01.2016 02:15
    +7

    Спасибо за статью, как по мне на немного идеалистична получилась.

    Есть хорошая картинка на тему стереотипов в open-source разработке
    image


    1. drdimitru
      12.01.2016 03:52

      На популярных проектах почти как на первой зарисовке, только каждый в своей комнате в своем одиночестве,