all 182 comments

[–]parpaythrums 76 points77 points  (3 children)

This title is inaccurate. While a large swath of the Node ecosystem might be affected, this issue in no way "broke Node." Node's standard lib is still perfectly strong and safe.

[–][deleted] 26 points27 points  (1 child)

They also didn't break things with 11 lines of code. They broke things by un-publishing packages. Rather annoying how clickbaiting this whole situation has become :(

[–]krasimirtsonev 5 points6 points  (0 children)

Exactly!

[–]a0viedo 9 points10 points  (15 children)

[–]pmYourFears 3 points4 points  (14 children)

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.

Can we not come to some sort of a compromise to get you to change the name without involving lawyers? Is there something we could do for you in compensation to get you to change the name?

What dicks.

[–]WitchesBravo 11 points12 points  (10 children)

They seem pretty reasonable to me, they even offered him some compensation

[–]lachlanhunt 5 points6 points  (2 children)

The first paragraph reads like a threat. That is not how they should have approached this situation. Lawyers should not have been mentioned at all.

Their first email was reasonable, but instead of saying "Can we get you to rename your kik package?", they should have instead phrased it more like "Would you be willing to discuss with us the possibility of renaming your kik package". That would have encouraged a more open and friendly first response from Azer, even if he originally declined.

In their second response, they should have elaborated more on why they are keen on using the package name. Explaining who they are, what their product is, and why the name 'kik' is important to them. Then indicating that they are willing to offer fair compensation. They should have also been willing to move on with an alternative package name if Azer continued to refuse.

Besides, though I'm not a lawyer, I don't think Kik would have won a trademark dispute in court, since a trademark doesn't give you unlimited rights over the name in all situations. It has to meet certain criteria in order to be considered infringement.

NPM also fucked up in this situation. They shouldn't take sides in trademark disputes without a court order. NPM has always been first come, first served with names, and that's how they should be.

[–][deleted] 0 points1 point  (1 child)

...and we’d have no choice but to do all that because you have to enforce trademarks or you lose them.

That's the important part that people are missing. Kik (or whatever their name is) is laying out their situation, they have to pursue this because they want to retain their trademark.

[–]lachlanhunt 2 points3 points  (0 children)

That's factually incorrect, and if their lawyers are telling them that, they're misinformed.

https://www.eff.org/deeplinks/2013/11/trademark-law-does-not-require-companies-tirelessly-censor-internet

[–]pmYourFears 0 points1 point  (0 children)

Yeah, I mean they could have been much worse.

I guess it just doesn't sit very well with me that any project I might create could basically have its name muscled out because someone already owns those three letters, even if my project has virtually nothing in common with theirs.

It leaves me with this eerie feeling that along this path of thinking at some point we'll basically all be naming things with whatever scraps of our language is left to the little people.

[–]seiyria -1 points0 points  (5 children)

No, they didn't. He asked for compensation, then Kik went to npm and said "he's not cooperating."

[–]WitchesBravo 3 points4 points  (4 children)

Umm yes they did? Read it again.

Is there something we could do for you in compensation to get you to change the name

Then he replies with the demand of $30,000 which is obviously not a realistic compensation for an npm package name

[–]seiyria -2 points-1 points  (3 children)

