Utilisation de C ++ / Java pour développer des logiciels à des fins commerciales


9

Je prévois de développer un programme que j'ai l'intention de vendre plus tard. J'essaie de décider d'un langage avec lequel le coder, et je me suis restreint à C ++ ou Java.

J'ai parcouru les licences GPL v2 et v3 utilisées pour GCC et OpenJDK de GNU (oui, je peux comprendre certaines choses juridiques, mais clairement, pas toutes). Mais il y a un point sur lequel tout le monde est obscur (cela aurait dû être l'une des premières réponses, IMO): si je développe un programme en utilisant C ++ / Java et le compile en utilisant le compilateur GCC ou le compilateur d'OpenJDK, puis-je le vendre sans avoir placer mon programme sous GPL également?

Pour autant que je sache, j'ai tous les droits pour attribuer n'importe quelle licence à mon programme, mais il y a un hic: il est dit dans la licence que je ne devrais pas lier à une bibliothèque sous GPL. Si c'est le cas, je devrai publier mon programme sous GPL.

Maintenant, je ne sais pas ce qui en C ++ / Java est considéré comme une bibliothèque, donc si j'utilise les choses normales en C ++ (iostream, list, map, etc.) ou les classes / interfaces Java normales disponibles dans le cadre du JDK standard 6 distribution (String, List, Map, etc.), cela constitue-t-il un «lien vers les bibliothèques»?


1. Nous ne prodiguons pas de conseils juridiques ici. 2. Qu'est-ce que «C ++ / Java»? 3. Regardez autour de vous et voyez des milliers et des milliers de produits logiciels commerciaux écrits en Java, beaucoup avec des composants JNI.
bmargulies

1
Le / en C ++ / Java est juste utilisé comme abréviation pour "ou", ce qui est parfaitement valide en anglais.
Robin Green

Cela ressemble à une question pour opensource.stackexchange.com . (Si cela n'a pas déjà été répondu là-bas.)
Kevin Krumwiede

Réponses:


13

si je développe un programme en C ++ / Java et le compile en utilisant le compilateur GCC ou le compilateur d'OpenJDK, puis-je le vendre sans avoir à placer mon programme sous GPL également?

Oui. La GPL exclut spécifiquement la sortie de l'exécution du programme:

la sortie du programme n'est couverte que si son contenu constitue une œuvre basée sur le programme (indépendamment d'avoir été réalisée en exécutant le programme).

ce qui signifie que si vous incluez des bits de GCC ou quelque chose d'autre sous GPL dans votre programme, alors oui, il devrait être sous GPL, sinon non - le fait que son code objet ait été produit par un compilateur sous GPL n'a pas d'importance s'il doit être sous GPL ou non. .

Toutes les bibliothèques de langues standard auxquelles vous vous connectez ne sont pas sous GPL, ou sont sous GPL mais ont une exception spéciale pour permettre à votre logiciel propriétaire de s'y lier, si vous ne les modifiez pas . Dans le cas de C ++, je veux dire libgcc, glibc et libstdc ++; dans le cas de Java, je veux dire toutes les bibliothèques incluses dans le JRE.

Techniquement, vous pouvez quand même légalement vendre des logiciels GPL, mais presque personne ne gagne d'argent en le faisant.


La LGPL (Lesser GPL) permet à une application de s'y connecter sans exiger que cette application soit elle-même GPLd. En revanche, une bibliothèque GPL est infectieuse. Mais vous avez raison, la sortie du compilateur est explicitement exclue des termes GPL.
Berin Loritsch

et si je modifie les bibliothèques de langues standard? puis-je le faire? qu'advient-il alors de la licence de mon programme?
piotrek

Ensuite, l'exception ne s'applique pas et vous devez suivre l'intégralité des termes de la licence correspondante. En outre, il y a des implications en matière de marques dans le cas de Java - mieux vaut ne pas mentionner Java ou OpenJDK dans votre documentation ou votre publicité si vous l'utilisez (mais voir l'affaire Oracle v Google).
Robin Green

8

GCC et OpenJDK ont des exceptions explicites:

… Lorsque vous utilisez GCC pour compiler un programme, GCC peut combiner des parties de certains fichiers d'en-tête GCC et bibliothèques d'exécution avec le programme compilé. Le but de cette exception est de permettre la compilation de programmes non GPL (y compris propriétaires) pour utiliser, de cette manière, les fichiers d'en-tête et les bibliothèques d'exécution couverts par cette exception. …

… Lorsque GNU Classpath est utilisé non modifié comme bibliothèque de classe principale pour une machine virtuelle, un compilateur pour le langage Java ou pour un programme écrit dans le langage de programmation Java, cela n'affecte pas la licence pour la distribution directe de ces programmes…



0

L'OpenJDK est sous GPL mais avec une exception pour les liens vers les bibliothèques. http://en.wikipedia.org/wiki/OpenJDK

L'utilisation de classes OpenJDK constituerait un lien vers une bibliothèque, je pense (rt.jar).

Une bibliothèque dans ce contexte, du point de vue de Java, est sûrement un pot de dépendance, une guerre, une classe, etc. Quoi qu'il en soit, je suis sûr que vous pouvez légalement vendre une application Java - il y en a plus que Oracle Sun n'a engagé aucune action en justice.


Il en va de même pour libstdc ++ - il a également une exception.
Robin Green

Rt.jar et libstdc ++ sont des implémentations d'une spécification qui n'est pas GPL. Essentiellement, si je liais mon application à une version non GPL de libstdc ++, elle fonctionnerait de manière identique (en supposant que la spécification a été implémentée correctement) dans les deux versions. Le fait qu'une plateforme charge dynamiquement une version GPL de la bibliothèque ne compte pas pour votre application. Vous avez écrit sur la plate-forme standard et êtes couvert par la licence que vous souhaitez.
Berin Loritsch

0

Ne vous inquiétez pas, c'est une question de programmation informatique, ou du moins qui concerne étroitement les programmeurs.

D'après ce que je sais, si vous créez un logiciel lié à du code GPL, vous devez libérer votre code source si vous distribuez votre programme.

Cela ne signifie pas que vous devez publier votre code sur sourceforge, c'est-à-dire que si un tiers vous demande le code, vous devez le fournir.


Ce point n'est pas pertinent car l'activité décrite dans la question n'implique pas, toutes choses égales par ailleurs, un lien vers le code GPL.
Robin Green

La question ci-dessus: si je développe un programme en utilisant C ++ / Java et le compile en utilisant le compilateur GCC ou le compilateur d'OpenJDK, puis-je le vendre sans avoir à placer mon programme sous GPL également?

Je pense que je précise clairement que si vous UTILISEZ du code GPL, vous devez libérer.

Désolé, j'étais inexact - cela implique dans certains cas un lien vers du code GPL dans un certain sens, mais par exemple l'exception Classpath s'applique, vous n'avez donc pas à publier votre code sous la GPL.
Robin Green

ahh, ok alors, je ne savais pas à ce sujet
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.