Dans le projet, j'ai trouvé un fichier math.c
, avec un gros en-tête GPL et ...
//------------------------------------------------------------------------------
/// Returns the minimum value between two integers.
/// \param a First integer to compare.
/// \param b Second integer to compare.
//------------------------------------------------------------------------------
unsigned int min(unsigned int a, unsigned int b)
{
if (a < b) {
return a;
}
else {
return b;
}
}
OK, cool donc j'ai besoin d'obtenir la valeur minimale et ... ce fichier !? J'ai donc besoin d'ouvrir l'ensemble du projet à cause de cela? Ou dois-je réinventer les mathématiques?
Je ne crois pas que ce soit juste insensé, alors la question qui se pose est la suivante: quand pouvons-nous simplement supprimer l'en-tête GPL?
Dois- je être un cinglé et le faire ?
unsigned int min( unsigned int
JEIOfuihFHIYEFHyigHUEFGEGEJEIOFJOIGHE,
unsigned int hyrthrtRERG ) { if
(JEIOfuihFHIYEFHyigHUEFGEGEJEIOFJOIGHE
< hyrthrtRERG ) { return JEIOfuihFHIYEFHyigHUEFGEGEJEIOFJOIGHE; }
else {return hyrthrtRERG ; } }
Sérieusement, veulent-ils que j'écrive du code comme ci-dessus?
the jury did find that one nine-line function that Google acknowledged copying was infringing
(de ArsTechnica ).min
n'est pas couverte par le droit d'auteur. Voir ma réponse pour plus de détails.Réponses:
Contrairement à beaucoup d'utilisateurs ici, je suggérerais simplement: copiez-le!
Assurez-vous que le formatage du code correspond à votre norme de codage et que vous devriez probablement supprimer ou réécrire le commentaire. Personne ne saura jamais que vous l'avez copié - lorsqu'un morceau de code est aussi simple, vous pourriez aussi bien l'avoir écrit à partir de zéro. Si votre norme de codage exige en quelque sorte que la fonction soit exactement comme dans l'extrait de code, qu'il en soit ainsi - du moment qu'elle ressemble à ce qu'elle aurait été si vous l'aviez écrite à partir de zéro.
Pensez-y, c’est à peine (!) La première fois que cette pièce exacte est écrite - quand quelque chose est aussi trivial, il ya peu de raisons de ne pas la copier, si vous n’avez pas l’impression de l’écrire vous-même.
Même avoir cette discussion me semble un peu superflu - nous devons faire preuve de pragmatisme si nous voulons faire un vrai travail!
la source
Let us then say that the programmer wrote his own version of MIN and it ended up looking exactly like the one from math.c - would it then be okay?
Oui, si c'était un accident. "Quelle différence cela ferait-il s'il venait juste de le copier?" Les bits ont de la couleur . ansuz.sooke.bc.ca/entry/23 Ce n'est pas quelque chose que la plupart des informaticiens peuvent comprendre. C'est en effet un sujet complexe, mais c'est quelque chose qui est reconnu par la loi. Si vous avez des doutes sur la légalité de quelque chose, vous avez tout intérêt à parler à un avocat .Cela ne répond pas directement à votre question, mais essayez ceci:
Par la présente, je publie cette glorieuse macro complexe sur le domaine public. Bien que je puisse avoir à publier un article sur cette technique.
Si vous êtes macro-phobique, essayez cette version en ligne (en réalité, sauf si vous codez sur un SPARC, vous économiserez beaucoup de cycles de processeur en évitant de placer une fonction aussi omniprésente que
min
dans le code entrée / sortie):La question des licences de code pour les extraits de code triviaux est un peu gênant, vraiment. Renseignez-vous auprès d'un avocat, mais je suis tenté de supposer qu'ils ne peuvent pas vraiment être agréés et / ou que l'autorisation ne peut pas être appliquée dans la pratique. De la même manière que vous ne pouvez pas utiliser le mot «mot» dans les droits d'auteur ou la marque, appuyez-vous ensuite sur ceux qui l'utilisent. (Oops)
la source
min(a++,b++)
.min
.Disclaimer : Je ne suis pas avocat. Utilisez mes conseils à vos risques et périls.
Cette mise en œuvre de
min
n'est pas protégée par un droit d'auteur , car il n'y a que très peu de manières raisonnables de l'écrire.Dans le monde juridique, cela s'appelle la doctrine de la fusion (également connue sous le nom de division de l'idée-expression). L' idée (non copyrightable) de la fonction est dite avoir "fusionné" avec l' expression (potentiellement copyrightable) . Par conséquent, le code n'est pas soumis au droit d'auteur - vous êtes libre de l'utiliser.
Pour être sûr, ne le copiez pas textuellement . Utilisez des noms différents pour les variables, appliquez votre propre formatage, ne copiez pas les commentaires mot à mot. La représentation littérale exacte de ce code peut être couverte par le droit d'auteur.
Gardez à l'esprit que cela ne garantit pas que quelqu'un ne vous poursuivra pas en justice, mais au moins, vous aurez une défense solide.
De plus, n'oubliez pas que même si un morceau de code n'est pas protégé par le droit d'auteur, il est possible qu'il soit protégé par un brevet de logiciel (ce n'est pas le cas pour votre
min
fonction).la source
Je publie le code suivant sous la licence BSD . Comme cette licence est beaucoup plus permissive, vous ne devriez pas vous heurter à des problèmes de copyright si vous utilisez mon implémentation.
la source
min
dans un logiciel à code source fermé. De plus, @Sholy, le problème est maintenant de savoir s'il l'a copié ou non.C'est une situation absurde, j'en conviens, mais vous ne pouvez vous en prendre qu'à vous-même. Si vous écrivez du code propriétaire, vous ne devriez pas lire les fichiers source sous licence GPL, point à la ligne. Supprimez math.c de votre système de fichiers, conservez la documentation et n'hésitez pas à réimplémenter toute partie de l'API dont vous avez besoin. Si vous ne lisez pas le code, vous n'avez pas à vous inquiéter si votre propre code s'avère similaire.
Inutile, vous dites? La GPL vous empêche intentionnellement de tirer parti du code libre sans redonner à l'écosystème. Si vous ne pouvez pas ou ne voulez pas respecter ses conditions et si vous ne souhaitez pas implémenter une autre bibliothèque de mathématiques, vous pouvez toujours en acheter une ou en trouver une gratuite dotée d'une licence que vous pouvez accepter.
Les programmeurs de Microsoft ne sont pas autorisés à lire du code source ouvert, afin de protéger la société contre les problèmes juridiques. Pour des raisons purement éthiques, vous devriez faire de même avec tout programme dont vous ne souhaitez pas obtenir la licence.
Vous n'avez pas le droit de l'utiliser
math.c
, mais personne n'essaie de bloquer le marché pour des implémentations demin
. L'objectif de la GPL est d'augmenter la "liberté" du programmeur (et la liberté de l'utilisateur final), et non de la restreindre. La licence GNU, la FSF et le mouvement du logiciel libre ont commencé avec Richard Stallman, et Stallman a commencé par réimplémenter chaque nouvelle version de Symbolics lisp dès sa sortie. La FSF ne voulait (et ne pouvait pas) poursuivre personne pour avoir ré-implémenté une bibliothèque GPL.la source
Réponse: Seulement avec la permission explicite de l'auteur.
C'est un code sous copyright. Vous ne pouvez pas le copier sans la permission de l'auteur.
Vous devrez écrire votre propre version de
min
, ou copier une variante demin
celle -ci qui utilise une licence différente.Rappelez-vous, avec les droits d'auteur, c'est le code qui est protégé, pas l'algorithme. La loi sur le droit d'auteur vient du texte. Même si "math.c" n'était rien que des commentaires et n'avait aucun code exécutable, il serait toujours protégé par le droit d'auteur.
la source
min
, vous possédez une séquence particulière de caractères à implémentermin
.C'est ce que Google aurait soi-disant arraché. Cela semble être du bon sens pour un tableau.
la source
De toute façon, je n'utiliserai pas ce code, car le commentaire ne correspond pas à son comportement. Le commentaire parle de
integer
, alors que le code utiliseunsigned int
. Qui sait quelles erreurs sont enfouies dans les profondeurs de cette fonction?Sérieusement, c’est là que "Ne réinventez pas la roue" devient ridicule et que vous avez oublié de la prendre avec un grain de sel. Écrivez simplement votre propre version à partir de zéro, associez-la à la convention de nommage et au guide de style de votre code (par exemple
math_min_uint(x, y)
), assurez-vous que cela fonctionne (test unitaire ou autre) et poursuivez votre vie sans problème de droit d'auteur.Avec l'expérience croissante, ces extraits triviaux dont vous avez besoin encore et encore ne sont que dans votre boîte à outils et vous les réécrivez sans trop réfléchir, ou simplement les récupérez de votre propre bibliothèque.
la source
Les gens semblent oublier que la loi sur le droit d'auteur, tant dans l'esprit que dans la lettre, signifie que l'acte de copier est interdit - pas l'acte d'exprimer soi-même la même pensée, même si le résultat s'avère étrangement similaire.
Si vous prenez le code sous GPL, modifiez-le, utilisez-le d'une manière qui va à l'encontre de la licence sous laquelle vous l'avez reçu, et prétendez qu'il ne s'agit pas d'un travail dérivé, vous enfreignez la loi. Même si vous utilisez votre deuxième version, vous avez modifié le nom de toutes les variables et modifié le formatage, mais il est toujours dérivé de l'original.
Si, toutefois, vous écrivez votre propre version de
min
, et en raison de la trivialité de la tâche, du fait qu'il n'y a que de nombreuses façons d'écrire une telle chose, et qu'un peu de coïncidence, votre version finit par être exactement identique. au code GPL, alors vous n'avez rien copié.Que ce soit ou non une histoire va passer devant le tribunal est une question différente cependant. Si un échantillon de code plus volumineux ou plus complexe apparaît avec des commentaires, une mise en forme et des fautes d'orthographe, vous aurez du mal à convaincre quiconque que vous l'avez écrit indépendamment, plus encore s'il est possible de démontrer que vous connaissiez l'original. source (qui, vu le fait que vous l’avez posté ici, devrait être assez trivial).
la source
Si le code est vraiment trivial comme exemple "min", il est fort probable que quelqu'un d'autre ait déjà implémenté la même fonctionnalité sous une licence open source différente.
Selon la licence, vous pouvez être autorisé à inclure le code dans votre application source fermée.
la source
Écris-le toi-même en 30 secondes. Vous pouvez utiliser exactement le même algorithme. Juste ne pas copier / coller.
Le droit d'auteur ne protège que l'expression d'une idée, pas l'idée elle-même. Vous pouvez utiliser l'idée directement à condition de ne pas la copier.
FWIW, je doute que copier un élément de code aussi trivial vous cause de gros problèmes. Les dommages seraient nuls et ils tomberaient probablement sous une utilisation équitable dans la plupart des juridictions. Mais les affaires judiciaires sont tellement pénibles que je ne voudrais pas risquer cela.
la source
En tant que code GPL, la grande question est de savoir si vous envisagez de distribuer votre code ou de vendre votre logiciel.
Si vous ne l'utilisez qu'en interne, la GPL vous laisse toute la liberté de faire ce que vous voulez.
Si vous envisagez de distribuer votre package, le plus simple est de le gérer selon les mêmes conditions que toute source GPL que vous avez utilisée. Il y a d'autres moyens mais cela se complique.
Si vous envisagez de vendre votre logiciel, vous devez distribuer le code source de tout code GPL que vous avez utilisé et / ou modifié sous la même licence GPL sous laquelle vous l'avez obtenu.
la source
Si vous utilisez C ++ et non C, résolvez ce problème en utilisant la bibliothèque standard
std::min
oustd::max
dans<algorithm>
:http://www.cplusplus.com/reference/algorithm/min/
Cela vous achète la généralité, et cela fonctionnera pour n'importe quel type comparable. De plus, lorsque d-bag tentera de prétendre l'avoir inventé et qu'il est protégé par des brevets logiciels, ils vont gronder avec le comité de l'ISO ... pas vous.
Dans le cas général, notez qui a publié le code. Corporation, ou individu sain d'esprit? Si c'est un individu sain d'esprit (comme c'est le cas avec beaucoup d'open source), écrivez-leur une bonne note et obtenez l'autorisation. Enregistrez leur réponse en disant que ça va. Problème résolu.
la source
Pour le cas général: Code plus complexe qui est définitivement protégé par le droit d'auteur, par opposition à min et max (qui peut ou non être protégé par le droit d'auteur).
Puis, donnez une licence à votre code conformément à la bibliothèque, c’est-à-dire la GPL! Notez cependant qu'il existe des bibliothèques LGPL (et GPL avec exceptions) qui vous permettent d'utiliser leurs implémentations tout en donnant à votre code la licence que vous souhaitez.
la source