30 марта 2016 в 16:06

NPM запретил отзывать без разрешения open-source модули старше 24 часов

Пакетный менеджер NPM на прошлой неделе стал причиной сумятицы в связи с исчезновением маленького модуля left-pad, на который были установлены зависимости в Node, React, Babel и тысячах других пакетов. Чтобы не допустить такого в будущем, сейчас администрация NPM внесла изменения в правила. По новым правилам, автоматический отзыв модуля возможен только в течение 24 часов после публикации на сервере NPM. После этого времени отзыв допускается только с разрешения администрации.

Проблемы на прошлой неделе возникли из-за того, что веб-разработчик Азер Кочулу (Azer Koçulu) отозвал более 250 своих модулей для Node.js, в том числе left-pad. Он сделал это в ответ на некрасивый поступок администрации NPM, которая отдала его модуль kik под управление интернет-компании Kik после обращения юриста этой компании.

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

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

Администрация NPM, однако, решила проблему по-своему — и внедрила более жёсткий контроль. Теперь для отзыва модуля через 24 часа после публикации нужно отправить соответствующую просьбу на support@npmjs.com. Служба поддержки проверит, не ломает ли этот модуль какие-нибудь зависимости в других пакетах. Если ломает, то отзыв запрещают. В этом случае управление или отдадут другому разработчику, или постараются связаться с автором того пакета, где есть лишняя зависимость.

«На этой неделе мы видели много дискуссий о том, зачем вообще нужна функция unpublish. Такие обсуждения велись и у нас в компании NPM, Inc. — говорится в корпоративном блоге. — Есть важные и правильные причины для её существования, так что у нас нет намерения её удалять, но сейчас мы значительно изменяем функциональность и правила работы unpublish».