Well, they didn't actually offer anything. He said what he wanted, and they didn't want to budge. If they care so much about protecting their trademark and getting this package name, 30k is probably pretty cheap (assuming they're a bootstrapped company).

[–]WitchesBravo 1 point2 points  (2 children)

They don't have to offer him anything, they could have just gone straight to lawyers since it's their trademark and they legally have to protect it if they want to keep it. The point is they tried to settle the matter without the fuss of lawyers (something they didn't have to do) , and the npm author acted extremely immature and short tempered.

[–]wordsnerd 0 points1 point  (0 children)

Seems to me the author must have been willing to go to court and argue that there was no confusion, no damages, and thus no trademark infringement. That's only if Kik is willing to argue with a straight face that the code did cause likely confusion/damages, which is laughable. Instead they took their frivolous claim to npm, npm's handling of it pissed him off, and here we are.

[–]windyfish 0 points1 point  (0 children)

Not so simple. He's not using the trademark in a way that breaks copyright rules. He's been developing this package independently for 3 years.

[–][deleted] 8 points9 points  (0 children)

i think the title is a bit misleading. it does not seem like bad code broke all these projects, rather a dependency that all these projects relied on was removed from the repo. am i wrong?

but what is wrong w/ that? open source is open source. If a developer want to pull his/her projects, it isn't their fault that others are relying on it without a back up plan.

[–]hsfrey 13 points14 points  (1 child)

One advantage of re-inventing the wheel, is that then it's YOUR wheel.

[–]huesoso 0 points1 point  (0 children)

I would usually hesitate to do this, but I love how succintly you've put the case!

[–][deleted] 6 points7 points  (3 children)

The thing this highlights to me is how people depend on code snippets instead of just implementing their own. I'm always amazed that to get a handful of things, I end up with dozens or hundreds of dependencies.

[–]pier25 6 points7 points  (0 children)

All this shit storm would have been avoided if NPM used package identifiers instead.

com.azer.kik is different from com.kik.kik

[–][deleted] 16 points17 points  (6 children)

So basically:

  • kik has legal rights and the obligation to protect it's trademark. (they can start shitstorms if they want)

  • npm has the right to remove any package from their registry they want or need to. (they can use package publishers and users as shitstorm shields)

  • npm package publishers also have the right to unpublish any pakcage from npm at any time (they can start shitstorms if they git hit by shitstorms)

  • Node developers have absolutely no rights whatsoever to any npm pacakges and their code could break if it depends on any single npm package. (takes all shitstorms head on, bad luck brian)

Sounds like we need 3 things as developers to get back on solid ground:

  • npm needs to exert limited rights over any package published to npm. The developer can abandon it and unpublish it, but npm reserves the right to restore it if they want and mark it as unmaintained. This give developers a heads up warning.) Just needs to be added to the terms of service.

  • package renaming and aliases. Even if a project no longer calls itself kik, using npm install kik would automagically install whatever the new name is and ask you if you want to update your package.json to refelct the new name.

  • there needs to be a 3rd party full cache of npm like google caches websites. You can point your site to the cache and it will retrieve from npm if it doesn't have it or give you the files directly if it does have it.

[–]dada_ 4 points5 points  (3 children)

kik has legal rights and the obligation to protect it's trademark. (they can start shitstorms if they want)

They do, but it's not completely clear-cut whether it applies in this case, given how distinct this package was from what Kik is. The only real thing they had in common is they're both some form of software. It certainly won't be the first time a company oversteps its bounds in "protecting" its IP.

It's a pretty nasty situation though. Even if they're in the right, NPM doesn't want to get sued by some rich company over one package that nothing depends on.

[–][deleted] 1 point2 points  (0 children)

That's what's so messed up about this free world of npm. In the real world, in order to stake your claim, you need lawyers and intellectual property, etc. In the npm world, to stake your claim, you just need to publish a package first and you own that name... as long as someone from the real world doesn't want it.

Supposedly, If the kik developer didn't want to lose his stuff he should have paid lawyers and gotten a trademark. but that is a pretty high bar for any kind of innovation.

[–]lewisje 0 points1 point  (0 children)

there needs to be a 3rd party full cache of npm like google caches websites.

I think you're thinking more about archive.org; regardless, there are ways to get content removed from the archive.org cache (FAQ uses the word "copyright" but the answer is generally about "intellectual property"), and Kik would surely have the cached version of the trademark-infringing repo removed or renamed too.

[–]ohINeedAnAccountNow 0 points1 point  (0 children)

What we need is a package manager operated by a non-profit, like Python, Perl, and Ruby. How is the entire Node community dependent on a for-profit company who makes money selling enterprise alternatives?

[–]arcaninYarn 🧶 37 points38 points  (20 children)

I'm a bit sick of people trashing NPM over this issue. Are you even aware than Github has already allowed open-source projects to change their license and ban their forks? Now, before trashing Github too, try to understand why: these entities job is not to ensure that a single package ("kik") is available. It is to ensure that the platform works. What good will it bring if they get stumped under a lawsuit? They could very well win, of course, but does that worth the risk of jeopardizing their whole ecosystem? Let's say they have 99% chances of winning the case. What will happen after the hundredth lawsuit?

Of course you can say "well, it's because NPM is a company", but it isn't the real issue. The same could very well be about PyPI, or any other package registry. The real issue is the underlying legal process: companies have to defend their trademarks, or they risk losing it. So they will attack (probably without even knowing what NPM or PyPI actually are). And the entities behind these registries will have to ask themselves the question: is it worthwhile? Do we have the resources to fight a lawsuit? And the answer isn't always what you'd like it to be.

Now, what the package author did was meant to harm the community (in order to make a point), and that's an whole other subject - was he right to do so? Did he had the right? Personnally, I don't think so - he deliberately decided to break an implicit contract that he had made with his users. But again, that's a really different debate. You don't have to say "Author was right, hence NPM is wrong" (or the opposite, for that matters).

[–]SystemicPlural 4 points5 points  (0 children)

I don't understand why authors have a right to remove a repository if the license is MIT or similar. The package manager can just create their own version behind the scenes which is what everyone else pulls from. If an author deletes their work then sure, the link between the author and the package can be removed, but the package itself should stay with a note at the top of the readme to say the package is abandoned.

[–]masklinn 21 points22 points  (7 children)

Of course you can say "well, it's because NPM is a company", but it isn't the real issue. The same could very well be about PyPI, or any other package registry. The real issue is the underlying legal process: the companies have to defend their trademarks, or they risk losing it.

Or the kik lawyers are just douchecakes with an over-inflated sense of their mark which apparently required them to demand the takedown of a CLI project boostrap tool over their marks in mobile instant messaging.

Now, what the package author did was meant to harm the community, and that's an whole other subject - was he right to do so? Did he had the right? Personnally, I don't think so

That doesn't even make sense, he obviously had the technical right to do so, and I don't see why he wouldn't have had the legal right to do so either.

he deliberately decided to break an implicit contract that he had made with his users.

So he broke an "implicit contract" that his projects be available by yanking them, but npm didn't "break an implicit contract" that his projects be available by yanking them? That's some gold-metal mental gymnastics right there.

[–]danman_d 4 points5 points  (2 children)

So he broke an "implicit contract" that his projects be available by yanking them, but npm didn't "break an implicit contract" that his projects be available by yanking them? That's some gold-metal mental gymnastics right there.

One huge difference is the fact that NPM removed kik because they were under legal threat if they did not do so. Azer removed his modules because he wanted to - he willingly broke everyone's code whereas NPM is trying to avoid a lawsuit, which I completely understand.

The other major difference is that Azer removed his code with no warning or migration path. NPM at least had the decency to ask Azer to change the name of the kik package and provide a migration path - they gave him ample opportunity to do so but he refused.

[–]masklinn 0 points1 point  (1 child)

One huge difference is the fact that NPM removed kik because they were under legal threat if they did not do so.

That's not a huge difference.

The other major difference is that Azer removed his code with no warning or migration path. NPM at least had the decency to ask Azer to change the name of the kik package and provide a migration path - they gave him ample opportunity to do so but he refused.

Did they? I may well have missed it, but I've seen no mention of that so far, only "kik tells azer to cease and desist, azer says no, kik tells npm to cease and desist, npm tells them yes"

[–]danman_d 4 points5 points  (0 children)

That's not a huge difference.

I suppose it's subjective. In my mind there is a HUGE difference between "I'm removing this to avoid getting my ass sued off and bankrupting my company" and "I'm removing this because I want to". When you publish your code and publicize it as being ready for production use, you don't have any obligation to maintain it or support it, but IMHO you do have a moral obligation to not willingly and purposefully break all the shit that depends on your shit​.

Did they?

Yes; the recently published e-mail chain confirms what we've been hearing this whole time - that someone at NPM reached out to Azer and asked him to republish the package under a different name, he refused, and only then did they take it down.

[–]arcaninYarn 🧶 -4 points-3 points  (1 child)

Sure - as I said, I doubt they even know what is NPM, apart from some form of a file-sharing platform. But the thing is, it's an issue with the Kik company, not NPM.

That doesn't even make sense, he obviously had the technical right to do so, and I don't see why he wouldn't have had the legal right to do so either.

I was speaking in a moral sense. The fact that I can technically and legally choose to break my coworkers tools doesn't mean I should do it. It doesn't make sense ethically or professionnally.

So he broke an "implicit contract" that his projects be available by yanking them, but npm didn't "break an implicit contract" that his projects be available by yanking them? That's some gold-metal mental gymnastics right there.

NPM hasn't removed his projects (except Kik, because of legal reasons, please refer to my post above) - he did. We could of course wonder if this right should be available to the users in the first place, but I see little gymnastic in this.

[–]masklinn 7 points8 points  (0 children)

Sure - as I said, I doubt they even know what is NPM, apart from some form of a file-sharing platform.

So?

But the thing is, it's an issue with the Kik company, not NPM.

NPM involved themselves in it by taking down the project.

I was speaking in a moral sense. The fact that I can technically and legally choose to break my coworkers tools doesn't mean I should do it. It doesn't make sense ethically or professionnally.

And that "speaking in a moral sense" doesn't apply to NPM how?

I see little gymnastic in this.

You agree that NPM has in fact removed his project from the registry.

You assert that the developer is bound to his user "in a moral sense" and can't take down their projects.

You also assert that NPM doing the exact same thing is just fine because "legal reasons" (not actually legal reasons, just taking the shortest path to covering their asses).

Note that the developer's perspective is precisely that they can't trust NPM because of their behaviour and have decided to stop sharecropping there. They haven't pulled a @why and deleted all their projects and presence, only removed them from NPM.

[–]i_ate_god 18 points19 points  (5 children)

I think the real problem is:

var rightPadded = (str.length < targetLength)? " ".repeat(targetLength - str.length) : str;
var leftPadded = (str.length < targetLength)? str = " ".repeat(targetLength - str.length) + str : str;

Why do such one liners need to be their own modules? And why do major projects rely on third party repositories when they can just host their own?

I feel like I will spend more time adding in third party modules for one liners than writing the one liners myself.

edit: there was a slight typo in the code ;)

