Open Source, GNU et GPL: Définition et impréssions...

Répondre
Partager Rechercher
Voila je fais dans l'informatique et je suis confronté régulièrement a des logiciel open source et autres...
J'aimerais savoir quels sont les types de licences qui existent et surtout pourquoi certains font payé...
Dites moi aussi ce que vous en pensez, cela clarifiera la situation.
Merci
Citation :
Provient du message de XhaK
http://www.opensource.org/licenses/

la liste des licences open source...

et pourquoi il y a des logiciels open source payant ? parceque open source veux principalement dire que l'on fourni le code source ( comme son nom l'indique ) et que l'on peut le modifier, pas qu'on le donne gratuitement
Pas uniquement

Il y a aussi le fait que, avec la license GPL (une des nombreuses licenses de produits Open Source) par exemple, tout produit contenant un sous-produit GPL doit se conformer a la license GPL

C'est pour ca que certains (python) utilisent une license lourdement modifiee pour permettre leur utilisation dans un projet non GPL non Open Source comme dans les projets Open Source (souscrivant a la GPL ou non) sans que cela pose de problemes

D'autres (MySQL) creent 2 packagings: un packaging Open Source gratuit, sources dispos, mais sans autre aide que les docs en ligne et la communaute, et un autre packaging payant avec assistances et aide ET disposant d'une license differente permettant d'utiliser MySQL dans un environnement commercial, donc 2 licenses pour des produits fondamentalements identiques mais au packagings differents pour les differencier.

Enfin c'est ce que j'ai compris
Citation :
Provient du message de Toliman
Ben oui mais j'aimerais connaître vos avis pas seulement une définition...
Je ne comprends pas très bien ce que tu attends de nous.
Tu veux des définitions de ce qu'est un logiciel open source, GPL, LGPL, etc ? Le site qu'a donné Xhak donne leur définitions. Ok c'est en anglais
Bon tente ici alors :
http://erwan.ledisez.free.fr/docs/rapport_freesoftware/
http://www.gnu.org/philosophy/philosophy.fr.html
http://www.livretdulibre.org/livret_...-ed3-draft.pdf

Si tu veux simplement savoir comment il est possible de vendre des logiciels librement disponibles (donc en théorie gratuits) :

- L'installation d'un logiciel et son entretien, son évolution ont un coût. Si tu développes un logiciel Libre, tu peux très bien vivre de ces prestations que tu vends aux entreprises (c'est d'ailleurs bien plus cher que le prix des licences des logiciels propriétaires). N'importe quelle entreprise sérieuse va avoir des contrats de maintenance à passer avec des prestataires qui vont lui assurer la bonne marche des logiciels qu'elle possède et leur évolution. Le fait qu'Apache soit librement téléchargeable ne veut pas dire que tout le monde saura s'en servir et l'entretenir correctement.

- On peut aussi vendre la distribution du produit. C'est ce qu'on paie (ça, du support et de la doc) quand on achète un pack MandrakeLinux à la FNAC par exemple. Tu paies pour le DVD pressé, le manuel papier complet, l'aide à l'installation et une hot-line tél/Internet dédiée aux clients.

- Enfin, imaginons je suis développeur dans une société qui vend des logiciels libres. Je peux tout à fait réaliser à la demande de mes clients, des extensions à mon logiciel afin qu'il s'intègre mieux à l'entreprise, où qu'il apporte d'autres fonctionnalités. Ces extensions je les fait payer. Et en plus elles seront dans la prochaine version de mon logiciel, qui sera Libre elle aussi.
En quoi un langage est-il "axé open-source" ? On voit la plupart des programmes open-source en C parce que c'est le langage le plus répandu, mais à part ça...
Enfin, tu peux dire que Python et Perl sont axés open-source car leur code source est accessible gratuitement, mais je ne suis pas sûr que ça soit ce que tu veuilles dire...
Message supprimé par son auteur.
oui on peut faire un soft open source dans n'importe quel langage, mais apres, il y a les langages standardisés ( C, C++, C# aussi je crois, ... ) et les non standardisés ( VB ... ), créés par une boite, en général déstinés à des produits bien définis.