NPM приносит сообществу Node.js извинения за события прошлой недели и надеется, что такое больше не повторится.
Анатолий Ализар @alizar
карма
751,5
рейтинг 24,6
Пользователь
Самое читаемое Разработка

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

  • +45
    Ну и что? Не отзывать, так накатить патч, обновив пакет до неузнаваемости, выпилив всю функциональность или внеся фейковую (которая будет работать, но неправильно). Опубликовать эту версию, и лапу будут сосать все, у кого не жёстко прописана конкретная версия.
    • +3
      Когда используется относительная версия зависимости, тогда ответственность перекладывается на их авторов и вас. Ведь тогда вы просто надеетесь, что разработчики будут лишь улучшать модуль, а не наоборот. В таком случае пакетный менеджер вам ничего обещать не может. А так, есть же отличная вещь как shrinkwrap.
      В данной ситуации, они сплошали лишь в том, что разрешали удалять модули и версии от которых зависели другие модули.
      • +1
        Я тут, кстати, опросил знакомых — про shrinkwrap почти никто не знает. Надо где-то написать большим болдом.

        И вообще, зря его не сделали по умолчанию и автоматом, как в php-шном composer.
      • 0
        В умелых руках, при наличии собственного локального хранилища npm-пакетов символы типа ^ незаменимы.
        А вот shrinkwrap.json практически бесполезная вещь. Возможно вы не обратили внимание, но в нем тоже полно пакетов с "плавающими" зависимостями. Вместо этого обратите внимание на bundledDependencies.
        • 0
          в нем тоже полно пакетов с «плавающими» зависимостями

          monolithed А можно больше подробностей? На своих проектах такого не замечал. Да и документация (https://docs.npmjs.com/cli/shrinkwrap) утверждает, что версии всех пакетов будут фиксироваться.
          • 0
            В том, что произошло было не важно, зафиксированы ли у вас зависимости. Там была цепочка из 4 пакетов из которых последний удалили.
            • 0
              Да, мы уже выяснили, что удалять модули от которых зависят другие модули — это плохо. Теперь речь о том, как быть если авторы обновляют модуль с намеренно поломанным кодом.
              • 0
                а, ясно. В своих проектах всегда фиксирую версии зависимостей.
          • 0
            До 3-й версии npm, shrinkwrap.json собирал дерево зависимостей из package.json, как сейчас не скажу. Но учитывая тот факт, что можно указать ссылку на тот же github (если пакет был отозван или npm не может найти требуемую версию, то они пытаются её засосать с github'a) зависимости явно не будет залоченными.
            Также со shrinkwrap.json всегда было огромное количество проблем из-за его генерации. Например, я сейчас создал файл с одной зависимостью от "coffee-script": "1.10.0" и вот что я получил при попытки создать дерево зависимостей:
            ➜ npm shrinkwrap
            npm WARN shrinkwrap Excluding devDependency: gaze@0.5.2 { 'coffee-script': '1.10.0' }
            npm WARN shrinkwrap Excluding devDependency: grunt@0.4.5 { 'coffee-script': '1.10.0' }
            npm WARN shrinkwrap Excluding devDependency: tiny-lr-fork@0.0.5 { 'coffee-script': '1.10.0' }
            npm ERR! Darwin 15.0.0
            npm ERR! argv ".nvm/versions/node/v5.3.0/bin/node" ".nvm/versions/node/v5.3.0/bin/npm" "shrinkwrap"
            npm ERR! node v5.3.0
            npm ERR! npm  v3.3.12

            У меня лично нет времени разбирать такие проблемы (а это напомню — всего один пакет в зависимостях).
            Но самое забавное то, что npm, все-таки сгенерировал shrinkwrap.json, правда в нем куда меньше зависимостей.
            • 0
              Так ведь по умолчанию, shrinkwrap генерирует древо зависимостей только для production.
        • 0
          Хм, версии дерева зависимостей фиксируются, на версиях которые у вас установлены на данный момент. Вас смутило полагаю поле "from", но это лишь мета информация изначального состояния дерева зависимостей. А bundledDependencies, как по мне, уже слишком "грубо", также как и добавление "node_modules" в репозиторий.
    • +1
      Вы хотите работать или ломать npm?
      • +6
        Мы хотим работать и сейчас, и в будущем. И будущая нормальная работа пока под некоторым вопросом.
        • +1
          Лол, ну фиксируйте жёстко версии всех пакетов и обновляйте всегда руками и будет вам счастье.
          • 0
            Ну так, когда их отзывают, я подозреваю — это не поможет.
          • +1
            Есть проблема в том (и в текущем решении она тоже есть), что репозиторий еще и с гитхаба удалить можно. Например, я недавно наткнулся на отсутствующий модуль pubsub. И в гите его тоже не было. Спас чей-то кеш, но если все равно можно удалить или изменить старую версию — фиксирование не поможет. Поможет делать только большое read-only хранилище пакетов, откуда их удалять нельзя от слова совсем. Правда тут есть страх, что начнут использовать его не по назначению, ну это побочные эффекты.
            Распределенный ридонли — единственное стойкое решение (кешы тоже не помогут, т.к. когда вы начинаете новый проект с бойлерплейта, в кеше может не оказаться нужного модуля).
            • 0
              При подключении с github-a NPM тут уже не причём. Как вариант либо форкайте и подключайте свой форк, или же храните зависимости вместе с кодом проекта в репозитарии.
              • +2
                Привет!
                Собственное локальное хранилище пакетов (registry), которое должно уметь подсасывать пакеты из официального хранилища (если пакета еще нет или отсутствует требуемая версия) + bundledDependencies (если есть необходимость) + GitLab или что-то в этом духе.
                • 0
                  Есть более простое решение: всё равно всё билдится на билдботах. Всем слейвам доступ в интернет запрещён (мастер, разумеется, такой доступ имеет — иначе как с ним работать). Всё.
                  Дальше — уже с конкретными командами решается: что, куда и как кладётся и обновляется. Главное — всё лежит на наших серверах. Всегда. Без вариантов.
                  • 0
                    Я вроде тоже самое написал. У нас вся сборка происходит на специальном для этого сервере. Доступ в сеть есть только на ограниченное количество адресов. Если требуемого пакета нет, то загружаем из сети, но в большинстве случаев такой потребности не происходит поскольку пакеты в локальное хранилище добавляются на этапе разработки (при первой же сборке проекта, а потом уже могут браться из кеша). Все конечно же хранится локально. Собственные пакеты тоже все лежат в этом хранилище.
        • +4
          Вы полагаетесь в работе на open source, в котором вам никто ничего не должен. Если пакет, от которого вы зависите, вам что-то сломал — это, увы, ваши проблемы.
          • +2
            А если я мейнтейнер, и сам пишу пакеты — это моя вторая работа, работа над опенсорсом. Я ни от кого не завишу, т.к. это, допустим уникальная альтернатива существующим решениям, ну или что-то новое. Разве то, что у меня просто так возьмут и отожмут мою месячную работу — это не "проблемы в будущем"?
            • –1
              Вы вообще к чему это? Мы тут обсуждали то, что по-прежнему можно сделать что-то, что сломает зависящие от вас пакеты. А вы вообще о чём?
              Но если по делу — никто у вас не отбирает же ваш проект. У вас отбирают только право на публикацию его в npm. Причём, поскольку мы обсуждаем конкретно эту новость, только в том случае, если вы сами хотите его отозвать, а от него зависит много народа. Для сообщества node.js так лучше.
              • +1
                От автора первого комментария я увидел размышления на тему как ещё можно будет привлечь общественность к не совсем правильным действиям npm, помимо обсуждения самой новости, что решение об отмене отзывов пакетов — лишь некоторый костыль. Да, озвученное в комментарии решение, кхм… Не совсем гуманное.

                И естественно мне, как разработчику подобных пакетов интересно, что делать, если что-либо с ним (с пакетом) произойдёт по причине, аналогичной известной истории с kik. Каким образом можно повлиять на npm, что бы она тоже прислушивалась к open source разработчикам, которые собственно и составляют её основу.

                Отсюда подобный ответ на вопрос "вы хотите работать или ломать npm". Надеюсь теперь вы меня поняли, что я имел тогда ввиду =)
                • 0
                  А, я понял. Не в том ключе вас воспринимал.
                  С действиями руководства NPM я тоже не согласен, но всё равно не собираюсь придумывать способы, как бы им ещё поднагадить. Потому что поднагажу в итоге не столько руководству, сколько сообществу — мой проект тоже не выкатился из-за left-pad'а в тот вечер. Я одобряю действия Азиса, но не хотел бы, чтобы такое повторялось, честно))
                  • 0
                    Немного поразмышляв над рассуждениями автора комментария, придумался такой вариант — апать версию, а в новой версии в console.log прописывать нужное сообщение, вроде "требуется ваше внимание — у меня стырили честно забитое название пакета" с пометкой, что, мол, "если у вас что-то сломалось — откатите до 1.2.3 версии, а желательно ещё и закешируйте, а то и это npmjs могут передать другому".

                    И народ привлечёт и проблем особых не доставит.
        • 0
          Пускай вам поможет https://github.com/rlidwka/sinopia
      • +5
        Сказало правительство любой страны на грани революции
    • 0
      Но тогда можно будет использовать работающую версию пакета, а не самую последнюю
    • 0
      А что мешает обновить зависимый пакет, прописав в нем жестко версию?
      • 0
        Ничто не мешает. Но надо все пакеты тогда сразу прописывать конкретной версии.
        В реальном мире — это даже хорошо. В отличие от идеального, где новая версия (не мажорная) ничего не сломает, а только сделает лучше.
  • +19
    Какое-то кривое решение проблемы.
    • 0
      Я так понимаю, что проверку эту они собираются автоматизировать, так что самому можно будет удалить версии без зависимых модулей (или в зависимости от количества загрузок) и версии не старше 24 часов, а остальное — только через поддержку.
      Предложите решение лучше?
      • 0
        На npmjs, некие деятели, уже связали принудительно зависимостями большинство пакетов (если не все). Это пакеты типа cool-, all-packages- и т.п…
        • 0
          Значит, надо смотреть не только на это, а на некую интегральную оценку с учётом количества установок. В блоге npm, Inc. про это было написано, вроде.
  • 0
    А держать локальный кешь/сервер npm пакетиков не вариант? Если там кто-то что-то угробил или изменил будет взято из кеша.
    • +2
      Вариант, есть sinopia.
      Но это поможет конкретным людям, а надо найти решение для всех. Ситуация, когда кто-то новый приходит, пытается установить популярный модуль, а он не устанавливается — не очень хорошая.
      • 0
        Вариантов много может быть, даже самопис какой. Я говорил о принципе, это позволило бы уменьшить зависимость от npm выкрутасов и в целом ускорить процесс (брать пакетики из локального репозитория).

        > Ситуация, когда кто-то новый приходит, пытается установить популярный модуль, а он не устанавливается — не очень хорошая.

        Если пакетика (нужной версии, я предпочитаю указывать строгую версию, тк у меня полный чистый билд тригается CI сервером и я должен быть уверен что он вытянет те же версии на которых происходила разработка) нет в локальном кеше то очевидно должно происходить обращение ко внешнему/оригинальному npm.
        • 0
          Если я правильно понимаю, о чём речь, то то, что вы описываете (локальный кэш) — можно было как раньше использовать, так и сейчас — в этом отношении ничего не поменялось.
          Вопрос скорее об экосистеме.
  • +29
    Мне одному кажется, что это абсолютная наглость?
    • +7
      Нет. Если лицензия подразумевает право на свободное распространение (GPL/MIT/BSD), то лицензия неотзывная, т.е. пользователи (например, NPM) имеют право распространять эту работу.
      • 0
        А если это WTFPL, которая подразумевает всё что угодно, включая изменение самой лицензии, например на кастомную закрытую, которая запрещает пользоваться любыми версиями данной библиотеки (надеюсь что такого никогда не произойдёт)?
        • +5
          Это невозможно. Вы можете сделать закрытый форк left_pad, но это никак не повлияет на ранее опубликованные версии, поскольку они сохранят WTFPL. Лицензия не распространяется в обратную сторону. :)
          • 0
            Я понял, спасибо, буду знать.
        • 0
          Это будет форк. Можно будет продолжить пользоваться лицензией с WTFPL.
      • 0
        Т.е. Вы хотите сказать, что я залив код на гитхаб не должен иметь права его удалить? Я надеюсь, что такой запрет прописан в NPM. Иначе — это «захват» аккаунта и действие явно противоречит любому закону. И лицензия тут вообще не при чем. Человек же не пытался сменить лицензию.

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

        Еще раз — автор не менял лицензию. Тут вопрос в этике поведения NPM и передаче, фактически, авторства другому лицу без разрешения самого автора.
        • +3
          Почему вы решили, что вы имеете полное право делать что угодно с кодом, загруженный в посторонний сервис? У вас есть ровно такие права, какие вам предоставляет сам сервис (разумеется, если не противоречит законодательству, но для этого сначала процитируйте соответствующие законы, чтобы утверждать об этом), не более.
          И какая ещё передача авторства?! Все неимущественные права остались при нём — никто не затирал авторские копирайты и не утверждал, что именно он автор исходных кодов модуля. От имущественных он сам отказался, выбрав соответствующую лицензию. А исключительного права на управление содержимым npmjs, где хранился его код, насколько я знаю, ему никто не предоставлял.
        • 0
          А вы и не можете его удалить, если хоть кто-то нажал на кнопку «форкнуть».
          А если вы будете говорить, что именно свой репозиторий вы удалите — я вас разочарую, ваш репозиторий и репозиторий форка — один и тот же, и коммиты там общие. Вы можете в этом убедиться форкнув что-либо, добавив туда новый коммит, и посмотрев этот коммит в репозитории оригинала.
        • 0
          Вы удалять имеете право. А если я вас форкнул (и у вас свободная лицензия), то требовать от меня удалить форк — не имеете. Более того, гитаб имеет право сам опубликовать что хочет.
          Там есть тонкий нюанс с правом на "отзыв работы", так что правильно было бы перезалить заново тот же модуль но от имени самого npm'а.
    • +4
      В том же NuGet (пакетный менеджер для .NET) удаления вообще никогда не было. Удаляют только по запросу и только в исключительных случаях: нарушения закона, вредоносный код. Можно скрыть пакет, но как зависимость он будет скачиваться всегда.
      И ничего, все живы.
      • +4
        В cargo (Rust), кстати, тоже нельзя отзывать. И это хорошо.
  • +8
    да, это уже довольно странный опенсорс получается
    • +5
      Почему? Если лицензия GPL или BSD, или Apache, то как вы представляете себе отзыв программы? Кто угодно может заявить, что сделал себе форк и всё. А у пакета left_pad вообще WTFPL!
  • 0
    А как решены подобные проблемы в других пакетных менеджерах с их репозиториями? (Типа maven, ruby gems и т. п.)
    • +2
      На рубях на самом деле пока подобных громких прецедентов просто не было. Но я думаю что rubygems тоже как минимум в курсе ситуации с NPM и уверен что некоторые изменения и дополнения ждут многие пакетные менеджеры.
      А что касается Kik — это чистейшей воды провокация и наглость. Учитывая то что модуль не был направлен на получение прибыли и никоим образом не был связан с их проектом. Предвижу что если ситуация подобная этой окажется не единичной и наглые юристы продолжат свои грязные дела, рано или поздно произойдет маленькая революция во многих опенсорс-проектах, т.к. никто не застрахован например от обращения какой-нибудь APT которая рано или поздно потребует переименовать apt-get.
      • +2
        Так тут вопрос не в юристах. NPM аргументировали свои действия не тем, что они должны были так поступить по закону, а тем, что по их мнению они позаботились о пользователях. Якобы абсолютное большинство пользователей скачивая пакет kik ожидают увидеть именно небезизвестный чатик, а не то что наваял Азер.
        • 0
          тогда это тем более унизительно.
          я думаю единственный верный вариант был написать автору и обсудить объективно эту тему, пояснив что действительно пользователи часто в недоумении из-за названия.
          чтобы автор сам решил как стоит поступить.
          и только так.
          • +1
            Автор сам начал стоить из себя обиженного подростка. Таких нужно драть ремнём, а не что-то обсуждать — но к сожалению в виртуальном мире подобный вариант не реализуем. Так что пришлось искать альтернативу.
    • +2
      Из композера нельзя удалить пакет, если скачек больше чем сколько-то. Только заабондонить.
    • +8
      Погуглил.
      1. В NuGet удаления нет. Удаляют по запросу в саппорт, и только при грубых нарушениях (ворованный и вредоносный код). Можно вручную скрыть, но для скачивания пакет будет доступен всегда.
      2. В Ruby Gems удаления не было, но недавно добавили (2015). Из-за опасений, что кто-нибудь удалит что-нибудь очень важное, всегда держат бэкапы всех версий. В случае катаклизма восстановят вручную.
      3. В Maven Central удаления нет. Могут удалить вручную в критических ситуациях.
      4. В PyPi можно удалять что угодно и как угодно.
      5. В Packagist удаления нет. Снова только через саппорт. Можно отметить пакет как "заброшенный" и дать ссылку на другой пакет, но оригинальный пакет останется где был.

      В общем и целом, похоже, побеждает подход, что ничего удалять нельзя. Неприятно местами, но рационально.
    • +4
      В cargo (rust) нельзя.
    • +2
      В системных репозиториях вроде dpkg обиженный мейнтейнер вставляет в скрипт установки rm -rf /usr/*
    • 0
      Репозиторий maven central сопровождает компания sonatype, кстати, вполне себе коммерческая (продает тот же repository manager, например).
      Они сами вполне однозначно высказались по поводу данного инцидента, и я советую их пост просто прочитать.
      Насколько я понимаю, ситуация типа той, что была с kik, ровно в таком же виде невозможна (потому что пакеты именуются как домены, и чтобы опубликовать пакет com.kik, нужно подтвердить, что ты владелец домена). И потом у тебя права на эти пакеты просто так не отнимут.
      Ну и насчет удаления — его реально нет. И это четкая позиция держателя репозитория — если пакет (версию) опубликовали один раз, от него могут зависеть сколько угодно проектов, и никто не знает, сколько их. Поэтому удалять его, и даже публиковать измененную версию запрещено — если очень хочется, публикуйте новую.
      • 0
        продает тот же repository manager

        Sonatype Nexus существует и в open source варианте под EPL. Равно как и Artifactory.
  • +14
    Коротко о правилах npm:
    1. Администрация NPM всегда права
    2. Если администрация NPM не права, смотри пункт 1.
    • 0
      Судя по правилам, они входят в состав Вооруженных Сил ;)
  • +2
    Какие есть иные варианты?
  • –8
    Обнаглели совсем. Превратили open source в open bussines. Поделом! Предлагаю бойкотировать npm и дочерние проекты компании.
  • –1
    Компания позиционирует себя как open-source, при этом запрещает быть властным над своими исходниками, так ещё и грозит отдать их в другие руки, если твое решение их не устроит! Интересно…
    • +11
      Извиняюсь, а где именно здесь противоречие? У npm есть минусы, да, но конкретно в описанном вами я не вижу проблемы.
      Если Петя отдал кому-то пакет под свободной лицензией, он не может вдруг внезапно запретить им пользоваться этим пакетом или распространять его дальше.
    • +8
      Внезапно, кто угодно имеет право делать так же. Более того, имеет право менять ваши исходники и делать то, чего вы бы в этом коде не хотели делать. Называется opensource.
      Хотите всем всё запрещать? Добро пожаловать в другой лагерь — DRM, суды над пользователями, уголовное преследование торрентов и запрет сайтов с помощью роскомпозора.
      • +2
        Ну вот из другого лагеря набежали и запретили использовать имя «kik», а компания прогнулась.
        • +2
          А что могла сделать компания? А что бы сделал Азер Кочулу, если бы пренензии предъявили ему? Гордо пошёл бы под суд? Это та ситуация, где "дура лекс". Нравится/не нравится, но есть торговые марки и они именно так работают. Кстати, торговая марка Linux зарегистрирована и её держат именно, чтобы вот так не вышло.
          • +1
            Собственно, юрист сначала связался с сами Кочулу, но был послан, после чего уже обратился в NPM.
    • +3
      Причём тут исходники, пардон?
  • 0
    Что-то мне это напоминает… «Решить проблему собственной импотенции изменением правил игры».
    Так же смутила формулировка «В этом случае управление или отдадут другому разработчику» — они собираются менять только владельца или заодно и авторство пофиксят на «NPM, Inc.»?
    • +8
      Вы про "форк" я так понимаю, никогда не слышали? Вообще, у меня сложилось мнение, что комментаторы у статьи как раз из тех, что часто пишут, про то, какая плохая лицензия GPL, потому что она что-то там требует. Правда все остальные open source лицензии позволили бы здесь сделать то же самое.
      Я понимаю, чисто эмоциональное раздражение и обиду ситуации "я хотел громко хлопнуть дверью, но получился пук", но всё-таки. Вот выше (не хочу писать 100500 комментариев) написано про "при этом запрещает быть властным над своими исходниками", но open source это как раз про деление исходниками, про предоставление прав вашим пользователям присоединиться к разработке, защиту исходников и сопутствующих прав от эмоционального или злонамеренного манипулирования со стороны вышестоящего разработчика.
      И если вы не готовы к такому, то что делаете в мире open source вообще? Откройте для себя чудесный мир EULA и NDA.
      P.S. Интересно, а хлопок дверью со стороны Кочулу вас не возмущает? Вы не были или не представляете себя на месте тех, у кого встала работа из-за внезапно пропавшего пакета?
      • +3
        Подпишусь под этим высказыванием.
        Кстати, насколько я знаю, ещё одна сторона проблемы была в том, что Азер удалил не только свои пакеты, а все, к которым он имел доступ на публикацию. Часто у разрабатываемого сообществом пакета есть некий список людей, которые могут выкладывать новые версии.
        То, что любой из них может (уже мог) целиком удалить этот пакет — недоработка со стороны npm. Пока что это решили так. Что будет потом — посмотрим.
      • +1
        Вас не в ту степь понесло.
        1 — Никто не запрещает делать форки, так же как никто не запрещает держать зеркала. К примеру я у себя держу копии пакетов из зависимостей нужных версий. На случай невозможности установки из репозитория (гитхаб заблочат).
        2 — Вы не признаете импотентность NPM, Inc.? Сама проблема возникла по причине наглых Kik, на поводу у которых NPM и пошли. Это создает прецедент для грязных юристов. Тут вытекает множество проблем.
        3 — Своевольная передача прав автора другому лицу — это не «изменение правил игры под себя»?
        4 — Я верю, что «Есть важные и правильные причины для её существования» (функция unpublish), но я не верю, что данная функция должна быть доступна пользователям сервиса. Хотя отсутствие это функции все равно не спасет от диверсии (см. первый коммент к посту).

        Я считаю, что Азер поступил очень правильно и честно. Вы разрабатываете пакет, публикуете его, обновляете, люди им пользуются, а потом вас просят его переменовать. Просто так, без особых оснований. Компания, которая никаким боком не относится ни к вам, ни к сообществу, ни к пакету. А потом у вас просто изымают права на сам пакет репозиторий, которому вы доверяли. Вы продолжите пользоваться им? Вы уверены, что больше такого не произойдет?
        Лицензия вида «делай с кодом что хочешь» не распространяется на права пакета в репозитории, которых Азера лишили.
        Если хотите, то я распишу свою точку зрения более развернуто.

        P.S. Да, мне больше по душе BSD/MIT/Apache нежели какая-либо из GPL.
        • +5
          Давайте ещё раз — что в удалении чужих пакетов, к которым он имел доступ, и в принесении головной боли куче людей было «очень правильным и честным»?
          • +5
            Вы, как мне кажется, не сильно разобрались в вопросе.

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

            Обратите внимание на запись в блоге Азера (ссылка: https://medium.com/@azerbike/i-ve-just-liberated-my-modules-9045c06be67c#.lakuky6i3 )
            Цитирую:
            ______________________
            Summary; NPM is no longer a place that I’ll share my open source work at, so, I’ve just unpublished all my modules.
            ______________________

            Во-вторых, минусуйте меня сколько хотите, но я вижу в только плюсы в поднятии этого вопроса таким размахом. Сколько людей читало блог Азера? Не сказал бы, что много. Сколько людей теперь знают про данную ситуацию? Думаю, что намного больше читающих блог автора модулей. Я не читал его блог, но знаю про ситуацию и прочитал.
            • +5
              Я достаточно разобрался в этом вопросе, уж поверьте мне.
              https://github.com/substack/provinces/issues/20 — посмотрите сюда. Азер удалил пакет provinces, который был создан и опубликован Джеймсом. Азер просто имел к нему доступ, так как являлся одним из разработчиков этого пакета, которому Джеймс дал этот доступ. Джеймс ему доверял.
              Это во-первых. Во-вторых, я лично никого не могу минусовать — я свои первые комментарии на хабре написал в этой теме, и кнопки со стрелочками у меня банально не активны.
              • 0
                Ок, в этом конкретном моменте соглашусь с вами. Попутно зацепил. Думаю это не было преднамеренным действием.
                • +4
                  Я очень сильно сомневаюсь, что это был единственный такой пакет. Это достаточно распространённая практика, когда несколько людей имеют доступ. А было снесено, напоминаю, около 250 модулей.
            • +3
              По поводу донесения своих мыслей — да, сколько угодно. Пусть ведёт блог, пусть выступает на конференциях, пусть раздаёт листовки на улице.
              Но доносить свои мысли методом поломки рабочего окружения огромному количеству людей и удалением чужих модулей — не очень красивый поступок, не находите?
              • 0
                Поступок действенный.
                Опять же вопрос доверия: ему доверяли, но сейчас может быть не совсем. Он доверял NPM, а теперь точно нет.
                Быть может, вы солидарны с NPM? Надо отбирать права на _ваши_ пакеты и выдавать их другим компаниям? Быть может, вы все равно продолжите публиковать свои пакеты на npmjs зная, что именем вашего пакета в будущем воспользуется некая недобросовестная компания?
                • +4
                  Не передёргивайте, я утверждал совсем не это. Я говорю, что такие методы донесения своей позиции до всех не являются в моём понимании приемлемыми. А вы утверждали, что в вашем понимании — являются.
                  Повторю свой вопрос — должен ли я был испортить неделю ещё более широкому кругу разработчиков, когда нашёл другую проблему в экосистеме (которая с моей точки зрения более важная) и попробовал её донести до всех? Я считаю, что не должен был, и поэтому я ограничился записью в блоге.
                  • 0
                    А я и не передергиваю. Вам решать, удалять свои пакеты или нет.
                    Я утверждаю, что такие методы более честные, нежели тихое замалчивание. в бложике Пусть лучше пакет не загрузится с этого репозитория (никто не мешает его загрузить откуда угодно при доступности), нежели потом внезапно узнать, что в свеженьком пакете есть «дополнительный недокументированный функционал».
                    Ну и «испортить неделю» — это как-то слишком громко сказано.
                    • +2
                      Ещё раз — он удалил не только свои пакеты, да и я сейчас тоже говорю про удаление чужих.
                      Смотрите сюда: https://github.com/ChALkeR/notes/blob/master/Do-not-underestimate-credentials-leaks.md
                      Повторю вопрос: должен ли я был снести npm, express и остальные из репозитория, чтобы придать этому более широкую огласку, следуя вашей логике, или нет?
                      • –2
                        Опять и пустого в порожнее.
                        Я согласился с тем, что он зацепил не только свои модули. Я продолжаю говорить про удаление своих модулей, а что я вижу? «Вот ключики утекли — надо удалять?» Это другая опера.

                        Ниже уже обсудили, что никто никому ничего не должен. Азер это понял и поудалял пакеты, ибо никто никому ничего не должен. Он ничего не взламывал, не искал приватные ключики, он просто удалил к чему имел доступ, зацепив при этом, к сожалению, еще несколько чужих пакетов. Паника возникла из-за left-pad и это не чужой пакет, но «все сломалось».
            • +1
              Я по вашей логике должен был давно сломать весь npm, да?
        • +3
          1. Тогда откуда злобные намёки на "авторство пофиксят на «NPM, Inc.»"? Что такого сделала компания, кроме как восстановила работоспособность в рамках лицензий?
          2. Вы пишете странные вещи. Тут нет никакого прецедента. Владельцы торговой марки Kik были в своём праве. Это можно считать не правильным, не этичным, глупым, вредным, но закон говорит, что правы они. Вы хотите сказать, что NPM Inc импотенты, потому что не объявили войну всей юридической системе? Ну...
          3. "Управление <..> отдадут другому разработчику" — вы почему-то это обзываете "передачей прав автора". Банальная ситуация в open source. Текущий автор бросил проект и исчез. Его форкают под тем же именем и за разработку берётся некто другой. Но в ваших глазах это чуть ли не нарушение Бернской конвенции. Вы точно правильно понимаете ситуацию?
          4. Функция полезная, но работать должна не так.

          Прекрасно вы считаете. Из-за личной обиды человек, мстя NPM, которые выполняли неизбежное требование закона, поднасрал целой куче людей, которые про него даже не слышали и он прав. Юристы, которым моча в голову ударила — нет. NPM, у которых не было выбора — нет.
          Обиду я понять могу. Счесть правым — нет.
          Точку зрения можете расписать, если очень хочется, но вы заранее не правы. :) Законы и существующая практика говорят об обратном. Когда люди собирают репозиторий пакетов в дистрибутив Linux они не спрашивают авторов — хотят ли те. Вполне достаточно прочитать лицензию. Когда решают исключить — тоже. NPM полностью в праве делать со своим репозиторием всё, что захотят, в том числе включать туда любой пакет, без согласия автора, если лицензия пакета позволяет.
          В общем-то люди выбирают лицензию не сердцем, а тем, на каких условиях они хотят распространения своего кода.
          • +2
            NPM, у которых не было выбора

            Мне таки кажется, что выбор был(я сейчас свои домыслы озвучу, может кто из более юридически подкованных меня поправит): npm могли просто отказать kik и отправить решать этот вопрос с Азером. Kik могли подать в суд на Азера и теоретически выиграть дело. И уже с решением суда Kik могли требовать от npm удаления модуля (повторюсь: это мои домыслы, юридически я не подкован)
            • +1
              Вы абсолютно правы, но вы не учитываете одного: в случае проигрыша в суде NPM бы выступили как соучастники и платили бы нарвне с Азером. Да, Kik мог бы и не выиграть дело и тогда и право на пакет осталось бы у Азера и NPM бы никому ничего не платил (кроме, понятно нескольких сот тысяч долларов юристам) — но я прекрасно понимаю почему NPM решил в эти игры не играть.
          • +3
            … закон говорит, что правы они.
            Мне кажется, что буча как раз возникла именно потому, что закон-то и не спросили. У торговой марки есть scope, поэтому нельзя заранее сказать, затрагивает ли он пакет Азера или нет. Корректным ходом со стороны NPM было бы в первую очередь проконсультироваться с юристом и выяснить, подпадает ли пакет под область применения их трейдмарка. Они передали пакет без вопросов — отсюда, как я понимаю, и всеобщее возмущение.
            • 0
              Есть некоторый шанс, что NPM проконсультировались-таки с юристом и решили обойтись без суда, однако по какой-то причине не стали сообщать сообществу об этом. Если консультация с юристом имела место быть, то шаг со стороны NPM вполне оправдан.
              • 0
                Консультация? У них что ли штатного нет?
              • 0
                Здесь мы уже в области догадок — может быть и так, что проконсультировались, может быть и нет. Вообще, если бы проконсультировались, опять же корректным ходом было бы об этом упомянуть во всеуслышание. В письме от Айзека Шлютера есть только это: "In this case, we believe that most users who would come across a kik package, would reasonably expect it to be related to kik.com." — то есть аргумент состоит в том, что пользователи будут думать, будто пакет kik связан с kik.com. У меня нет ощущения, что это правильный способ судить об области действия трейдмарка, но я, конечно, не специалист.
                • +2
                  Вообще, если бы проконсультировались, опять же корректным ходом было бы об этом упомянуть во всеуслышание.
                  Вы вообще когда-либо консультировались у юристов или просто «погулять вышли»? Первое что потребовал бы юрист — это подписать NDA. Ещё до того как выслушал бы вопрос. Без этого — и разговора бы не было. Консультации с правом публикации вне переписки защищённой attorney–client privilege — стоят гораздо дороже.
                  У меня нет ощущения, что это правильный способ судить об области действия трейдмарка, но я, конечно, не специалист.
                  Оно и видно — ибо как раз эта фраза звучит не как английский, а как legalise и как раз она наводит меня на мысли что неделю они потратили именно и конкретно на консультацию с юристами.
                  • 0
                    Вы очень агрессивны. Я имел в виду, что Айзеку достаточно было бы упомянуть о том, что консультации имели место — тогда сообщество не приняло бы решение в штыки.
                    Раз упомянули, можете пояснить, как здесь применяется attorney-client privilege? Опять же, я никаким боком не специалист, но у меня было впечатление, эта привилегия защищает именно клиента и его информацию (от compelled disclosure со стороны юриста), но не наоборот.
                    • 0
                      Раз упомянули, можете пояснить, как здесь применяется attorney-client privilege?
                      Никак не применяется — в этом-то и дело.

                      Опять же, я никаким боком не специалист, но у меня было впечатление, эта привилегия защищает именно клиента и его информацию (от compelled disclosure со стороны юриста), но не наоборот.
                      У вас правильное впечатление, но вы немного не подумали о последствиях. Attorney-client privilege даёт возможность говорить о любых вещах, касающихся какого-либо юридического вопроса — но она не даёт права врать в суде.
                      Как только вы что-то начинате говорить о своих консультациях публично — у противной стороны появляется зацепка, через которую грамотный юрист много чего может вытащить через встречные вопросы в судебных баталиях.
                      Соответственно любые юридические консультации по умочанию ведутся на условиях неразглашения, как правило, без записи на бумагу (эти записки суд тоже может истребовать!) и т.д. и т.п. По принципе «всё о чём тут говорится не покинет пределы этой комнаты». Да-да, включая даже факт того, что консультации имели место.
                      Можно ли по другому? Можно — но это стоит дополнительных денег.
                      • 0
                        Признаться, мне ужасно трудно поверить, что фраза "we discussed it with lawyers and decided...", опубликованная в блоге, может быть покрыта каким-либо NDA. Факт консультаций обезличен, как его предусмотреть в соглашении. Вы не могли бы — в целях ликвидации безграмотности среди меня — ссылок бросить на описание такой практики? Мне стало любопытно, но я бьюсь и никак не могу найти ни одного упоминания, одни только NDA против разглашения данных юристами — и ни одного против разглашения клиентами.
                        • 0
                          Вопрос не в NDA. Никто не может запретить вам рассказывать что угодно и кому угодно. Но если вы это делаете, то, тем самым, усложняете работу адвокату. Attorney–client privilege призвана сохранить то, о чём вы говорили с адвокатом в тайне — а какая же это будет тайна, если вы о ней расскажете всему миру?
                          Просто почитайте статью на Википедии, в конце-то концов: The privilege may be waived if the confidential communications are disclosed to third parties или Disclosure of information that is already in the public domain does not breach the duty. Или даже For instance, if a client has previously disclosed confidential information to a third party who is not an attorney, and then gives the same information to an attorney, the attorney–client privilege will still protect the communication to the attorney, but will not protect the communication with the third party.
                          Формального запрета нет, но всё просто кричит об этом принципе: "всё о чём мы тут говорили должно остаться тайной — или ищите себе другого адвоката"!
                          • 0
                            Да, я читал об attorney-client privilege, но мне кажется, мы по-разному понимаем этот принцип. Он никогда не ставил своей целью защитить адвоката. Насколько я понял, он изначально (века с шестнадцатого) позволял адвокату отказаться от дачи показаний против клиента, а клиенту помогал говорить без утайки с адвокатом, зная, что его секреты защищены. Но привилегия принадлежит клиенту, и в его праве от неё отказаться (из "The Attorney-client Privilege and the Work-product Doctrine" Эпштейн: "...The client, not the lawyer, holds the privilege. The client has the ultimate authority to raise or to waive the privilege.") Например, взять и разгласить, и тогда адвокат тоже может дать показания. Адвокату же никто ничего не обещает — если он не хочет себе проблем, то должен в ходе консультации оставаться в рамках закона и этики. Да, кстати, ещё оттуда же: "The mere fact that the attorney-client relationship exists is not privileged." — то есть факт предоставления услуг вообще не покрывается этой привилегией, любая сторона может открыто об этом говорить. Поэтому я и удивляюсь, когда речь идёт об attorney-client privilege — она тут никак действия Шлютера не может ограничивать.
                            • 0
                              Да, я читал об attorney-client privilege, но мне кажется, мы по-разному понимаем этот принцип.
                              Мы его понимаем одинаково — но вы никак не хотите понять какое из него следствие вытекает :-)
                              А следствие простое — адвокату закон запрещает всё, а клиенту он не может запретить ничего. То есть условия — абсолютно несправедливые. И сделать он с этим не может ни-че-го. Правильно?
                              Нет — неправильно. У адвоката есть одна лазейка, которая быстро ставит всё на свои места. Он не обязан оказывать консультации. Хочет — оказывает, не хочет — не оказывает.
                              Потому — всё очень просто: либо клиент ведёт себя так же, как должен вести себя адвокат, либо — он ищет другого адвоката.
                              Адвокату же никто ничего не обещает — если он не хочет себе проблем, то должен в ходе консультации оставаться в рамках закона и этики.
                              Всегда и безусловно. Разумеется. Выбор — остаётся за вами. Хотите — общаетесь с адвокатом, хотите — с прессой. Только не одновременно. И не последовательно. А вот так: либо — одно, либо — другое. Всё — сугубо добровольно, абсолютно ненасильственно, выбор остаётся за клиентом. Всегда. Адвокат вообще не может ничего ни от кого требовать, только советовать. Адвокат может только просить. Вот он и советует вам. По-человечески, по хорошему. А дальше — делайте выбор. Ваш выбор и вам отвечать за его последствия.
                              • 0
                                Да нет, я понимаю, что у адвоката есть причины хотеть неразглашения со стороны клиента. :) Мне просто трудно заставить себя поверить, что NDA — это реальный, существующий и часто применяемый адвокатами ход. Никогда о таком раньше не слышал, и теперь вот даже упоминания найти не могу — поэтому и спрашивал, нет ли где описания, уж очень диковенно звучит. :) Тем более настолько драконовское, чтобы клиент не мог даже упомянуть о том что с адвокатом разговаривал. Уж это-то и адвокату закон не запрещает.
                                • 0
                                  Тем более настолько драконовское, чтобы клиент не мог даже упомянуть о том что с адвокатом разговаривал. Уж это-то и адвокату закон не запрещает.
                                  А это — уже типичная перестаховка со стороны клиента :-) Адвокаты обычно стращают людей разными ужасами, которые могут случиться, если клиенты будут «болтать языком», а дальше — поскольку «это ваш выбор… я вас просто предупредил» многие решают, что лучше вообще молчать обо всём, что только можно.
                                  • 0
                                    Прямо зазеркалье — сколько скелетов в шкафу у мира юриспруденции. :) О таких подробностях я не подозревал. Может, конечно, статься так что Шлютер из-за этого не упомянул юристов. Хотя я думаю — в ретроспективе — что заплатить бонус за публичность и поддержать имидж компании было бы на тот момент стоящей идеей.
                                    • +1
                                      Угу. Зазеркалье — это хорошее описание. Я сам не юрист, но несколько раз приходилось сталкиваться и консультироваться. Первое время — вообще ощущение, что говоришь с людьми с другой планеты. Потом, со временем, начинаешь понимать логику.
                                      К примеру программисты всегда стремятся обобщать и "играть с параметрами" пытаясь понять — "как эта хрень вообще работает". Юристы же сразу начинают копаться в деталях и на вопросы "а что было бы если бы вместо A тут стояло B" либо не отвечают, либо говорят, что "нужно дополнительно разобраться".
                                      Поначалу это злит, но, как я уже сказал, в этом есть смысл.
                                      Задача адвоката — не поиск истины. Задача адвоката — выигрыш дела или минимизация потерь от проигрыша! При этом все доводы должны быть собраны и привнесены в дело с самого начала. Добавлять что-то "по ходу" можно очень ограниченно.
                                      Самый действенный метод тут — это "копание в частностях".
                                      Что-нибудь по типу:
                                      Дорогая судейская коллегия, мы признаём, что изобретение истца — самое лучшее изобретение всех времён и народов. Однако «скруглённые углы», о которых говорится в заявке на патент не могут включать в себя углы, радиус скругления слишком велик (так как в этом случае это было бы нарушением патента такого-то) или слишком мал (так как это было бы нарушением патента сякого-то)

                                      <три страницы размышлений>

                                      Таким образов в великолепном изобретении подразумеваются углы со одинаковым скруглением от 2.5мм до 5мм со всех сторон, корпус одного из «чистых» цветов и кноку на расстоянии от 2мм до 3мм от края.
                                      А защищаемый мною ответчик изготавливает полупрозрачное изделие с углами, скругление которых снизу — 7мм, сверху — 8мм, корпус — тусклого серого цвета в крапинку и кнопка на насстоянии целых 5мм от края! Оно не имеет никакого отношения к тому, что изобрёл истец!
                                      Разумеется подобные вещи готовятся ещё во время производства, когда это «совершенно непохожее изделие» разрабатывают. А дальше — подумайте почему адвокаты так настойчиво просят ничего и никому по возможности не говорить.
                                      Специфика профессии. Реальное зазеркалье.
          • 0
            1. Изначально NPM отобрала права на управление пакетом. Двух пакетов.
            2. Вы полностью уверены, что область применения торговой марки Kik применяется и на npm? Кстати, а на пакет kik-starter у них тоже scope распространяется? NPM импотенты, потому что от Kik не поступил банальный C&D, а они сразу встали за задние лапки и выполнили их требования.
            3. Ситуация с забрасыванием пакета понятна, но тут автор никуда не пропадал, не собирался забрасывать разработку…
            4. Чем она полезна и как она должна работать? На мой взгляд, архив репозитория должен быть неизменным. RO и точка. Удаление исключительно в системных целях.

            В итоге хорошо. Азер и NPM друг другу ничего не должны и каждый вправе поступать как он желает. Тогда с чего буча поднялась?
            • +4
              1. И? Они не присваивали себе авторство, не нарушали лицензии.
              2. Да. Есть масса примеров. Запрет Mozilla на использование названия Firefox в кастомных сборках их браузера. Переименование дистрибутива Lindows в Linspire после многозначительного "кхе-кхе" Microsoft. Масса случаев отжатия доменных имён. (Не все из них были захватами, в ряде случаев домены отжимались как раз у сквоттеров.) Вы конечно можете думать что угодно, особенно, пока у вас нет перспективы быть ответчиком по такому делу, но ситуация "у них есть торговая марка" на 100% означает, что вам предпишут нарушать её, возможно назначат штраф и точно заставят оплатить судебные издержки. И да, представьте себе, но шансы на отжатие имени kik-starter, особенно написанного через дефис весьма велики. (А я не говорю, что это разумно и правильно. Но это так.)
                Я бы мог даже пожелать посмотреть, как вы бы проявили свою не импотенцию в аналогичных условиях. Но результат немного предсказуем. Вы бы судились, проиграли бы и долго оглашали интернет тоскливыми постами о том, как не справедлив мир. И я бы даже с вам согласился бы. Не справедлив.
              3. Автор ушёл из репозитория и удалил пакеты. Поскольку лицензия позволяла, кто угодно имел право создать пакет с тем же именем и поместить туда тот же код. Напоминаю: мейнтейнеры не спрашивают у авторов разрешения на помещения пакета в репозиторий, это право уже дано лицензией. Отлично, пусть разрабатывает. Кто угодно имеет право регулярно брать его новые версии и помещать в любой репозиторий, в том числе и NPM. Это абсолютно нормально, даже если вам очень хочется, чтобы это было не так.
              4. Полезна тем, что ПО иногда просто умирает, становясь ненужным. Но удаление должно лишь помечать пакет как недоступный, пока он не пропадёт из зависимостей. Если же в репозитории хранятся все версии, а не только последние, то пакет должен остаться с пометкой "удалён" навечно.
              • –1
                Мне кажется мы в разных мирах живем. Грубо говоря, я вам о причинах, а вы о следствии.

                1. При чем тут отобрать права на управление пакетом и нарушение лицензии?
                2. FireFox браузер. Логично, что он запрещает сборкам браузеров так называться. Аналогично с Дистрибутивами. Но мессенджер и пакет в репозитории…
                3. Автор потом удалил пакеты и ушел. Изначально у него просто отжали права на управление. Отжали имя пакета.
                4. Какое ПО умирает и становится ненужным? вы еще скажите, что MS-DOS сегодня никто не использует.
                • +4
                  1. Я про left_pad. Пакет был удалён. Он был повторно создан.
                  2. Это с вашей точки зрения здравого смысла есть разница. А с точки зрения закона мы имеем использование зарегистрированной торговой марки в продукте той же категории (программное обеспечение), без разрешения владельца марки. И никого не волнует, что это совершенно разные вещи.
                  3. Он мог форкнуть те пакеты под другим именем. Код принадлежал ему, а имя — Kik. Нравится вам это или нет, но это так. Я понимаю, это тяжело для многих, но вы попробуйте представить всё в обратную сторону. Вот вы делаете программу, а потом кто-то выпускает соверешенно другую с вашим именем. Будете вы рады? Вот для этого и есть торговая марка и принцип "кто первый зарегал, того и тапки". Если ему так хотелось иметь пакет с именем kik, надо было зарегистрировать марку первым. Да, это глупо в мире, где на каждую функцию один пакет. Но пока ничего лучше не придумано. И уж точно не имеет силы закона.
                  4. Пф! Много какое. ПО для чтения перфокарт, форматирования дискет. Даже ПО для записи компакт-дисков почти мертво. То, что кто-то в личном порядке занимается некрофилией никого не волнует. Это уже не разрабатывают и почти не поддерживают. Когда-то я пользовался diald для автоматического дозвона модема. Сейчас эту программу даже не собрать без килограмма патчей. А если вдруг приспичит позвонить, то подойдёт ModemManager, написанный совершенно независимо. diald мёртв. Как и многое другое.
                • +1
                  2. FireFox браузер. Логично, что он запрещает сборкам браузеров так называться. Аналогично с Дистрибутивами. Но мессенджер и пакет в репозитории…
                  А что тут такого?

                  Меня вообще поражает когда люди вспоминают про Firefox в применении к торговым маркам, но приводит совсем не тот пример. Люди, у вас что — совсем память отшибло? Вы хоть знаете — почему этот браузер называется Firefox? Нет? Так я вам напомню: изначально он назывался Phoenix. А потом пришли люди изPhoenix Technologies на них наехали — и Phoenix превратился в Firebird. И тут уже возмутились фанаты небезизвестного продукта — и мы получили Firefox.

                  Вот про что нужно вспоминать когда вы упоминаете Firefox в связи с инцидентом. А вы — «запрет Mozilla на использование названия Firefox в кастомных сборках их браузера». Слабо. Очень слабо.
            • 0
              Двух? А какой второй?
              • 0
                Второй — это kik-starter.
                • 0
                  А, я его упустил. Спасибо.
      • 0
        При чем тут «форк», когда речь про лишения прав на управление модулем? Сделайте форк моего модуля foo, залейте его как superfoo и делайте с ним что хотите. А если я захочу от своего foo избавиться, то это я должен решать отдать кому-то управление или просто забросить, а не кто либо ещё.
        • 0
          Простите, но это так не работает. Если вы опубликовали некоторый код под некоторой лицензией, то он начинает жить своей жизнью. Вы уже не полностью контролируете его. И если WTFPL позволяет делать всё, что угодно, то можно и так. Тем более, что в данном случае даже не имел место форк. Пакет был повторно упакован в репозиторий другим человеком. В конце концов, когда некая программа оформляется, как пакет в том или ином дистрибутиве Linux это даже не означает, что сделан форк. Она просто распространяется.
  • +5
    Права на спорный модуль они так и не вернули хозяину, как я понимаю?
    • –3
      А зачем возвращать? Он отказался быть хозяином на данном конкретном хостинге, а лицензия позволяет использовать старые версии и не спрашивая согласия автора. Всё правильно сделали.
      • +8
        Он не отказывался, компания «Kik» написала жалобу на модуль «kik», который был написан и принадлежал Азеру, а админы просто нагло передали права компании, хотя модуль ей никак не принадлежит. Рейдерство internet edition.
        • +1
          Все-таки, старик Столлман был прав, а не преувеличивал, уравнивая стремления некоторых нечистоплотных коммерческих контор и государства...
        • –1
          А, это про kik, не понял сразу. С киком история мутная, и неприятная, да. Но мы её знаем только в изложении Азера, а он не то чтобы образец здравомыслия. Хз что там на самом деле было.
      • +11
        То есть вас не смущает что под старым именем теперь будет абсолютно другой пакет, никак не связанный с оригиналом? Будь я злоумышленником и видя такое поведение npm — попытался бы перехватить контроль над популярными пакетами, а потом залил туда какой-то бекдор или другой зловред.
        В моем понимании правильно сделали: это послать киковских юристов, а разработчикам сказать "хотите свой пакет добавить? — не вопрос, выбирайте свободное имя."
        • 0
          Вообще-то подобная практика используется, пусть и не так часто как с расширениями для браузеров.
        • –1
          Можно проще. Написать пакет (left-pad, например), сделать его популярным, а потом на его место залить бэкдор. С каким-нибудь минорным изменением версии.
  • –6
    Может быть разработчикам node.js стоит подумать о написании утилиты схожей по своей логике с go get? Тогда можно будет отправить любую авторитарную организацию типа npm лесом и жить спокойно, ставя модули откуда угодно (в т.ч. и из своего обычного git-репозитория).
    • +4
      Вы удивитесь, но npm позволяет ставить модули из git-репозитория.
      • 0
        Ну, не то чтобы я удивлён, просто как-то не пользовался, поэтому не в курсе. Раз такое дело, и если это все ставится без бубна, то тогда не вижу причин убиваться (а равно и возлагать большие надежды на) по репозиторию npm вообще: подходит — отлично, работаем, не подходит — подняли свой гит, работаем дальше.
        • +1
          В приличных конторах так это давно стало обычной практикой.
    • +3
      Во-первых, не путайте клиент npm и репозиторий на npmjs.org.
      Во-вторых, есть некоторые разговоры о децентрализованном хранилище пакетов, но тут надо быть очень аккуратными — у немодерируемого бесконтрольного репозитория пакетов, которые вообще-то могут делать от имени пользователя что угодно, будут свои (и очень значительные) минусы.
      • 0
        Во-первых, я в своём посте довольно конкретно назвал утилиту [npm — прим. ред.] утилитой, контору [стоящую за репозиторием npm — прим. ред.] — конторой, а разработчиков node.js [в чей состав входит утилита npm — прим. ред.] — разработчиками node.js.
        Во-вторых, особой разницы лично я не вижу. Аккуратным нужно быть всегда, потому что нормальные пакеты что в репозитории, что в водохранилище — одинаково нормальные, а всякая муть — что там, что тут муть. Кроме того, живут же как-то разработчики на тех же Go, C, C++, Java, PHP с децентрализированными источниками кода и ничего — работают. Это, конечно, не так удобно, как "трах-тибидох-тибидох, поставь-мне-то-не-знаю-что", но тоже не смертельно.
        • 0
          Если бы в C++ было бы хоть что-то напоминающее npm, то все бы писали на нем.
        • 0
          у Java централизированный Maven Central, в котором почти все, у Go вроде есть репозиторий комьюнити. А у PhP разве есть что-то подобное?
  • +2
    Молодцы, давно пора.
  • +10
    NPM запретил отзывать без разрешения open-source модули старше 24 часов
    А передачу модулей третьим лицам они тоже запретили?
    NPM приносит сообществу Node.js извинения за события прошлой недели и надеется, что такое больше не повторится.
    А перед Азером они тоже извинились? Ну, что касается передачи модулей третьим лицам, то это всецело зависит только от них и надежда тут ни при чем…
    • +1
      А перед Азером они тоже извинились?
      А за что перед Азером-то извиняться? Они действовали в рамках своих правил. И в рамках закона. За такое как бы глупо извиняться.
  • +3
    У Perl вот можно удалить модуль, но там есть архив всех модулей, откуда его можно ручками забрать и откуда его автор не может удалить сам. Для всякой архиологии и разбора полётов прошлого.
  • +3
    РосПакетНадзор, национализирует и цензурирует код
  • +1
    Что то мне подсказывает, что это решение несет еще больше проблем. ИМХО им бы стоило пересмотреть своё поведение с передачей имен.
    • +3
      По-моему это 2 независимые проблемы. Возможность автору популярного пакета отозвать его без предупреждения и сломать тысячи проектов не должна существовать. Независимо от того, что сподвигло автора это сделать, рациональная причина или любимый/любимая бросили и решил наказать весь мир за это.
  • 0
    То есть, вместо отказа без решения суда передать управление пакетом «правообладателю», присваиваем себе разработки. Ждем патентного троллинга — автор выкладывает пакет, ждет, что его скачает 100-200 человек и меняет лицензию на коммерческую с требованием через суд удалить и выплатить 100500 миллиардов штрафа.
    • +1
      Вы вообще ToS npmjs.org читали?
      Он вот тут, если что: https://www.npmjs.com/policies/open-source-terms
      • 0
        Кстати пробежался глазами по существующим подобным репозиториям. У packagist.org вообще нет никаких лицензионных соглашений на сайте и более того — он сам open source, т.е. можно скачать и установить его локально. И распространяется, судя по всему под лицензией MIT, ну судя по тексту, т.к. сама лицензия не обозначена.

        P.S. И ещё веселее то, что некоторые популярные пакеты его уже используют, например бутстрап. Может стоит взглянуть на пакагист? Хотя бы в качестве альтернативной площадки. Прописать composer.json, повесить github эвенты и забыть, лишним по-моему не будет.
    • +2
      Выше уже говорили: лицензии не отзываются. Новую версию под коммерческой лицензией — сколько угодно; старую можно распространять сначала под MIT, а потом под MIT или чем‐то ещё, но никак не сначала под MIT, потом только под чем‐то ещё.
      Я не юрист, но полагаю, что подлянку нужно делать другим способом: просто что‐то из использованного в пакете запатентовать (коммерческая лицензия и патентованные алгоритмы это две совершенно разных вещи, вполне можно иметь открытый код с патентованными алгоритмами: как тот же кодек h.264). За хранение патентованного кода с NPM вроде ничего не должны сделать даже не учитывая их ToS (которые включают разрешение NPM делать определённые действия, в т.ч. распространять), а вот от пользователей, использующих патентованный пакет, можно что‐то отсудить; не все лицензии дают защиту от таких подлянок (а если вы выбрали именно такую и только потом подумали об организации подлянки, то вас за руку никто не тянул). Но тут лучше спросить у юриста, наверняка будет много подводных камней. Особенно связанных с нахождением пользователей пакета и доказательством их вины. (Ну и то, что вы благополучно сольёте свою репутацию.)
      • +2
        По этому необходимо избегать использования BSD/MIT, выбирая для новых проектов современные лицензии, типа *GPLv3, Apache 2.0, MPL 2.0, которые содержат необходимые оговорки на счёт патентов (производным работам предоставляется бесплатная общемировая лицензия на патент.)
  • –8
    Теперь хрен я там опубликую модуля на том хостинге!
    • +1
      Держи нас в курсе.
    • –3
      Уважаемые минусующие. Раз ставите минус — объясните почему именно?
      Мне не очень нравится навязывания таких политик в каких-либо сервисах.

      Для примера.
      Написали офигенную книгу и начали продавать через какой-то сервис. Через некоторое время приходит какой-то чумло и заявляет что это его книга и его интеллектуальная собственность, исходя исключительно только из названия книги.
      Он дает запрос на эту площадку, и владелец перебрасывает как и книгу так и баланс на профиль этого чумла без каких либо предупреждений и разбирательств.
      Ваши действия?
      • +1
        Мне не очень нравится навязывания таких политик в каких-либо сервисах.
        Мне искренне жаль, что исполнение законов вам не нравится. что предлагаете делать — революцию? Независимое издательство на Луне? Или как?
        Для примера.
        Написали офигенную книгу и начали продавать через какой-то сервис. Через некоторое время приходит какой-то чумло и заявляет что это его книга и его интеллектуальная собственность, исходя исключительно только из названия книги.
        Он дает запрос на эту площадку, и владелец перебрасывает как и книгу так и баланс на профиль этого чумла без каких либо предупреждений и разбирательств.
        Ваши действия?
        Ммм.
        Если бы вы вообще когда-либо публиковали книги то знали бы, что заставить автора поменять название чтобы «избежать наездов» — нормальная практика, так уже столетия делается. Не обязательно со стороны владельцев торговых марок — гораздо чаще просят имена и фамии сменить, если они слишком явно походят на какии-либо известных лиц. Но торговые марки учитываются, разумеется. Огромное количество книг выходят вовсе не под теми названиями, которые изначально задумали авторы — это нормально.
        А вот уже продажа самой книги под чужим именем — это весьма серьёзно. Плагиат — это вам не хаханьки, тут можно денег отсудить легко.
        Но какое отношение ваш пример имеет к обсуждаемому вопросу?
        P.S. Теперь поняли почему вас минусуют или всё ещё нет?
  • 0
    сообщество извлечёт пользу из опыта, который получило в прошлый вторник

    Обычно так отрицательные герои в американских фильмах говорят.
  • –5
    Почитал комменты и понял: "OpenSource — за что боролись, на то и напоролись". Выложил под свободной лицензией — нечего потом рубаху рвать, что твой код используют без твоего ведома как хотят :)
    Вспомнился анекдот из 90-х про нового русского, который взял кредит и тут же вернул взятую сумму обратно, потому что слишком много потом сразу отдавать нужно будет: "Странно это как-то: денег — нет, товара — нет, ещё и должен остался… А если подумать — то всё правильно..."
    • +5
      Свободная лицензия не предусматривает возможности третьим лицам бесконтрольно отнимать права авторства и передавать их четвёртым лицам. Вы бы хоть немного в теме поразбирались.
      • 0
        Причём здесь вообще право авторства? Речь идёт о управлении контентом npmjs. Никто не затирал копирайтов, никто не назывался автором.
      • 0
        Да, вы правы — совсем не разбираюсь. А вот напишите что-нибудь полезное, выложите в открытый доступ и посмотрим, как авторство вам поможет защититься от использования вашего кода без вашего ведома практически в любых целях :)
  • 0
    теперь понятно почему npm и node js нормально не работали
  • –1
    Извините, а в JS мире всегда нужно скачивать NPM-пакет, чтобы сделать простейшую строковую операцию?
  • 0
    ЛС от 30 марта не помогло, продублирую тут:
    1. npm всегда пишется маленькими буквами.
    2. Если надо различить пакетный менеджер npm и компанию, то вторую стоит называть npm, Inc.
  • +1
    Я правильно понимаю, что если бы npm использовал вендорские пространства имен, то вероятность всей этой скандальной ситуации с kik была бы нулевой?
    Глобальное пространство имён для пакетов выглядит неудачным архитектурным решением. В composer, например, мирно сосуществуют одноименные компоненты http:
    react/http
    illuminate/http
    phpixie/http
    и ещё 100500 от разных вендоров.
    И не было бы никому дела до azer/kik.
    Пожалуй, единственное решение, во избежание коллизий и подобных конфликтов в будущем, для npm, смотреть в строну вендорных пространств имён, сохранив на n-ое время, как deprecated, алиасы уже имеющихся глобальных модулей.

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