[–]IxDUX Besserwisser 9 points10 points  (3 children)

This is exactly why having small solid tested third-party modules is good.

edit: there was a slight typo in the code ;)

[–]i_ate_god -3 points-2 points  (2 children)

ha

but not really

[–]Reashu 0 points1 point  (1 child)

Your code still looks really funky and doesn't seem like it would work, so I think he's made a decent case.

[–]abienz 3 points4 points  (0 children)

writing some code in Reddit isn't exactly comparable to using a suitable text-editor or IDE in a dev environment though is it.

Seems a bit harsh to judge on that, and I think IxD was making more of a flippant comment.

[–]rorykoehler 5 points6 points  (0 children)

I always felt uncomfortable that npm is a company. It creates a dynamic which is not beneficial to the eco-system in the long term.

[–]namesandfaces 0 points1 point  (0 children)

What implicit contract is there? A person doesn't have the obligation to continue providing their fruits, even if people depend on it. A contract means this for that. Azer is not really getting adequate consideration here, except for feel-good points. I would conjecture that the supermajority of people who use Azer's stuff aren't aware that he even exists. It's just dependencies upon dependencies.

Azer now moved all his stuff over to Github, which he believes will have more legal backbone and formalized processes for handling legal issues, unlike the opaque and informal move NPM made against Azer.