enfin, il faut aussi différencier les langages compilables en langage machine ( langages classique: C ... ) et les interpretables ( java, python )
parceque une fois compilé en langage machine, ou se fou royalement du langage d'origine.... alors que si il est interprété, il faut savoir si la machine virtuelle qui permet l'interpretation du programme est libre ou non ( celle de java est pas libre, celle de python oui par exemple )
Citation :
Provient du message de XhaK
oui on peut faire un soft open source dans n'importe quel langage, mais apres, il y a les langages standardisés ( C, C++, C# aussi je crois, ... ) et les non standardisés ( VB ... ), créés par une boite, en général déstinés à des produits bien définis.

enfin, il faut aussi différencier les langages compilables en langage machine ( langages classique: C ... ) et les interpretables ( java, python )
parceque une fois compilé en langage machine, ou se fou royalement du langage d'origine.... alors que si il est interprété, il faut savoir si la machine virtuelle qui permet l'interpretation du programme est libre ou non ( celle de java est pas libre, celle de python oui par exemple )
1/ C# n'a rien de standardisé, c'est un langage créé par Kro$oft, à mi-chemin entre Delphi et Java

2/ Java est un langage semi-compilé, pas interprété (le compilateur Java compile les sources en byte-code - les fichiers .class - qui est ensuite interprété par la machine virtuelle Java. C'est le même principe que le Pascal défini à l'origine par Niklaus Wirth).

3/ Le fait que la machine virtuelle de Sun ne soit pas à l'heure actuelle en open-source est au coeur d'une polémique lancée par IBM. Voir les liens ci-dessous par exemple :

- http://weblogs.java.net/pub/wlg/1050
- http://weblogs.java.net/pub/wlg/1052
- http://lwn.net/Articles/73045/
- http://joust.kano.net/weblog/archives/000077.html
- http://linuxworld.com/story/45093.htm


Il existe par ailleurs des JVM open source :

- http://joeq.sourceforge.net/other_os_java.htm
Ajouts: Python est également semi-compilé (les fichiers .py sont compiles en byte-code .pyc)

Access n'est pas un langage mais une base de données, le langages des BDDs (cense etre standardise) est le SQL (Structured Query Language, langage avec specifications ANSI comme le C par exemple)

L'open source, c'est le fait de donner le code et de permettre - ou non d'ailleurs - sa modification par le pequin moyen, a partir du moment ou on fournit le code le logiciel est open source, quel que soit le langage. Ensuite il y a de petites precisions juridiques, mais un langage n'est pas "compatible open source" ou pas

Par contre un langage peut effectivement etre "open source" dans un certain sens: si les createurs du langage fournissent toutes les specifications du langage (permettant ainsi, par exemple, de creer son propre compilateur ou des "ports" de compilateurs/interpreteurs) et accessoirement les source du compilo/interpreteur "natif", on peut considerer qu'un langage est open source.
Mais rien ne force a utiliser un tel langage (comme Python ou le C) pour creer des logiciels Open Source

PS: le Python, c'est bien, mangez en, sous windows on peut meme compiler des fichiers .py en .exe
a mort le Java
Citation :
Provient du message de Jade Ylis
1/ C# n'a rien de standardisé, c'est un langage créé par Kro$oft, à mi-chemin entre Delphi et Java

2/ Java est un langage semi-compilé, pas interprété (le compilateur Java compile les sources en byte-code - les fichiers .class - qui est ensuite interprété par la machine virtuelle Java. C'est le même principe que le Pascal défini à l'origine par Niklaus Wirth).
1 -> j'avais cru comprendre que krosoft essayait de standardiser le C# doit l'espoir qu'il soit massivement adopté, pour battre Java definitivement

2 -> java est compile en byte code qui lui même est interpreté... donc c'est bien ce que je dis, java ne produit pas de code machine !
c'est certes plus rapide que de l'interpretation directe à la PHP... mais ça n'a rien à voir avec du code machine pur !

PS : python, mangez en !
Citation :
Provient du message de XhaK
2 -> java est compile en byte code qui lui même est interpreté... donc c'est bien ce que je dis, java ne produit pas de code machine !
c'est certes plus rapide que de l'interpretation directe à la PHP... mais ça n'a rien à voir avec du code machine pur !
Il n'en reste pas moins que ce n'est pas un langage interprété, mais semi-compilé

