usmanyunusov / nanospinner

🌀 The simplest and tiniest terminal spinner for Node.js
https://npm.im/nanospinner
ISC License
191 stars 15 forks source link

Does not adhere to license #29

Open sindresorhus opened 1 month ago

sindresorhus commented 1 month ago

https://github.com/usmanyunusov/nanospinner/blob/b53e875f28571225cf7fd0fcec1f2e7a90bbda5c/consts.js#L4-L9 is clearly directly copied from: https://github.com/sindresorhus/is-unicode-supported/blob/8f123916d5c25a87c4f966dcc248b7ca5df2b4ca/index.js


https://github.com/usmanyunusov/nanospinner/blob/b53e875f28571225cf7fd0fcec1f2e7a90bbda5c/consts.js#L15-L16 is copied from https://github.com/sindresorhus/cli-spinners


And https://github.com/usmanyunusov/nanospinner/blob/b53e875f28571225cf7fd0fcec1f2e7a90bbda5c/consts.js#L18-L20 is copied from https://github.com/sindresorhus/log-symbols/blob/main/index.js

conartist6 commented 1 week ago

I was just pointed to this thread and I want to say that all that code looks to me like it falls outside the realm of what is possible to copyright thanks to the legal principle of "convergence", which is the same principle that prevents things like equations for mathematical laws of the universe from being under copyright.

sindresorhus commented 1 week ago

Your argument is flawed. The principle of "convergence" you're referencing applies to facts, not creative expression or unique implementation choices. The copied code isn’t a natural law or mathematical equation—it’s original, authored code that reflects specific decisions. Those decisions, whether it's the exact structure or even minor implementation details, are subject to copyright. Just because the functionality could be re-implemented doesn't mean this specific code isn't protected.

What you’ve cited isn't an example of unprotectable facts—it’s directly copying someone else’s authored work.

conartist6 commented 1 week ago

Correct. I am making the argument that the copied code does not contain sufficiently much original creative content.

The code that checks for particular values in process.env seems impossible to copyright, as process.env is how everyone checks environment variables. Anyone attempting to achieve the same integrations would be forced to end up with nearly identical code.

I'm sure you didn't originate the practice of using the characters - \ | / as a spinner, so that definitely isn't a creative effort. Anyone who wanted to use that idea (that you don't own) would naturally end up writing the exact expression ['-', '\\', '|', '/'] in idiomatic Javascript.

You've argued that ['â ‹', 'â ™', 'â ą', 'â ¸', 'â Ľ', 'â ´', 'â ¦', 'â §', 'â ‡', 'â Ź'] falls under copyright and I agree that there is some creativity to using braille code points to make a snake chase its tail, but I'd argue that while cool and maybe original (I don't know) it's still simply too small to be copyrighted. You can't claim copyright to a single word you made up, for example.

conartist6 commented 1 week ago

Also RE the originality of your spinners, I can't find earlier usage of those exact braille code points, but the idea of using braille code points to create the effect of a snake chasing its tail predates the first code for your library: https://stackoverflow.com/a/2685827

sindresorhus commented 1 week ago

Anyone attempting to achieve the same integrations would be forced to end up with nearly identical code.

The exact environment variables (no more, no less) and the exact order is highly unlikely to happen by coincidence.

sindresorhus commented 1 week ago

Anyway. I have no interest in wasting time here arguing. The owner does what they want with this.

conartist6 commented 1 week ago

I'm not saying they did, I'm saying they were copied. I'm saying that as far as I understand the law it was 100% legal to copy them because the original was not possible to copyright because of the principle of convergence which, as I mentioned, allows mathematical equations to be copied verbatim.