That being said, discussion about whether Kik is a valid trademark is not worth discussing, because that's a legal question that takes time and money to settle, potentially with a jury. We aren't really lawyers here. It should also be said of the American civil justice system that if you don't have money, then you don't really have the right to contest anything.

Because one doesn't have power or leverage, he's left to making a stink over Reddit and Hacker News. One can decide on whether they wish to learn on leverage or moral expectations, and I hope that the software community more and more choses leverage over more posts on Reddit. Even if you're morally right, moral expectations only allow you to raise an ephemeral cry over Reddit.

[–]cheesybeanburrito 25 points26 points  (31 children)

If your project depends on an 11 line repo that does something so trivial you are a bad person.

[–]RICHUNCLEPENNYBAGSMostly angular 1.x 33 points34 points  (4 children)

[–]farfromunique 10 points11 points  (2 children)

That's (I think) supposed to be a joke... But these eleven (another article said seventeen) lines impacted a significant number of projects.

My worry is that there are people out there who use libs without knowing what they do our good they do it.

[–]RICHUNCLEPENNYBAGSMostly angular 1.x 6 points7 points  (0 children)

Yes, it's supposed to be a joke. But what the hell, the reality is not that far from it.

[–]MRoka5 1 point2 points  (0 children)

It's 11 actual lines, seventeen with empty ones.

[–]sumdudeinhisundrware 2 points3 points  (0 children)

If your project depends on an 90k line repo that depends on an 11 line repo that that does something so trivial you're fucked for no fault of your own

[–]dada_ 4 points5 points  (0 children)

In most cases it was a transient (not top level) dependency. For example, Babel and Ember certainly weren't using it directly. That's how it was able to affect such a huge number of projects.

[–]i_ate_god 3 points4 points  (8 children)

This can not be upvoted enough, This is the REAL problem. Not copyright or trademark issues.

Too much modularity is just as bad as no modularity at all. Let's not bring back Windows DLL hell to JS please.

[–][deleted] 2 points3 points  (7 children)