Concernant PHP, depuis PHP4, il me semble bien que le moteur PHP gère lui aussi une semi-compilation (transparente pour l'utilisateur).
Citation :
Provient du message de XhaK
PS : python, mangez en !
OUAIS Xakh coupin

En plus sur les distribs Linux et Mac OS X et +, Python est livre avec la machine Python est compatible avec tout ce qui se fait comme OS/plateformes, ou presque...
et wxPython permet de faire des interfaces graphiques VRAIMENT multiplateformes (et avec un "look" plateforme-specifique, pas comme d'autres GUI multiplateformes )
Et ya plein de projets d'implementations de Python sur des OS que personne utilise jamais


PS: wxPython est un projet issu de wxWindows/wxWidgets, langage de GUI multiplateformes pour C/C++, si vous en avez ras le cul des MFC, allez voir, c'est tres facile a apprendre et ca marche bien mieux, pour un resultat visuel identique (simplement au lieu d'y passer 15j vous y avez passe 15mn... enfin quand meme pas mais presque ). En MFC, je programme pas une UI "a la main" (sans RAD), avec wxWindows, ca se fait
Citation :
posté par Jade Ylis
C# n'a rien de standardisé, c'est un langage créé par Kro$oft, à mi-chemin entre Delphi et Java
Faux.
Par contre, M$ a effectivement rajouté énormément d'extensions propriétaires, d'où la confusion chez certains.
Citation :
Java est un langage semi-compilé, pas interprété
XhaK faisait référence aux langages produisant des exécutables autonomes et ceux nécessitants des programmes libres ou non.
Java nécessite une machine virtuelle non libre (et très lourde)
Perl et Python nécessitent des interpréteurs qui sont libres
Access est une base de donnée (médiocre) qui ne tourne que sous win32...
Citation :
Provient du message de Eldarendil
Faux.
Par contre, M$ a effectivement rajouté énormément d'extensions propriétaires, d'où la confusion chez certains.
Au temps pour moi alors.
Citation :
Provient du message de Eldarendil
XhaK faisait référence aux langages produisant des exécutables autonomes et ceux nécessitants des programmes libres ou non.
Java nécessite une machine virtuelle non libre (et très lourde)
Perl et Python nécessitent des interpréteurs qui sont libres, Access est une base de donnée (médiocre) qui ne tourne que sous win32...
La notion d'exécutables autonomes est parfois pervertie par certaines machines virtuelles n'avouant pas leur nom (cf le framework .Net d'un certain éditeur de Redmond).

Quant à parler de langage interprété, semi-compilé ou compilé, ce sont des notions bien différentes, donc utilisons les termes corrects, non ?

Enfin pour ce qui est de Java, la machine virtuelle officielle de Sun n'est pas open source, certes, mais comme je l'indiquais dans mon post, il existe des JVM open source. Et pour ce qui est de la "lourdeur", je dirais que c'est une question de coups et de douleurs... euh de goûts et de couleurs.
Citation :
Provient du message de Jade Ylis
Quant à parler de langage interprété, semi-compilé ou compilé, ce sont des notions bien différentes, donc utilisons les termes corrects, non ?
Si on ne veut en retenir qu'un, on dira que Java est interprété, pas semi-compilé (qui n'a pas réellement de sens, en réalité), de même pour Python.
Dans les deux cas, il existe une forme intermédiaire (créée par une étape explicite en Java et implicite en Python) qui a pour but une certaine optimisation du code par création d'un Bytecode plus proche de la machine que le langage explicite initial, mais aucune exécution directe du code n'est possible, il faut toujours passer par... un interpréteur
Dans les 2 cas, on pourrait fournir directement le source a un interpréteur (surement très différent de l'actuel en Java, moins en Python) et il serait capable de faire tourner le programme. Encore plus lentement qu'avec le bytecode, mais il en serait quand meme capable
Citation :
pour ce qui est de la "lourdeur", je dirais que c'est une question de coups et de douleurs... euh de goûts et de couleurs.
C'est pas un problème de gouts et couleurs mais de stats, la JVM mange énormément de ressources (en grande partie grace a leur garbage collector moisi) et peut se révéler très moyennement stable sur certaines machines, il suffit de faire des tests de perfs d'algos pour voir ca.
Citation :
Provient du message de Masklinn
Si on ne veut en retenir qu'un, on dira que Java est interprété, pas semi-compilé (qui n'a pas réellement de sens, en réalité), de même pour Python.
Dans les deux cas, il existe une forme intermédiaire (créée par une étape explicite en Java et implicite en Python) qui a pour but une certaine optimisation du code par création d'un Bytecode plus proche de la machine que le langage explicite initial, mais aucune exécution directe du code n'est possible, il faut toujours passer par... un interpréteur
Dans les 2 cas, on pourrait fournir directement le source a un interpréteur (surement très différent de l'actuel en Java, moins en Python) et il serait capable de faire tourner le programme. Encore plus lentement qu'avec le bytecode, mais il en serait quand meme capable
Mais pourquoi ne vouloir en retenir qu'un ? That's the question Je suis têtu et buté, je m'en tiens donc au fait que java est un langage semi-compilé. Question de goût, sûrement, là encore

Citation :
Provient du message de Masklinn
C'est pas un problème de gouts et couleurs mais de stats, la JVM mange énormément de ressources (en grande partie grace a leur garbage collector moisi) et peut se révéler très moyennement stable sur certaines machines, il suffit de faire des tests de perfs d'algos pour voir ca.
Alors je présente mes excuses à tous les tenants de la lourdeur de java pour ne pas trouver Java si lourd que ça après quelques années de pratique à titre professionnel et personnel
Citation :
Provient du message de Jade Ylis
Mais pourquoi ne vouloir en retenir qu'un ? That's the question Je suis têtu et buté, je m'en tiens donc au fait que java est un langage semi-compilé. Question de goût, sûrement, là encore
Citation :
ce n'est pas un langage interprété, mais semi-compilé

Je n'en ai retenu qu'un, car tu me l'as imposé

et la semi-compilation est une notion un peu étrange, à la limite parler d'optimisation ou de pré-compilation (qui est également inexact, en fait il vaudrait mieux parler de pré-interprétation) pour désigner la génération des Bytecodes OK, mais semi-compilation je trouve personnellement que ca n'a pas réellement de sens
Citation :
Alors je présente mes excuses à tous les tenants de la lourdeur de java pour ne pas trouver Java si lourd que ça après quelques années de pratique à titre professionnel et personnel
Question a 2 francs: as tu comparé des programmes java avec des programmes equivalents dans d'autres langages interprétés et comparé les lourdeurs (en termes de ressources machines) des différents interpréteurs à l'exécution?
Je me permet juste d'ajouter qu'il faut bien faire attention a la différence entre Open Source et FreeSoftware

ce sont deux chose totalement différentes

opensource veut juste dire qu'on te donne les source avec mais tu peut payer pour ça

alors que freesoftware ...

Citation :
Provient du message de Thelemys de Sade
VB.NET/Visual Basic/Basic
Java
C
C++
Delphi
C#
Access
PERL
Python
Windev

Parmis ces langages quels sont ceux axés "open source"?
heu...
perl, et phython , C et C++ sont open source (si je me trompe pas) mais tu peut faire de l'open source avec ce que tu veut...

par contre tu peut pas faire du freesoftware avec tous
puisque qu'acces doit etre par exemple soumis a une license je croit, windv aussi...bref

tout ceci ne serviras plus a rien si les brevet logiciel passe en europe...ça seras la fin des petit qui n'auront pas les moyen de ce payer une ou deux license :/
je ne pense pas qu'on parle de langages open sources ... mais de langages standardisés
C et C++ sont standardisés car n'importe qui peut consulter la norme ANSI/OSI/autre de leur définition.

et pour moi, Java reste un langage interpreté...
en effet... j'ai appris en theorie des langages et compilation était qu'un compilateur était un logiciel qui prennait en entrée un programme écris en langage de haut niveau ( java, c, c++ ... ) et avais en sortie du langage binaire compréhensible directement par l'ordinateur ( donc pas le byte code de java )

alors qu'un traducteur est un logiciel qui prend en entrée un programme écrit dans langage de haut niveau ( java ) et a en sortie un programme dans un autre langage ( bytecode par exemple )

donc ton code java n'est pas compilé, mais traduit...
mais c'est tendencieux, car vu que le byte code est compréhensible par une machine virtuelle ( serait il possible de faire un processeur qui comprenne directement le byte code ? ), alors on a tendance à dire qu'il est compilé... ce qui est donc plus ou moins vrai

reste qu'à l'heure actuelle, pour lancer un programme java, il faut que le byte code soit interprete par une machine virtuelle ( libre ou non ), ce qui en fait un langage interprete ( et donc avec des perfs qui font de mediocre à vraiment nulles comparé à du C/C++ )
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés