Один разработчик чуть не «сломал» пакетный менеджер NPM

    Веб-разработчик Азер Кочулу (Azer Koçulu), автор более 250 модулей для Node.js, попал в неприятную ситуацию. В своём блоге он пишет, что несколько недель назад получил письмо от юриста компании Kik (мессенджер) с требованием отозвать модуль с аналогичным названием kik из пакетного менеджера NPM (Node Package Manager).

    Программист отказался, тогда юрист обратился напрямую в NPM, и администрация проекта удовлетворила его требование, сменив владельца kik без разрешения автора.

    Азер Кочулу был крайне недоволен этим. Настолько недоволен, что решил в ответ «освободить» (то есть отозвать) все свои модули — более 250 модулей NPM. К сожалению, среди них оказался и left-pad — маленький модуль из 11 строк кода на JavaScript. Он используется при установке зависимостей между пакетами через NPM, в том числе в Node.js, JavaScript-транскомпиляторе Babel и огромном количестве других билдов. Только за прошлый месяц left-pad скачали 2 486 696 с сервера NPM, по их статистике.

    Код left-pad показан ниже. Он просто заполняет левую часть строки нулями или пробелами.

    module.exports = leftpad;
    
    function leftpad (str, len, ch) {
      str = String(str);
    
      var i = -1;
    
      if (!ch && ch !== 0) ch = ' ';
    
      len = len - str.length;
    
      while (++i < len) {
        str = ch + str;
      }
    
      return str;
    }

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

    Чтобы в экстренном порядке исправить ситуацию, технический директор и сооснователь NPM Лори Восс (Laurie Voss) пошёл беспрецедентный шаг (так он назвал его в твиттере) и, «учитывая серьёзность и распространённость проблемы», отменил отзыв модуля. Была опубликована старая версия модуля, аналогичная последней.

    Сам Азер Кочулу считает, что администрация NPM берёт на себя слишком много полномочий. Он верит в силу движения Open Source и призывает создать «по-настоящему свободную альтернативу NPM». Азер просит прощения у всех веб-разработчиков, кто пострадал в результате его действий. Модуль Kik и другие он выложил на Github.
    Поделиться публикацией

    Похожие публикации

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

      +14
      «администрация проекта удовлетворила его требование, сменив владельца модуля kik без разрешения автора.»
      Я наверное чего-то не понял…
      Т.е. Азер написал какой-то свой модуль, выложил его в NPM, а администрация NPM указала что этот можуль принадлежит компании производящей одноименный мессенджер?
        +47
        Не. Просто отдали название пакета другим людям. Т.е. фактически это вариант доменного рейдерства.
          +10
          сменив владельца kik без разрешения автора
          Нет, они именно поменяли владельца модуля, я так понимаю.
          То есть забрали у автора и отдали другому человеку.
          Видимо, не смогли переименовать модуль.
          (Это если оставить в стороне правовую сторону)
          Как мессенджер связан с пакетным менеджером, осталось загадкой.
            +1
            Нет, код модуля никому не отдали. Отдали, грубо говоря, права на страничку https://www.npmjs.com/package/kik и npm install kik. А модуль как был, так и есть у автора.
              +13
              Если оставить термины в стороне, то получается, что сторонний человек, устанавливая себе kik через npm получит не то, что имел ввиду Азер Кочулу, который, собственно, и является автором как модуля, так и административно отобранного npm-пакета.
              Увели домен — вот, вероятно, ближайшая аналогия.
                +38
                "Отобрали домен" скорее, увели немного не то.
                А вообще мне эта ситуация в npm крайне не нравится. Хорошо, что все об этом узнали. А если бы по-тихому передали права и туда бы компания kik залила малварь?
                  –1
                  Ну, там всего 60 загрузок, так что конкретно это — не страшно.
                    0
                    использование package-lock становится обязательным…
                –9
                А там код лицензирован под BSD. Так что владельцем модуля может быть кто угодно. Я могу форкнуть и тоже стать владельцем.
                Весь сыр бор именно в крутом названии "kik"
                  +18
                  Лицензия BSD не разрешает нарушать авторские права. Если Вы форкните модуль, вы будете владельцем форка, но не самого модуля. А так же Вы обязаны оставить в своем модуле все копирайты, которые были в исходном модуле.
                    –1
                    Модуль npm это url.
                    Если кто-то взял и отдал ваш url другому человеку это никак не нарушает права авторства.
                    Другими словами я могу взять этот kik фокрнуть, и запаблишить как kik2, после этого я стану владельцем kik2 на npm. При этом авторство не будет нарушено. Почти все открытые лицензии это позволяют делать.
                    +12
                    Не путайте авторские права и права авторства. Последнее означает право именоваться автором произведения и оно неотчуждаемо никаким образом и сохраняется даже за произведениями в public domain. Присваивание себе чужого авторства — преступление.
                      0
                      Не путайте сливочное масло и животный жир :-)
                      Право авторства — личное неимущественное авторское право.
                        0
                        Я обратного не утверждал ;) Под «авторскими правами» обычно имеют в виду права имущественные, которые отчуждаемые. И забывают (или не знают?) про существование неимущественных, которые неотчуждаемые. Ровно это я и имел в виду.

                          –1
                          Я догадываюсь, что вы понимаете, о чем пишите. Просто, в итоге, у вас получилась тавтология. Мне это показалось забавным.
                        0
                        В npm понятие владелец и автор это разные вещи.
                        Я могу взять чужой код из github, залить его на npm под некоторым именем и стану владельцем этого модуля.
                        Даже могу дописать себя в список авторов.
                        При этом авторские права эти действия не нарушают.
                          0
                          Нарушают. Ну, точнее, это суд решит, если что.
                            0
                            В каком же месте они нарушают по вашему?
                              +1
                              Во-первых, исходная лицензия может таких действий не позволять.
                              Во-вторых, нельзя претендовать на авторство чего бы то ни было, не вложив творческих усилий.
                              В-третьих, тут вопрос легального статуса «владельца модуля». Что это значит с точки зрения появившихся у вас прав распоряжаться этим модулем. Если суд решит, что тем самым вы нанесли ущерб каким-то (имущественным или неимущественным) правам автора — …
                              Базовый принцип современного авторского права такой: авторские права включают в себя любые права использования произведения, не только те, что прямо указаны в законе. Если интересы автора каким-либо образом пострадали в результате ваших действий, и он может это доказать — добро пожаловать на нары.

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

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

                                Да можно, если речь идет о производном произведении. Взял библиотеку, переписал ридми, сделал там пару формальных изменений и готово.
                                Как пример, редакторская правка, может быть 1-2 изменения на всю книгу, например романа "Война и мир", но при этом права на эту правку принадлежат издательству. Хотя сама книга в общественном достоянии.
                                В-третьих, тут вопрос легального статуса «владельца модуля». Что это значит с точки зрения появившихся у вас прав распоряжаться этим модулем.

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

                                Любой человек может обратиться в суд, если считает что пострадал от чьих-то действий. Это никак не связано с авторским правом.
                                  0
                                  У меня нет времени продолжать этот спор. Должен заметить, что
                                  BSD позволяет публиковать код без каких-либо ограничений.

                                  Это конечно же неправда.
                                    –2
                                    Ну так приведите выдержку из BSD, что есть ограничения на публикацию исходного кода.
                                      +2
                                      Ээээээм. Ничего, что лицензия BSD собственно из них и состоит:
                                      Redistribution and use in source and binary forms, with or without
                                      modification, are permitted provided that the following conditions are met:
                                      [...]
                                        –1
                                        Понятия условие (a condition) и ограничение (a limitation) юридически не эквивалентны.

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

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

                                        Так вот, повторю, BSD никаких ограничений на публикацию кода не накладывает.

                                        Если я возьму чей-то BSD проект и опубликую, то я могу это сделать, где хочу, как хочу, когда хочу, для каких хочу целей.

                                          +1
                                          Т.е. если вы опубликуете производный от лицензированного по BSD код без сохрания собственно BSD notice — это не будет являться нарушением лицензии?
                                            –1
                                            Если вы сядете за руль не имея прав, но трезвым, вы нарушите правила дорожного движения?

                                            Наличие водительского удостоверения — условие для управления траспортным средством.
                                            Запрет на управление в нетрезвом виде это ограничение.
                                              0
                                              Вы не ответили на вопрос. Правильно ли я вас понял, что, по вашему мнению, права выложившего под BSD код автора не нарушены в описанном случае. Спасибо.
                                                0
                                                Конечно нарушены.
                                                Но нарушены, из-за того что были внесены изменения не соответсвующие условиям лицензии.
                                                Сам факт публикации условия лицензии не нарушает.
                                                Если вы возьмете BSD-проект, удалите оттуда все метки, и передадите заказчику, коллеге или другу, то вы так же нарушите лицензию. Даже не производя публикацию.
                                                  +1
                                                  То бишь всё-таки есть какие-то ограничения на публикацию кода под лицензией BSD?
                                                    0
                                                    В лицензии есть только условия касающиеся внесения изменений в код и текст лицензии.
                                                    Если они нарушены, то нельзя не только публиковать, но даже и пользоваться.
                                                    Да, эти условия можно трактовать как ограничения на внесение изменений.
                                                    Но не как ограничения на публикацию.
                                                      +1
                                                      Ок, я понял.
                          0
                          Преступление не всегда. Например в РФ только «если это деяние причинило крупный ущерб автору или иному правообладателю». Ст. 146 п.1 УК РФ.
                            0
                            «Ущерб» определяется настолько шизофренически (из серии «если бы Вася не спиратил, то мы продали бы 100500 носителей по цене 100 баксов за штуку, мамой клянусь»), что крупный ущерб вывести не составляет никакого труда практически в любой ситуации.
                              0
                              Тут речь не о пиратстве, как таковом, а о нарушение «права на авторство», т.е. по сути о плагиате. Как сам по себе плагиат может нанести вред неочевидно. Ну моральный еще можно подтянуть каким-то боком.
                    0
                    не принадлежит, а схожее, до степени смешения, название.
                      +17
                      Показателен момент про NPM, что там какой-то Азер делал паддинг за за O(n^2) сложность в 11 строках кода и пакет юзали миллионы.
                        +2
                        А где там квадрат? Там O(n)

                          +1
                          Зависит от того как хранятся строки в js.
                            0
                            Любая операция со строками — это O(n), если не указано противное. Строки к которым спереди можно добавить символ за O(1) существуют (дек в C++ — хороший пример), но их нужно специально заказывать (std::string — это, по умолчанию, не дек).
                            В большинстве реализаций JS это таки будет O(n), но обычно это не страшно так как n — фиксированно и невелико.
                            Что страшно — так это то, что это поведение нигде не описано и, как видим, много кто об этом и не задумывается.
                            С другой стороны: если уж люди выбрали такой язык как JavaScript, то так ли уж важно как они там будут делать паддинг? Снявши голову — по волосам не плачут.
                            +5
                            that_is_why_i_hate_server-side_javascript.jpg
                              +2
                              Related: https://github.com/azer/left-pad/issues/15
                              И дальше там, https://github.com/azer/left-pad/pull/11
                              Напоминает, как я оптимизировал физику в j2me, иначе как сделать тестовый вариант и попробовать — вариантов не было, все было жутко нелогично.
                                +1
                                Вот этот вариант O(log(n)) просто нереально быстр даже по сравнению с "return Array(len + 1 — str.length).join(ch) + str":
                                function leftpad (str, len, ch) {
                                  str = String(str);
                                  if (!ch && ch !== 0) ch = ' ';
                                  len = len - str.length;
                                  if (len <= 0) return str;
                                  ch = ch + '';
                                  var pad = '';
                                  while (true) {
                                    if (len & 1) pad += ch;
                                    len >>= 1;
                                    if (len) ch += ch;
                                    else break;
                                  }
                                  return pad + str;
                                }
                                  0
                                  Как-то не представляю себе систему на javascript, где подобные оптимизации покажут тот самый выигрыш в производительности… Подозреваю, что данная функция (не в обобщенном виде, добавляющая нужный символ, а конкретно эта, добавляющая пробел) используется для всяких логов, что едва ли ускорит систему =)
                                    0
                                    Вот сделал бенчмарк http://jsperf.com/left-pad-vs-array-join-vs-log-n
                                    Паддинг до 1000 символов, по 50000 самплов каждый.
                                      0
                                      Его чуть обгоняет нативный String.prototype.repeat — http://jsperf.com/left-pad-vs-array-join-vs-log-n/2
                                      Но его нет на ноде и на андроидах вплоть до 5.1 (на десктопных браузерах есть, кроме IE 11).
                                        +1
                                        Я не о том говорил. Мой вопрос звучит так: "кроме бенчмарка — где еще приходится выполнять паддинг пробелов до 1000 символов за время O(ln(n)), а не за O(n)?"
                                          0
                                          Ну давайте 100 символов сделаем.

                                          0
                                          Нифига себе.
                                            0
                                            Я читер :-)
                                              +4
                                              Это не "нифига себе", а "так за такие вещи канделябром надо". Если представить себе кому нужен leftpad на 100 или там 1000 символов сложно, но можно, то вот кому нужно "вот это" — я уже совсем понять не могу.
                                              Я очень хорошо понял чем отличается теоретик от практика когда нечто подобное обсуждалось в LKML много лет назад. Там пришёл какой-то деятель, который стал обвинять всех разработчиков ядра в том, что они все идиоты, что их алгоритмы неверны и вообще "всё надо делать не так".
                                              Когда его, резонно, спросили: а, собственно, как нужно делать? Он показал: взял процедуру вычисления TCP/IP чексуммы и ускорил её не то в три, не то в четыре раза. Вот примерно так же: раскрученные циклы, кеширование, etc.
                                              На что была разная реакция, но "тему закрыл" кто-то из разрабочиков оригинального кода (Миллер? не помню уже) сказавший что-то на тему "вот этот код — как раз хорошо показывает чем отличается теоретик от практика и почему бенчмарки без головы до добра не приводят".
                                              После чего привёл уже свои бенчи: Apache, NFS-сервер, NFS-клиент, даже, кажется, простой FTP от всей этой бурной дятельности замедлился. Потому что да, чексумма считается быстро — но этот подсчёт убивает "всё живое" в округе! Кеши там знаете ли всякие и прочее.
                                              Вот то же самое и тут: да, бенчмарки впечатляют — вот только куда бы это всё применить-то?
                                              P.S. Но вообще это хорошая иллюстрация к исходному тезису. Если вас не возднует особо скорость работы модуля в три строки — то стоит ли его откуда-то тянуть, если можно самому реализовать. А если волнует — то где у вас уверенность в том, что "отлаженный модуль" сделает то, что вам нужно?
                                    –1
                                    Это скорее камень в огород ноды — из-за слишком кастрированного ядра, даже примитивные вещи вроде lpad или object.clone приходится доставлять из сторонних библиотек.
                                  +6
                                  Возможно, они сделали сотрудника администрации NPM владельцем и удалили модуль.
                                  Мне кажется, что Азер теперь имеет полное право подать в суд, если лицензия на условиях которой он опубликовал свой модуль, позволяет его «отозвать». Иначе, это «ну да, лицензий лицензий, но если это так критично для продукта, то мы наплюем на неё» обернётся тем, что завтра другая компания использует, скажем, GPL-код в своём проприетарном продукте с обоснованием «мы не будем его убирать, иначе наш продукт перестанет работать».
                                    +16
                                    Там вроде WTFPL
                                    DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
                                    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

                                    0. You just DO WHAT THE FUCK YOU WANT TO.
                                      +7
                                      Моя любимейшая из лицензий.
                                        0
                                        Я где-то читал, что юристы её не любят. То ли там расплывчато сформулировано, на их взгляд, то ли ещё что-то.
                                        Для "делайте что хотите и используйте где угодно" хорошо подходит MIT license.

                                          +1
                                          «Юристы», как мне кажется, Апач предпочитают.
                                            0
                                            Он ещё оговаривает некоторые вещи касательно патентов, что в BSD, MIT, ISC и подобных не затрагивается вовсе. Т. е. имя код под MIT и не имея лицензии на патентованный алгоритм, используемый в коде, использовать его на деле нельзя.
                                            +1
                                            Насколько я понимаю, она расплывчата и при реальном применении в суде её трактовка может сильно зависеть от судьи.
                                            Например, компания, использовавшая ваш код с WTFPL, может подать на вас в суд за то что вы публикуете этот код, который она включила в свой закрытый проект. И как это будет трактовать судья, не очень очевидно.
                                            Это касается всех забавных лицензий вроде BeerPL и иных.
                                            it's somewhat risky to release code without explicitly disclaiming liability or warranty; you're potentially opening yourself to lawsuits from accidental damage that may result from somebody using your software.
                                            0
                                            Ещё одна интересная: Good Boy License
                                            Реакция (?) юриста: https://github.com/icons8/flat-color-icons/issues/5
                                              0

                                              Ну, у них это шутка, оно dual-licensed. Пример реальной проблемы был с json license (например, библиотека org.json:json), где в лицензии появился пункт "The Software shall be used for Good, not Evil", после чего лицензия стала несвободной и библиотека была выпилена из кучи проектов, включая апачевские.

                                            +4
                                            https://github.com/starters/kik/blob/4dbb5c/package.json#L23
                                            0
                                            Лицензия указана как BSD
                                        +6
                                        И правильно сделал. В данном конкретном случае, понятное дело.
                                          +4
                                          Для предотвращения подобного необходимы пространства имен
                                            0
                                              0
                                              Кстати, про scope, введенные для решения проблемы. Попробовал создать организацию такую же как на гитхабе, откуда такая цена — 14 баксов в месяц? За то что эта якобы общественная организация хранит в своей базе одну страницу с зеркалом на гитхаб? Зачем мне тогда именоваться у них вот так @organization/module, если я могу просто указать organization/module и у меня все равно из гитхаба все подгрузит
                                                +1
                                                из документации сложилось впечатление, что @a/b бесплатен, но кто угодно может @a/c создать, а так можно и права на @a раздавать, как на чтение, так и на запись. Сам не пробовал — у нас просто свой собственный registry. Гитхаб это все-таки немножко не то — разница, например, в версионности.
                                                  +1
                                                  А в чём там разница версионности?
                                                    0
                                                    а в случае гитхаба-репо как пакета можно указывать версию / range версий пакета? тэг/ветку-то вроде можно, а вот диапазон?
                                                      0
                                                      Если нельзя — добавьте патч, думаю авторы будут вам благодарны за помощь :-)
                                            +27
                                            сменив владельца kik без разрешения автора.

                                            отменил отзыв модуля.

                                            Как тут не вспомнить "Мы уже замочили его. Давайте еще и ограбим."
                                              +26
                                              Я всегда считал, что в npm тот самый linux way доведен до абсурда.
                                              Модули слишком дробные, их слишком много, зависимости слишком запутаны.
                                              +26
                                              Понаплодили, понимаешь, говномессенджеров с патентными троллями. Небось и юзеров-то у этого поделия поменьше, чем у пакетов автора.
                                              isc красавчик, взял и слил. Но его можно понять, эти придурки и весь npmjs.com попытались бы прикрыть.
                                              azer тоже погорячился, взял и поломал десятки пакетов, но в чем-то и прав, надо было привлечь внимание к проблеме.
                                              Хорошо, все-таки, что npm не прибит гвоздями к npmjs.com и пакеты можно ставить из любого git.
                                                0
                                                И как, много у вас пакетов, которые вы ставите не из npm? У меня один, наверное — кастомный собственноручно написанный генератор для йомана, который просто нет смысла выкладывать в npm.
                                                И даже если поменять всё на гиты — у ваших зависимостей есть свои собственные зависимости, которые ставятся из npm'а, скорее всего. Гит никого не спасёт в этом плане.
                                                Но его можно понять, эти придурки и весь npmjs.com попытались бы прикрыть.
                                                Нельзя понять. Я бы с интересом посмотрел на людей, которые бы попытались прикрыть npm. Это что-то уровня "прикрыть гитхаб".
                                                  0
                                                  Да, самое главное, что реально им нахрен это не было нужно. Вы посмотрите на кого перевели kik — да там ни одного нормального модуля, а большинство вообще в @npmcorp:
                                                  https://www.npmjs.com/~ehsalazar
                                                  +34
                                                  по логике вещей единственный виновный это isc. Да kik не правы ни разу, но если судить по выложенной ими переписке, они не начинали дела, только угрожали. Azer целиком прав.
                                                  Isc прогнулся даже не под суд, и не чтобы завершить дело в досудебном порядке после такого как были уже готовы документы, а просто на основании того что ему написали, мы мессенджер у нас есть торговая марка, мы хотим это название.
                                                  Исходя из такой логике, и выходит что завтра пользователя с ником kik попрут со всех форумов, ибо это trademark. Понятно когда имеется случай злоупотребления. Если бы Azer писал код для работы с мессенджером, и выдавал его за официальный. В данном же случае никакой связи не было, и никто бы ее не увидел. Просто isc сначала испугался и решил быстро слить дело, потом грохнул все пакеты azer'а опять же не подумал, а потом еще и своевольно вернул модуль. Даже не знаю как это можно описать, но мне кажется доверие к npm в целом, и к isc'у в частности теперь подорвано.
                                                  0
                                                  kik.com
                                                  Updated Date: 03-may-2015
                                                  Creation Date: 06-nov-1999
                                                  Expiration Date: 06-nov-2018
                                                  Интересно, когда появился этот модуль, относительно появления этого очередного недо-мессенджера...
                                                    +2
                                                    Не понял вашего комеентария от слова "совсем".
                                                    Updated Date — это день, когда заплатили очередной раз за домен. Мессенджер появился на несколько лет раньше, чем обсуждаемый модуль.
                                                    Нужно ли так рьяно защищать торговую марку — науке неведомо, но известно, что если этого не делать, то её можно и потерять (см. "Ксерокс фирмы Кеннон").
                                                      0
                                                      "Айпад от Самсунг" тоже неплох.
                                                        0
                                                        "Памперсы Либеро" туда же
                                                        –2
                                                        А при чём здесь Ксерокс? Называли люди «отэрить», когда были копиры «ЭР», теперь называют «ксероксами» и «отксерить». Так они и монитор компьютером называют — это ведь не потеря рынка или марки производителями компьютеров (и не захват производителями мониторов).
                                                          +1
                                                          «Компьютер» до сегодняшнего дня вроде как не был торговой маркой
                                                            0
                                                            Рекомендую почитать про историю ксерокопирования, чтобы не выглядеть глупо.
                                                            КсероксⓇ — это торговая марка, но так как в своё время юристы ксерокса не били "по рукам" так сильно, как юристы Kik'а, то они, в конечном итоге, потеряли право на имя.
                                                          0
                                                          Я этим Kik пытался пользоваться еще до появления WhatsApp — довольно приятная софтина была. Но народу там было очень мало, а по телефонному номеру автоматически строить контакт лист он не умел, надо было как в аське отдельно ID друг другу сообщать. Так что штука маргинальная, но с прошлым.
                                                          +13
                                                          Создателям этого мессенджера Kik он, кстати, тоже всё поломал.
                                                            +11
                                                            Мудацкие оправдания от них, еще и переписку выложили...
                                                              +47
                                                              Почитал статью. Я правильно понимаю, что в npm даже никакого иска не пришло? Типа, хотите это имя, ребята? Конечно, пожалуйста. Тот чувак против? А, да нахрен он пошёл, написал какой-то дурацкий модуль, ещё выделывается.
                                                              Шикарно, блин.
                                                                +15
                                                                Иска? Они не должны были вообще ни по каким законам ничего менять.
                                                                Торговая марка — если она таковой является имеет строгий scope и ограничения на воздействия. В данном случае любой здравомыслящий судья понял бы что Kik мудаки.
                                                                А вообще, хостите свой код в ЕС. Здесь нет мудацких законов позволяющих такое говно.
                                                                  +3
                                                                  Я про этот миссенджер вообще не знал до этого поста и решил глянуть что это за хрень на википедии:
                                                                  On November 24, 2010, Research In Motion (RIM) removed Kik Messenger from BlackBerry App World and limited the functionality of the software for its users.[19] RIM also sued Kik Interactive for patent infringement and misuse of trademarks.[20][21] In October 2013, the companies settled the lawsuit, with the terms undisclosed.[22]
                                                                  И собственно в чем суть:
                                                                  In its complaint, filed Nov. 30 in Federal Court of Canada, RIM said Kik Chief Executive Ted Livingston worked on product strategy for its BlackBerry Messenger and had access to proprietary information. Mr. Livingston worked for RIM on three separate occasions between April 2007 and December 2008, according to the complaint.

                                                                  Собственно Ted Livingston и есть основатель kik и до этого работал в RIM...
                                                                    +1
                                                                    Собственно это то, как это происходит с доменами, каталогами одежды и прочими местами. Почему админы NPM должны вести себя иначе чем какой-нибудь NIC — совершенно непонятно.
                                                                    Другое дело что стоили всё-таки спросить — на кого и в каком качестве торговая марка зарегистрирована. Там бывают разные ограничения...
                                                                    +5
                                                                    A discussion about the breaking of the Internet
                                                                    Сломался только npm
                                                                      +5
                                                                      Просто некоторые переоценивают распространенность Node.js (;-_-)
                                                                        +8
                                                                        И своего мессенжера.
                                                                    +32
                                                                    Не понятно каким образом владелец торговоя марки Kik имеет право на имя пакета в npm. А если я у себя на компе создам папку с таким именем, ко мне тоже придет их юрист и отберет содержимое этой папки и права на управление ею? А аккаунт в ММОРПГ можно с таким именем создать, или тоже отберут юристы моего друида 80-го левела?
                                                                      +21
                                                                      Там выше ссылку на статью с оправданиями разработчика из kik'а давали. Если судить по ней, то в npm не приходило никакого официального запроса или иска — им просто написали ребята из кика, и npm радостно подставили жопы делегировали им права на модуль.
                                                                        +3
                                                                        им просто написали ребята из кика
                                                                        я бы точнее выразился: кодеры из кика попросили своего патентного агента наехать на Азера…
                                                                          0
                                                                          Вроде как не просто ребята, а юрист из кик, а юрист не может «просто что-то брякнуть», явно старался, формулировал.
                                                                          +3
                                                                          Нет не могут. Там много мелочей и у трейдмарок есть scope.
                                                                            +1
                                                                            Именно. В данном случае scope такой: Providing an interactive website featuring online non-downloadable software that enables users to download, display, transmit, receive, edit, extract, encode, decode, play, store and organize text, sound, images, audio files and video files.
                                                                            Вот попадает ли под это NPM я бы сходу не рискнул сказать. Запросто можно и до суда доиграться.
                                                                              0
                                                                              В их законах source code наверняка прописан.
                                                                          +4
                                                                          Опять юристы тормозят целую отрасль =)
                                                                          А вот это, по-моему, яркий пример проблеммы N+1 решения в мире JS:
                                                                          Он верит в силу движения Open Source и призывает создать «по-настоящему свободную альтернативу NPM»
                                                                            –26
                                                                            Ну и парень. Поломал зависимости на тысяче проектов, в том числе самом npm, и при этом просто "попросил прощения". Потрясающе просто.
                                                                            Мне кажется, что юрист в этой ситуации был не прав. Да, защищать брэнд нужно, без сомнения, но делать это в суде, если других способов нет (а по факту их не было).
                                                                            NPM, Inc тоже молодцы. Своими действиями они подорвали к себе доверие. Надеюсь это приведёт к тому, что npm, как и nodejs полностью перейдёт в управление сообществом.
                                                                              +7
                                                                              Нормально поступил, прямо в духе Говарда Рорка!
                                                                                +7
                                                                                Я бы и прощения не просил. Если ко мне относятся наплевательски, несмотря на то, что я могу им все сломать (хотя они скорее всего и не догадывалась) и мой труд не ценят, то почему бы и не сломать, а npm в этом случае ССЗБ.
                                                                                Жаль что откатить удаление судя по всему они могли абсолютно легально (BSD же), а то можно было бы в суд подать.
                                                                                +3
                                                                                Возможно, стоит ожидать появление альтернатив NPM в ближайшие пару месяцев?
                                                                                  –13
                                                                                  Максимум чего нужно ожидать — приведение в порядок силуации с лицензиями и изменения "правил игры" так, чтобы просто пойти и "освободить" уже опубликованные модули было невозможно.
                                                                                  Людей просто научили тому, что лицензии и договора — не просто пустая формальность. Довольно-таки дорогой ценой, да, но могло и быть и дороже.
                                                                                  Гораздо более сложный вопрос: а что теперь делать с собственно, модулями, которых наплодил Азер? Ну новые можно просто игнорировать, это несложно. А со старыми как быть? Аудит, переписывание? Как понять — это у него первый раз "приступ неадекватности" наступил или там в других модулях уже куча закладок надобавлена?
                                                                                    +21
                                                                                    Бастрыкин детектед
                                                                                    Чувак делал добро, тут пришли другие чуваки и как-то мутно часть сделанного у него отобрали. А вы ему — так-так, постойте, у вас тут модуль отобрали, а ну-ка мы вас проверим, вдруг вы там закладок наплодили. И вообще, чего это вы нервничаете, у вас что, приступ неадекватности? Может мы вас закроем на пару месяцев так, на всякий случай?
                                                                                      –11
                                                                                      Чувак делал добро, тут пришли другие чуваки и как-то мутно часть сделанного у него отобрали.
                                                                                      «Как-о мутно» — это «попросили по человечески»? А нужно было «с полной боевой выкладкой» и повесив миллионные счета за услуги юристов на компанию NPM и на него лично? Примерно вот так? Или как?

                                                                                      А вы ему — так-так, постойте, у вас тут модуль отобрали, а ну-ка мы вас проверим, вдруг вы там закладок наплодили.
                                                                                      Вообще реакция на законное требование компании, защищающей свою торговую марку (а она обязана это делать — иначе она рискует потерять на неё права) в виде hahah, you’re actually being a dick. so, fuck you. don’t e-mail me back — это адекватно, нормально?

                                                                                      Незнание закона не освобождает от ответственности. А уж «бить горшки» в ответ на это — это уже совсем за гранью добра и зла.

                                                                                      Может мы вас закроем на пару месяцев так, на всякий случай?
                                                                                      Неясно — зачем кого-то вдруг закрывать, но насчёт аудита… когда выясняется что вы используете код человека у которого явно не всё в порядке с психикой, то… проверить — что там внутри никогда не помешает.

                                                                                      P.S. Не знаю, чем всё закончится, но обсуждение этой истории на на ycombinatorе (где люди интересуются в основном вопросом: а почему, собственно, он вообще мог взять и снести все 250 модулей) — гораздо более адекватно, чем то, что я вижу здесь.

                                                                                      P.P.S. Единственное, что тут можно было сделать по другому — люди из NPM могли бы отказаться передавать право на имя пакета без формального решения (см. выше про google.ua). Это да, тут Kik сыграли на неопытности админов и юристов NPM, Inc. Желание обойтись «без формальностей» сыграло с ними злую шутку, да. Но по сравнению с тем, что устроил Азер — это мелочи.
                                                                                        +5
                                                                                        Вы вырываете куски из контекста. Представитель kik написал следующее (да, это мутно и некорректно):
                                                                                        We don’t mean to be a dick about it, but it’s a registered Trademark in most countries around the world and if you actually release an open source project called kik, our trademark lawyers are going to be banging on your door and taking down your accounts and stuff like that — and we’d have no choice but to do all that because you have to enforce trademarks or you lose them.

                                                                                        Так что ответ Azer'а был вполне в духе запроса и полностью адекватен.
                                                                                          +2
                                                                                          А много ли нормальных людей пишут модули бесплатно в таких количествах? Тем более под лицензиями типо WTFPL…
                                                                                          Вообще вам никто не мешает проверять код на закладки, можно даже свои велосипеды писать или переписывать чужие велосипеды на свой лад, вариантов уйма. Все дело в том, что взяв чужой код, вы должны быть готовы к тому что его писал психованный осьминог в период своей профессиональной дезориентации. Open Source такой Open Source.
                                                                                            +3
                                                                                            А если бы по чистой случайности компания называлась left-pad (и имела торовую марку)? и в итоге модуль не Азер снес? Как бы Вы тогда оценили действия?
                                                                                              0
                                                                                              О, как я ждал этого вопроса. Ведь он, собственно, ключевой и всё объясняющий. Ну если не ставить в основу своего мироздания аксиому "все корпорации сволочи, а все адвокаты — хотят обворовать бедных разработчиков".
                                                                                              Ответ — очень простой: если бы компания называлась left-pad и к тому моменту, когда она спохватилась была бы уже куча модулей, которая бы использовал left-pad, не имеющий отношения к компании… она была бы послана "в пешее эротическое" и потеряла бы права на свою собственную торговую марку.
                                                                                              Чтобы торговые марки чего-нибудь стоили их владельцы обязаны их защищать. Что, собственно, тут и произошло.
                                                                                                0
                                                                                                Я знал что могу вас порадовать.
                                                                                                Но посмотрим на это трезвым взглядом: правила торговых марок в каждой стране разные, а международное право зависит от стран его ратифицированных. То есть теоретически может быть два Kik для разных стран. (к слову в Беларуси одной компании выдали торговую марку на технологию, стоит ли теперь запрещать технологию?) Стоит ли со всеми судиться и запрещать юзать технологию без отчислений?
                                                                                                Момент номер два, взятый из поста с блога npm. Мол они думали о разработчиках, у которых kik ассоциируется с месенджером. Но тут возникает проблемка. Версиии до 1.0.0 ето Азеровский кик, а выше мессанджера (данные с поста в блоге, если бы модули не были отозваны). Как какой юзать и как мне как разработчику опредлеять где что и как нужно?
                                                                                                  0
                                                                                                  То есть теоретически может быть два Kik для разных стран. (к слову в Беларуси одной компании выдали торговую марку на технологию, стоит ли теперь запрещать технологию?) Стоит ли со всеми судиться и запрещать юзать технологию без отчислений?
                                                                                                  Это владельцу торговой марки решать. Обычно стоит судиться везде, где вы присутствуете, но иногда — у вас нет выбора. К примеру в Германии GMail удалось отсудить, в России, как известно, нет.

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

                                                                                                  А вообще — как юристы решат.

                                                                                                  Вопрос — стоит ли Kik'у давить на NPM дальше и пытаться добиться того, чтобы и старая версия была удалена довольно сложен. Тут нужно взвешивать и сравнивать возможный вред для торговой марки с потенциальными проблемами для пользователя.

                                                                                                  Это, в общем, типичная ситуация с законами: законов много, как их трактовать — ясно не всегда, 100% работающих простых и безалльтернативных общих правил нет. Потому и приходится в спорных случаях привлекать суд — и отсюда же категорическое нежелание юристов отвечать на подобные вопросы публично: любое подобное высказываение усложняет последующие разборки в суде, то есть каждый раз когда юрист раскрывает рот и что-то говорит — он теряет немножко денег.
                                                                                      +9
                                                                                      Да бред какой-то на самом деле.
                                                                                      Azer полностью прав. Не хочет — имеет право и возможность. Кто-то что-то хочет — пусть договариваются или как-то решают. Захотел — добавил пакет, захотел — удалил.
                                                                                      Kik (ну или его представитель, не важно) полностью прав. Попросил удалить — ну и? За спрос, что называется, в нос не бьют.
                                                                                      Переименование пакета — npm may remove Your Content from npm Services without notice if npm suspects Your Content was submitted or used in violation of «Acceptable Use», as well as per the Copyright Policy. Подозрение было. Так что все в рамках Terms.
                                                                                      Unpublish — в общем-то тоже все в рамках. You own Your Content, but grant npm a free-of-charge license to provide Your Content to users of npm Services. That license allows npm to make copies of and publish Your Content,…

                                                                                      В целом — ситуация ни о чем.
                                                                                        +15
                                                                                        Ну почему же.
                                                                                        Команда npm конкретно налажала, т.к. их задача предоставлять бесперебойный доступ к пакетам. И свой фейл они выдали за фейл Azer'а, дескать он всех подставил.
                                                                                        Получается сейчас любой держатель популярных пакетов может сломать десятки тысяч проектов. Так что проблема в самом npm, но им не выгодно это признавать, поэтому поступили они как и поступают такие люди обычно в подобных случаях — мелко и грязно.
                                                                                          0
                                                                                          В самую суть, думаю еще стоит добавить, что все началось с них же, т.е. если бы они не шли на поводу у kik messanger'a, то никаких последствий не было бы.
                                                                                          Какое-то не сплоченное общество получилось… Конечно Azer'у не понравилось решение npm, так npm еще и выставило его виновником всех дел.
                                                                                            +6
                                                                                            Интересно, а как бы придурки из NPM объяснили тысячи сломанных зависимостей, если бы "Kik" звались бы, например, "Left Pad Inc." и хотели имя "left-pad"? "Не функцию из 11 строк хотите вы, а никому не известную болталку"? ))
                                                                                            По хорошему отзыв и переименование пакета нужно делать невозможным до тех пор, пока от него существует хотя бы одна зависимость.
                                                                                              –2
                                                                                              Либо зависимости переименовывать в автоматическом порядке.
                                                                                                0
                                                                                                По хорошему отзыв и переименование пакета нужно делать невозможным до тех пор, пока от него существует хотя бы одна зависимость.

                                                                                                Согласен.
                                                                                                Должны быть какие-то подобные условия для unpublish.
                                                                                                Ведь в такой ситуации даже на предыдущую версию не откатить, как в случае с ломающими изменениями в новой версии пакета.
                                                                                                И никакие shrinkwrap'ы не помогут. Простым вариантом останется только форкать себе и паблишить дубликат, что тоже такое себе.
                                                                                                  +1
                                                                                                  Интересно, а как бы придурки из NPM объяснили тысячи сломанных зависимостей, если бы «Kik» звались бы, например, «Left Pad Inc.» и хотели имя «left-pad»?
                                                                                                  В этом случае они были бы действительно придурками. Но настоящими идиотами были бы юристы компании «left-pad» в обязанности которых входит предотвращение подобных вещей.

                                                                                                  В таком гипотетическом мире компания Left Pad Inc была бы обязана отловить эту ситуацию на ранних стадиях — пока её имя ещё более известно, чем имя модуля.
                                                                                                +4
                                                                                                В целом — ситуация ни о чем.
                                                                                                Ситуация очень даже «о чём». Всё свободное ПО построено на невозможности «отозвать» раз данное разрешение. Вы можете спокойно пользоваться телофоном, в котором используется куча всяких исходников от сотен и тысяч компаний только потому, что нельзя взять и «освободить» код, который в нём находится. А то представьте себе: Вася раз — и «освободил» один из драйверов… ваш телефон перестал реагировать на кнопки, а Петя — взял и «освободил» модуль, который позволяет работать с тачскрином. Бред ведь!

                                                                                                Когда вещь, подобную тому что тут проделал Азер (в гораздо более мягкой форме) проделал FSF народ вонял преизрядно — и это много кого сподвигло на разные вещи (с тех пор отказ от GNU пошёл семимильными шагами).

                                                                                                Но, оказывается, NPM Inc вся эта история ничему не научила и подобные вещи она по прежнему позволяет проделывать с лёгкостью. Что весьма грустно.

                                                                                                Я теперь лучше понимаю почему у нас есть правило что все исходники всех компонент должны лежать только и исключительно на наших серверах (конечно если что-то разработано не у нас — делается и обновляется «зеркало»).

                                                                                                Думаю этот случай приведёт к тому, что люди начнут чаще это делать.

                                                                                                А так — да, история «ни о чём».
                                                                                                  +5
                                                                                                  Две сумбурные мысли вслух:
                                                                                                  Первая: кто-то сказал что-то в духе «В интернете ты или клиент или товар. Если ты бесплатно пользуешься сервисом — то очевидно, к какому типу ты относишься». Почему-то у большинства людей (разработчики же к этой категории тоже относятся, правда?) бытует мнение, что владельцы бесплатных сервисов несут перед кем-то какую-то социальную ответственность. Смешно, да.

                                                                                                  А вторая: Малыши растут. Мы растем. Шагнул, упал, набил шишку, опять шагнул. Умер dedicated — ставим Colocation. Падает Google CDN — все перестаем линковать оттуда jquery (или прописываем fallback). Умирает на день selectel или отпадает регион в AWS — поднимают резервные копии на собственном железе с физическим доступом к нему. Просто еще один шажочек.

                                                                                                  Взрослеем-с.

                                                                                                  P.S: У нас, кстати, аналогично — компоненты на своих серверах; на самый худой конец копия проекта (не форк, ибо, бывало, сети форков выпиливали) на GH.
                                                                                                    +3
                                                                                                    А я вот считаю, что владелец бесплатного сервиса несёт именно социальную ответственность.
                                                                                                    В добавок перед неопределённым кругом лиц. А выражается это в слове «репутация». И потеря репутации, это совсем совсем не смешно.
                                                                                                    «Долгая память хуже, чем сифилис», «единожды солгавши кто тебе поверит», «взялся за гуж, не говори что не дюж» и т.д и т.п.
                                                                                                    0
                                                                                                    Ну он же не отозвал лицензию. Кто скачал код — может пользоваться. Можно переопубликовать (что npm и сделал) и тд.
                                                                                                    Обязательств продолжать публикацию и поддержку кода никто на себя не берет.
                                                                                                      0
                                                                                                      Именно У него код же под WTFPL. Почему бы и не переопубликовать?
                                                                                                        0
                                                                                                        Да ведь так и поступили
                                                                                                  +9
                                                                                                  Обидеть художника может каждый...

                                                                                                  PS: Долбаные юристишки!

                                                                                                  PPS: И NPM-щики повели себя как мудаки! К ним еще не успели толком обратиться, как они уже раздвинули свои булки для проприетарастов и готовы пустить в расход любого автора! Далеко пойдут ребята!
                                                                                                    +18
                                                                                                    Азер поступил правильно — очень громко привлек внимание к проблеме! Громче просто некуда! И имел на это полное право!
                                                                                                      +9
                                                                                                      . Азер просит прощения у всех веб-разработчиков, кто пострадал в результате его действий

                                                                                                      А ему то за что извиняться? Пусть ребята из NPM извиняются — и перед ним, и перед сообществом.
                                                                                                        –9
                                                                                                        Да, лучше бы Азер встроил какую-то хитрую закладку, проник в сеть этих мерзопаскостников и встроил троян-шифровальщик с таймбомбой в каждый билд этого недоделанного мессенджера. Ох и попал бы Кик, получив иски от множества пользователей.
                                                                                                        Мораль: не рубите сук, на котором сидите, и не угрожайте людям, от библиотек которых зависит ваш продукт. Но увы, программисты — по природе своей добрые люди, зла они не делают друг другу, к сожалению, что и позволяет всяким корпоративным рекетирам угрожать им, не боясь получить в ответ.
                                                                                                          +5
                                                                                                          То что вы предлагаете является подсудным делом, так что Azer поступил в рамках закона и обвинить его в чем-либо нельзя. Да и kik messanger действовал можно сказать в рамках своих интересов думая о защите торговой марки. Вина здесь в npm, которые решили предпочесть неведомый kik messanger, нежели активного автора модулей.
                                                                                                          Думаю, главное чего добился Azer – это обратил внимания на большие зависимости npm от ваших модулей, а также пролил свет на работу людей в npm.
                                                                                                            0
                                                                                                            Пардон за дилетантский вопрос, но разве Open Source не используется AS IS? То есть, даже если сделал Азер закладку, никто же не запрещает kik пользоваться этой либой\скриптом\модулем\пакетом. Сами поставили — сами виноваты. Подобные вещи как-то освещены в законах?
                                                                                                              +1
                                                                                                              ИМХО: Если просто поставить софт с закладкой, то да, ССЗБ. Но вот за проникновение в их внутреннюю корпоративную сеть — суд
                                                                                                                0
                                                                                                                В законах конечно вы не найдете точную статью, но как говорят "был бы человек, а статья всегда найдется".
                                                                                                              0
                                                                                                              И сломать себе репутацию как это сделали хозяева npm? Только для него потеря может быть фатальной, а npm могут пойти по следам fl.ru и сделать вид что всё ок и ничего не было. Сколько узнают или вспомнят об этом случае? А через год?
                                                                                                              Не говоря о том, что "и встроил троян-шифровальщик с таймбомбой в каждый билд этого недоделанного мессенджера" — это из области фантастики про хакеров, вскрывающих пингом сети корпораций — доступа к их пакетам у него не было, не говоря про исходники мессенджера, а(предупреждая следующий вопрос) свои из зависимостей надо ещё чтобы сработали и сработали в правильном месте и хоть куда-то что-то получили.
                                                                                                              +1
                                                                                                                +1
                                                                                                                Странно, что тут не обсуждают, почему модуль, состоящий из одной простейшей функции, оказался у всех в зависимостях.
                                                                                                                Статья для размышлений http://www.haneycodes.net/npm-left-pad-have-we-forgotten-how-to-program/
                                                                                                                isArray, is-positive-integer в 4 строчки с 3 зависимостями

                                                                                                                серьёзно?
                                                                                                                  +2
                                                                                                                  There’s a package called is-positive-integer (GitHub) that is 4 lines long and as of yesterday required 3 dependencies to use.

                                                                                                                  package.json -> devDependencies
                                                                                                                    0
                                                                                                                    А почему нет? Разработка с зависимостями — это лавирование между крупными библиотеками из мусора, мелкими функциями и шимами.
                                                                                                                    Small modules: it’s not quite that simple
                                                                                                                      0
                                                                                                                      Если взять, например, пассаж
                                                                                                                      Second, even if the package’s logic is correct, I can’t help but be amazed by the fact that developers are taking on dependencies for single line functions that they should be able to write with their eyes closed. In my opinion, if you cannot write a left-pad, is-positive-integer, or isArray function in 5 minutes flat (including the time you spend Googling), then you don’t actually know how to code. Hell, any of these would make a great code screening interview question to determine whether or not a candidate can code.

                                                                                                                      Выглядит так, что автор упивается кодерской сущностью программиста, и не задумывается, почему профессия называется Software Engineer. Проектирование софта сегодня все больше инжиниринг.
                                                                                                                      Давайте задумаемся, зачем в проекте, где описываются ресурсы REST отдельная функция isArray в отдельном файле? Зачем мне две разные isArray, объявленные и написанные по-ращзному в двух зависимостях, которые я использую? Или, зачем мне модуль Array, реалзующий 100500 крутых функций, если isArray — часть ES5 и мне максимум нужен шим этой функции для тех, у кого нет пока его поддержки?
                                                                                                                      +1
                                                                                                                      Теперь я точно не сомневаюсь, что невозможность удалить однажды опубликованный пакет в rust`овском crates.io это отличная идея — http://doc.crates.io/crates-io.html#cargo-yank.
                                                                                                                        +10
                                                                                                                        Кстати, а хоть кто-нибудь обратил внимание на сам код?
                                                                                                                        Прибавлять пробелы по одному к строке слева — мягко говоря, не самая эффективная реализация. Можно предположить: авторы пакетов, зависящих от left-pad, код не читали, да и code review никто не делал.
                                                                                                                        Очень, очень печально.
                                                                                                                          +1
                                                                                                                          Тот самый случай, когда стоит процитировать Питера Гриффина.
                                                                                                                          +3
                                                                                                                          Вообще это называется рейдерский захват, а гаранты права проявили тоталитаризм.
                                                                                                                          NPM’s final response on the thread
                                                                                                                          Isaac Schlueter (npm) (Mar 18, 16:39)
                                                                                                                          Our goal is to make publishing and installing packages as frictionless as possible. — отличное оправдание чтобы наводить тоталитаризм.
                                                                                                                            0
                                                                                                                            Пользуюсь NPM и плююсь. Он удивительно непродуман для нашего времени. Кроме вот таких историй у меня были и помельче.

                                                                                                                            Например у NPM довольно бестолковый механизм lockфайла. Вы указали четкие версии, закоммитили локфайл и думаете что в безопасности? Нифига. Локфайл лочит только то, что вы написали. Владелец модуля, от которого зависит какой-нибудь модуль, от которого зависит какой-нибудь модуль мог указать версию посвободнее. И когда вы на чистом билде запустите npm install, какой-нибудь пакетик типа leftpad обновится на сломанный, и БАЦ, все ваши билды не билды. Со мной это случилось пару раз, после чего мне указали на npm shrinkwrap. Это действительно решение, но мамма мия, какой же это костыль, как же неудобно им пользоваться.
                                                                                                                              +1
                                                                                                                              ЧТО Я НЕСУ. Локфайла-то как раз ведь и нет.
                                                                                                                                0
                                                                                                                                Почему костыль то?
                                                                                                                                  0
                                                                                                                                  Потому что гораздо неудобнее локфайлов. Потому что с ним трудно разделять dev dependencies. Потому что он снимает «снепшот» папки node_modules, при том что node_modules полученная npm updateом != node_modules, которую можно получить сделав чистый npm install, соответственно чтобы другому разработчику обновить shrinkwrap, нужно сначала убедится что его личный node_modules соответствует shrinkwrap
                                                                                                                                –2
                                                                                                                                Ализар такой Ализар! Написал заголовок «Один разработчик чуть не «сломал» пакетный менеджер NPM» вместо «Одного из авторов пакетов для менеджера NPM компания NPM лишила права на имя пакета» — казалось бы, разница невелика, а какой резонанс!

                                                                                                                                Между тем, если я сейчас зарегаю торговую марку, скажем, isnumber или isarray (а лучше — просто IS), и обращусь в NPM со словами, что, нукабыстро, выбросили из вашего менеджера все модули, названия которых на эти буквы начинаются — они что же, так и сделают? После чего публикую под всеми этими именами модули уже свои, со, скажем, рекламой своей компании, и любуюсь на результат.

                                                                                                                                Я бы побоялся с ними работать, серьезно! Другое дело что они вроде как и не заставляют никого пользоваться именно их услугами, но уж быть адекватным — это для компании неплохое пожелание!
                                                                                                                                  +1
                                                                                                                                  Написал заголовок «Один разработчик чуть не «сломал» пакетный менеджер NPM» вместо «Одного из авторов пакетов для менеджера NPM компания NPM лишила права на имя пакета» — казалось бы, разница невелика, а какой резонанс!

                                                                                                                                  Ваш заголовок не отражает сути. Куча сайтов какое-то время не могла сделать деплой новой версии… не собирались исходники и т.д.
                                                                                                                                      +2
                                                                                                                                      Угу. Только подумайте, что первично: отзыв модулей со стороны одного автора (который, надо сказать, не обещал никогда их не отзывать, верно?), или отказ от своих обязательств со стороны репозитария, который, вообще говоря, не то чтобы что-то кому-то обещал, но вроде как должен бы остаться самым неизменным по качеству сервиса и вообще отношения.

                                                                                                                                      Т.е. NPM «сломала» человеку владение названием модуля, человек обиделся, и сказал — не верю я этим «честным» парням, кинули раз — кинут и еще раз, как два байта переслать, так что уйду я от них", и (вы хотите сказать) ОН ЕЩЕ ПРИ ЭТОМ В ЧЕМ-ТО ВИНОВАТ?
                                                                                                                                        +1
                                                                                                                                        Нет, не виноват. Я про заголовок говорил :)
                                                                                                                                    +8
                                                                                                                                    Азер ничего не сломал, он только показал, что NPM сломан by design и содержит серьёзную уязвимость. Если они по велению чьей-то левой пятки спокойно меняют владельцев пакетов без суда и следствия, кто мешает прикинуться юристом какой-нибудь фирмы, захватить любой популярный пакет и заменить его содержимое? Азер всего лишь показал широкому кругу разработчиков, что NPM ненадёжен, и фактически любой человек может перезаписать любой пакет, если провернёт ту же схему, что и Kik провернул.
                                                                                                                                    В нормальной ситуации нарушающий права пакет должен просто блокироваться, а не отдаваться другому человеку, чтобы избежать сценария, в котором этот пакет может в дальнейшем быть чем-нибудь перезаписан.
                                                                                                                                      0
                                                                                                                                      Вариант решения проблемы с подменой — подписывать пакеты ключом разработчика, как это сделано в большинстве дистрибутивов Линукс. В результате, даже если кто-нибудь получит полный контроль над репозиторием, пакеты превратятся в тыкву и не смогут быть установлены, пока устанавливающий не подтвердит своё доверие к ключу. И в package.json хранить не только названия зависимостей и их версии, но и хэши ключей, которыми пакеты-зависимости подписаны. Хотя и от некоторых проблем такой подход не спасёт — например, если пакет окажется тупо удалён либо поломан в очередной версии (если учитывать, что по дефолту номера версий фиксируются только до первой точки). И проблема доверия к конкретному ключу тоже остаётся, да и могут скомпрометировать его либо самого разработчика. Но всё же лучше, чем вообще практически никакой проверки подлинности, как сейчас. Само собой, можно сделать это требование не обязательным, но при установке неподписанных пакетов запрашивать у пользователя явное согласие на это действие.
                                                                                                                                      0
                                                                                                                                      Я просто оставлю это здесь: https://packages.debian.org/search?keywords=docker
                                                                                                                                        0
                                                                                                                                        И?
                                                                                                                                          +1
                                                                                                                                          Тема раскрыта чуть глубже тут. Докеру, который в Debian'а много-много лет. Гораздо больше, чем трейдмарку. Тут "наезжать" — себе дороже, можно и торговой марки лишиться. Kik же Азера появился гораздо позже мессенджера и никому толком неизвестен (да, мессенджером пользуются сотни тысяч, не миллиарды "как у больших", но по сравнению даже с этим сотня загрузок — это смешно).
                                                                                                                                            –1
                                                                                                                                            Ну, тут ситуация, как по мне, иная кардинально. Не судебного иска, просто email с "угрозой" с домена kik.com. За это у чувака в тупую отобрали зарегистрированный адрес.
                                                                                                                                            Я его всецело поддерживаю, ибо завтра вы сделаете какой-то gem/package/plugin под названием mediafire/aol/kik/etc, а через месяц прийдет какой-то хер и от имени этой конторы начнет угрожать (а стиль письма именно такой, совсем нихера не добрый), а еще через пару дней у вас этот адрес отберут.
                                                                                                                                            Ништяк? Вангую лютый батхерт.
                                                                                                                                              +2
                                                                                                                                              Я его всецело поддерживаю, ибо завтра вы сделаете какой-то gem/package/plugin под названием mediafire/aol/kik/etc, а через месяц прийдет какой-то хер и от имени этой конторы начнет угрожать (а стиль письма именно такой, совсем нихера не добрый), а еще через пару дней у вас этот адрес отберут.
                                                                                                                                              Ну да. И отберут и из AppStore/CWS/etc выпрут. В этом смысл торговых марок, собственно. А будете «добрым» — потеряете права на торговую марку.
                                                                                                                                              Ништяк?
                                                                                                                                              Dura lex, sed lex.
                                                                                                                                              Вангую лютый батхерт.
                                                                                                                                              Ну если вместо того, чтобы включить голову и немного подумать вы предпочитаете воевать с ветряными мельницами… это ваш выбор — только неясно зачем другим-то пакости делать?
                                                                                                                                              Не судебного иска, просто email с «угрозой» с домена kik.com.
                                                                                                                                              Судебный иск — это всегда дорого и сложно. Какой в нём смысл, если результат практически предрешён?

                                                                                                                                              Тут ещё важно вот что учитывать: трейдмарки имеют разную силу. Если это просто слово (docker там или node) — то вам очень тяжело будет запрещать его использование, вы получите только черезвычайно ограниченную защиту в определённом контексте. А вот если это что-то не существующее в языке — тогда совсем другое дело. Никогда не задумывались почему Google называется Google (а не Gogol), Blu-Ray не называет Blue Ray, Bluetooth пишется без пробела и так далее? Вот именно поэтому.
                                                                                                                                                +2
                                                                                                                                                Ну да. И отберут и из AppStore/CWS/etc выпрут. В этом смысл торговых марок, собственно. А будете «добрым» — потеряете права на торговую марку.

                                                                                                                                                • У торговых марок есть область применимости (scope).
                                                                                                                                                • Отобрать можно только через суд.
                                                                                                                                                • Это не повод для блокировки аккаунта.

                                                                                                                                                Без решения суда это всё — гадание на кофейной гуще.
                                                                                                                                        +1
                                                                                                                                        Умные люди уже давно говорили, что такое обилие зависимостей в проекте до добра не доведёт. Декомпозиция — это конечно хорошо, но не нужно перегибать палку. Она может оказаться бамбуковой и больно ударить по лицу.
                                                                                                                                          +2
                                                                                                                                          "String manipulation as a service" — http://left-pad.io/
                                                                                                                                            –3
                                                                                                                                            https://medium.com/@mproberts/a-discussion-about-the-breaking-of-the-internet-3d4d2a83aa4d#.edmjtps48
                                                                                                                                            Kik опубликовал куски из переписки их сотрудника с Азером. Надо сказать, что — если верить этой переписке, конечно — сотрудник, в общем, вполне корректно обратился к Азеру с просьбой отдать имя, использующее запатентованное название их компании. Компания Kik была зарегистрирована в 2009 году, то есть имя было занято довольно давно. Более того, сотрудник (Боб) несколько раз спрашивал, что и как Kik может сделать, чтобы облегчить процесс смены имени у проекта. Азер же — опять-таки, судя по опубликованному — повел себя совершенно по-детски.
                                                                                                                                            В общем, все в этой истории выглядят не очень красиво — но, надо сказать, что, как мне кажется, Kik все же действовал довольно корректно. И, конечно, весьма любопытен тот факт, что одна раскапризничившаяся примадонна способна встряхнуть такое количество серьезных проектов.
                                                                                                                                              +2
                                                                                                                                              Azer’s response to our last email
                                                                                                                                              Azer (Mar 11, 12:52)
                                                                                                                                              Yeah, you can buy it for $30.000 for the hassle of giving up with my pet project for bunch of corporate dicks

                                                                                                                                              Email to NPM support
                                                                                                                                              Bob Stratton (Mar 11, 12:57)
                                                                                                                                              We’re not getting anywhere with this

                                                                                                                                              Лол!
                                                                                                                                                +1
                                                                                                                                                В данном конкретном случае до суда приоритет был у Азера.
                                                                                                                                                Суд с высокой вероятностью оставил бы имя за Азером, т.к. у торговых марок есть область применимости (scope) и пакет kik не попадает в scope этой ТМ.
                                                                                                                                                Соответственно, диалог должен был свестись к:
                                                                                                                                                - А не могли бы вы уступить нам имя пакета?
                                                                                                                                                - Нет.
                                                                                                                                                - Ок, мы заведем пакет с другим именем.
                                                                                                                                                Я даже выше привел ссылку на Docker в репозитории Debian. Пакет docker — не docker daemon, а док для X11, docker daemon — docker.io.
                                                                                                                                                  0
                                                                                                                                                  Как вы быстро за суд решили, однако. А я вот совершенно не уверен что суд бы именно так постановил. Вы ссылку-то привели, не ту: вот сравнение этой и этой — уже показывает что к чему: торговый знак, выданный в 2015м году вряд ли может быть использован чтобы изменить имя пакета, который был создан за много лет до этого. Так что я понимаю — почему docker в Дебиане — это не тот docker, что все ожидают увидеть. У них и node ведь — это не node.js долгое время было! Но — изменили, ведь так?
                                                                                                                                                  А ситуация с kik'ом — ещё хуже! Азер не успел ещё заработать никакой известности и требование Kik'а суд вполне мог счесть разумным.
                                                                                                                                                  Другой вопрос, что, возможно, Kik'у требовалось всё-таки выслать хотя бы формальное C&D письмо на имя Azer'а, а то как-то уж очень быстро NPM решил принять решение. Особенно важно было это сделать видя уровень вменяемости персонажа… тут всё нужно делать аккуратно, грамотно и так, чтобы "комар носа не подточил".
                                                                                                                                                    0
                                                                                                                                                    Вы тоже привели не совсем корректный пример. В squeeze node был основным пакетом, в wheezy его сделали transitional и перенесли в ax25-node. Почему? Да потому что изначально название пакета не очень хорошо отражало его содержимое (радиоточка на протоколе AX.25).
                                                                                                                                                    Поэтому в jessie имя node можно было считать свободным и его заменили на уже популярный node.js
                                                                                                                                                      +2
                                                                                                                                                      Почему? Да потому что изначально название пакета не очень хорошо отражало его содержимое (радиоточка на протоколе AX.25).
                                                                                                                                                      Вот только не надо выставлять себя идиотом. Debian — это не какое-то секретное общество.

                                                                                                                                                      Название у пакета сменили исключительно из-за конфликта c `node.js`, а не потому, что это «не очень хорошо отражало его содержимое». Вот резолюция, почитайте.

                                                                                                                                                      Другое дело, что, как видно из той же резолюции, слово `node` само по себе таки `node.js` получить тоже не смог — именно потому что пакету `node` к тому моменту было уже много лет и он имел тоже вполне достаточно пользователей.

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

                                                                                                                                                      Но пусть к подобным договорённостям явно лежит не через подростковые «закидоны» типа fuck you. don’t e-mail me back или yeah, you can buy it for $30.000 for the hassle of giving up with my pet project for bunch of corporate dicks.
                                                                                                                                                        0
                                                                                                                                                        Спасибо, почитал. И переписку почитал.
                                                                                                                                                        Когда попросили node.js назвать пакетом node и отдать бинарник /usr/bin/node возник конфликт. node.js остался nodejs, бинарник остался /usr/bin/nodejs, но создали пакет nodejs-legacy, который ставит симлинк /usr/bin/node -> /usr/bin/nodejs
                                                                                                                                                        https://packages.debian.org/jessie/nodejs
                                                                                                                                                        https://packages.debian.org/jessie/nodejs-legacy
                                                                                                                                                        Имя пакета node было признано слишком общим и пакет переименовали в ax25-node (да, в основном чтобы не путать с nodejs, а еще есть Kubernetes со своим пониманием node и масса других), но оставили transitional пакет со ссылкой на ax25-node.
                                                                                                                                                        Результат? hamradio более не конфликтует с node.js за бинарник, для обратной совместимости есть пакеты node и nodejs-legacy.
                                                                                                                                                        Все довольны.
                                                                                                                                                        Но путь к подобным договорённостям явно лежит не через подростковые «закидоны» типа fuck you. don’t e-mail me back или yeah, you can buy it for $30.000 for the hassle of giving up with my pet project for bunch of corporate dicks.

                                                                                                                                                        Пожалуйста прочитайте их переписку еще раз. Как только Азер отказался передавать имя пакета, kik сразу начали угрожать адвокатами. Его ответ, конечно, далек от адекватного, но это был очень грубый вариант "нет".
                                                                                                                                                          0
                                                                                                                                                          Пожалуйста прочитайте их переписку еще раз.
                                                                                                                                                          Вам это тоже рекомендуется.

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

                                                                                                                                                          Его ответ, конечно, далек от адекватного, но это был очень грубый вариант «нет».
                                                                                                                                                          А вот этого варианта — законы не предусматривают. Мог быть ответ «да, я готов отказаться от имени» (как с тем же Firefox'ом было) или «да, я готов пойти на уступки в обмен на право использования этого имени» (пример — Apple Corps и Apple Computrer), но это часто — куда более затратный вариант. Варианта «нет» — в случае с торговыми марками не предусмотрено в принципе. Что, собственно, и было продемонстрировано. А в результате — вонь на весь мир, побитые горшки и потеря репутации. Зачем всё это?

                                                                                                                                                          Если он свой проект доведёт то того состония, что он реально начнёт угрожать Kik'у — его достанут и на GitHub'е и где угодно. Он что — действительно этого не понимает?
                                                                                                                                                –2
                                                                                                                                                Как хорошо, когда не пользуешься всяким говном!
                                                                                                                                                  –1
                                                                                                                                                  По этому пакеты нужно называть vendor_name/package_name как в Composer

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

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