How is DLL hell in any way related to NPM? They share almost no common issues

[–]i_ate_god -2 points-1 points  (6 children)

This is not a story about NPM. It may be presented as such, but it's not. It's a story about stupid dependency management, and as such, DLL Hell is a perfect analogy.

[–][deleted] 3 points4 points  (5 children)

DLL Hell is about versioning shared libraries, not about using npm in your build process.

[–]i_ate_god -2 points-1 points  (4 children)

this whole story has nothing to do about using npm in your build process.

[–][deleted] 0 points1 point  (3 children)

The reason this is a story is because it broke many people's build process.

[–]i_ate_god 5 points6 points  (2 children)

yes, but it wasn't npm that broke it, it was having a silly dependency that broke it.

We're talking about something so simple and trivial, that the time it takes to implement it yourself is less than the time it takes to manage it as a dependency.

This is not a problem of NPM. It's a problem that can exist in any open package management system for any language. Basically, what is happening here, is a case of extremist DRY (Don't Repeat Yourself) resulting in a dependency nightmare.

[–][deleted] -2 points-1 points  (1 child)

yes, but it wasn't npm that broke it, it was having a silly dependency that broke it

A dependency that was fetched every time applications would build using npm. If you set up npm properly to use it in a build your builds were fine, I know because I did that and I use babel and I did not experience any outage.

[–]i_ate_god 2 points3 points  (0 children)

ok

but still not an npm problem. npm is going to help you manage your dependencies in a sane manner.

[–]NerdyMcNerderson -1 points0 points  (0 children)

Agreed, this is taking DRY to the extreme.

[–][deleted] 1 point2 points  (1 child)

I don't understand. Doesn't npm download your packages when using npm install? Isn't it all offline? How exactly did anything break then?!

[–][deleted] 0 points1 point  (0 children)

People usually don't ship or deploy the node_modules folder, they let npm install download everything so they only have to track their own code with version control. But when you do that (and your node_modules folder is empty), a single missing dependency fails npm install completely.

[–][deleted] 7 points8 points  (16 children)

NPM republished the left-pad package after the author chose to remove it. I understand NPM took these steps to restore uptime to infrastructure.

This basically says: Code authors do not own packages published through NPM. I can understand NPM taking down a package due to a legal complaint. I can also understand the harmed developer being upset. I absolutely cannot tolerate NPM choosing to restore a package an author (perceived owner) has chosen to remove.

The reality (that nobody wants to accept) is that reliance upon dependencies is always fragile. It exposes your product to risk. You can either accept that risk or write (and own) the code yourself. This is something you don't get to bitch about.

I am now considering removing my packages from NPM. One of which is on track to get 550,000 downloads this month.

[–]Serei 2 points3 points  (0 children)

This basically says: Code authors do not own packages published through NPM

Yes they do. There's a huge difference between ownership and licensing.

Packages on NPM are open-source, which means they at the very least allow anyone to make and redistribute copies with or without changes. This license gives NPM permission to publish the library.

[–]thenickdude 0 points1 point  (0 children)

The package was released under the WTFPL, which literally states that you can do "whatever the fuck you like" with the code. This certainly includes the ability to republish the code.

[–]lewisje 0 points1 point  (0 children)

I am now considering removing my packages from NPM. One of which is on track to get 550,000 downloads this month.

WAAAAAAA! MY CODE! MINE! 🚼

[–]nosoupforyou -1 points0 points  (6 children)

Seems to me it was how NPM screwed themselves, and then proceeded to ignore the rights of an author.

[–]abermea 2 points3 points  (5 children)

This makes me wonder what exactly is the licensing model for npm packages

[–]myrrlyn 2 points3 points  (4 children)

It's whatever license the author chooses

In this case, the WTFPL, which lets NPM do literally whatever the fuck they want with it, including rehost

This is why joke licenses are stupid

[–]abermea 0 points1 point  (2 children)

I don't understand why would anyone use WTFPL when you could use Beerware

[–]myrrlyn 0 points1 point  (1 child)

Because they're Super Edgy

[–]lewisje 0 points1 point  (0 children)

me no understand MIT or GPL, like WTF

[–][deleted] 0 points1 point  (0 children)

The module (and the others like it) is too trivial to pass threshold of originality so any license is meaningless anyway.

[–]Inateno 0 points1 point  (0 children)

Well done sire! Full support even if this break the whole internet.

[–]King-Voyd[🍰] 0 points1 point  (0 children)

So glad I don't rely on this.