Vous êtes ici    News nl sv ru pl es de en

PlayOnLinux 5: Nous voulons votre opinion !

Mercredi 3 Juin 2015 à 16:51

Bonjour à tous,

Comme certains d'entre-vous le savent déjà, nous pensons sérieusement au futur de PlayOnLinux/PlayOnMac (a.k.a. PlayOnLinux 5).  La version 4 a une longue histoire et son code contient des choses qui deviennent difficiles à maintenir. Nous avons vraiment besoin d'une version stable si nous voulons continuer à vous fournir le meilleur. Si nous continuons avec PlayOnLinux v4 nous sommes certains que :

  • PlayOnLinux n'aura pas ou peu de nouvelles fonctionnalités.
  • PlayOnLinux risque d'être complètement cassé le jour ou ses dépendances ne seront plus maintenues.

Dans cette news, je vais vous expliquer l'option que nous préférons, pourquoi nous la préférons et nous allons aussi vous demander votre avis à ce sujet.

Merci de lire tout l'article avant de vous plaindre ou troller. Ce sujet est vraiment important ! Dès que vous aurez tout lu et compris le problème, n'hésitez pas à donner votre avis.

Comme certain l'ont entendu, nous pensons sérieusement passer de Python à Java. Je comprends parfaitement qu'il puisse y avoir des contestations et pour être honnête, certains membres de l'équipe étaient les premier à critiquer Java il y a quelques mois.

Cependant, il y a plusieurs raison qui nous permettent de penser que Java est une bonne solution :

  • Portabilité : Nous voulons que PlayOnLinux soit disponible sur Linux, FreeBSD, OpenBSD, Mac, ... et pourquoi pas, être prêt à fonctionner sur ARM/Android plus tard.
  • Maintenabilité :
    • Java fait pas mal de chose pour obliger les développeurs à bien faire
    • Java est un language statique. Ce qui simplifie grandement certaines tâches: refactoring, vérification de la syntaxe, audit de code...
    • Il existe des outils pour vérifier la qualité du code et la profondeur technique qui sont assez impressionants.
  • Contributions :
    • Nous avons remarqué qu'il était difficile de contribuer à PlayOnLinux v4 et nous voulons mettre en place des moyens et des guides pour que tout le monde puisse contribuer. (voyez le paragraphe "infrastructure" à la fin de la news)

PlayOnLinux est bien plus complexe qu'une simple interface graphique pour wine. Il s'agit principalement d'un ensemble d'outils qui permet d'écrire des scripts pour wine. C'est pourquoi la problématique à laquelle nous faisons face est un peu plus complexe que celle d'une interface graphique pour wine.

J'aimerais commencer par répondre aux principales inquiétudes que le passage vers Java peut soulever. Si vous voyez autre chose, n'hésitez pas à nous en faire part.

Réponses aux questions principales

Je ne veux pas installer Oracle JDK ou tout autres programme propriétaire sur mon ordinateur

À ce sujet, nous vous garantirons que PlayOnLinux v5 sera compatible avec OpenJDK JRE 8 (GPLv2)

PlayOnLinux va devenir très lent car Java est un langage  lent

Cette crainte aurait eu un sens il y a quelque années. Cependant, en 2015, Java a fait énormément de progrès. Il s'agit d'un des langages interprétés les plus rapide.

Entre autre, java est en général plus rapide que Python (http://benchmarksgame.alioth.debian.org/u64q/python.html). En outre, la branche v4 contient beaucoup de code non-optimisé. Les tests que nous avons déjà fait avec Java nous montre que ce que nous avons déjà coder est bien plus rapide que PlayOnLinux 4. Pour être honnête, il n'y a qu'un seul désagrément : la JVM prend un peu plus de temps à se lancer que l'interpréteur python.

Vous auriez dû utiliser QT! C'est plus logique.

Vous avez peut-être raison, mais notre principale problematique aujord'hui concerne plus le choix du langage et l'ensemble des dépendances qui va en découler. Actuellement, nous avons commencé à utiliser OpenJFX :

  • La librairie est Open Source
  • L'interface est personalisable avec le langage CSS.
  • L'accélération matérielle est supportée
  • Nous pourrions supporter plusieurs skin pour PlayOnLinux ou imaginer une interface à la Steam. Tout est permis.
  • Elle est portable

Inconvénients :

  • Le thème risque de ne pas complètement intégré avec votre thème système

Cependant, la conception de PlayOnLinux v5 autorise l'implémentation de plusieurs interface utilisateur et laisser ce dernier choisir. Il est donc possible d'inplémenter une autre interface en plus comme QTJambi par exemple : http://en.wikipedia.org/wiki/Qt_Jambi. (Mais ce n'est pas une priorité. Une interface console est plus importante)

Les applications Java sont moche, non intégrée au système.

Regardez le paragraphe précédent. Nous avons également posté quelques captures d'écran sur le forum anglophone et dans les commentaires. N'hésitez pas à faire part de vos retours.

Java n'est pas sûr, il y a énormément de patch de sécurité

La raison de cela est que Java possède aussi un mode sandbox qui autorise le navigateur à éxecuter un programme sans l'autorisation de l'utilisateur. Nous ne voulons pas exécuter PlayOnLinux dans votre navigateur web, donc ce n'est pas grave si vous ne voulez pas installer le plugin du navigateur. Ceci ramène donc Java au même niveau de risque que tout autre langage interprêté.

Proposition d'une nouvelle architecture

Nous souhaitons remplacer les script bash avec des scripts python.

  • Les scripts python seront directement exécuter par Java (possible et très simple grace à Jython).
  • Nous allons garder une petite partie du code de PlayOnLinux v4 pour assurer la rétro-compatibilité (après quelques nettoyages, bien entendu)
  • De gros effort sont fourni pour garantir une bonne qualité du code.

 

Donc vous voulez exécuter Wine dans Bash dans python dans Java :-O.

C'est là que Jython intervient. Jython n'utilise pas l'interpréteur installé sur votre ordinateur. En fait, il s'agit d'une librairie qui va compiler votre code python en classe Java durant l'exécution. Pour faire simple, il est capable de lancer vos script python directement dans la machine virtuel de Java sans dépendre de Python. En réalité, il y aura moins de couche qu'il y avait actuellement car les scripts seront capable d'exécuter directement du code Java sans nécessiter la mise en place de tout autre moyen de communication.

 

Tâche qui ont déjà été faite

Infrastructure

Nous avons mis en place trois outils :

Programmation

Nous avons déjà développé certaine choses comme preuve du concept. Si vous êtes d'accord avec nous, nous continurons dans cette voie pour vous proposer la meilleurs version de PlayOnLinux dans les prochains mois.

  • Le coeur de PlayOnLinux
    • Injection de dépendances
    • Tests unitaires
  • Le gestionnaire de scripts (toutes les fonctions ne sont pas encore implémentées)
    • Support des scripts python
    • Compatibilité des script PlayOnLinux Legacy (v4)
    • Exemples de scripts
  • Fenêtre d'installation (avec téléchargement à distance)
  • D'autre choses importantes
    • Vérification des signatures GPG des scripts
    • Analyseur complet de la base de registre de wine (cela signifie que vous serrez capables de naviguer dedans avec peu de ligne de script)
    • Gestion de wine : Création des wineprefix avec une barre de progression, ...
    • Gestion du système de fichier (copie et téléchargement avec une barre de progression)

 

Conclusion

Actuellement, nous sommes confiants sur le fait que cette version sera plus performante que la v4.

  • Le coeur actuel est plus rapide
  • Les scripts sont plus clairs
  • Nous avons un code très propre (pour le moment)
  • Nous avons une infrastructures propre qui nous permet d'être efficace dans notre travail
  • Des personnes extérieures ont déjà montré  un interêt particulier pour participer au développement de la v5 (en proposant notamment quelques patchs)

Cependant, nous souhaitons avoir votre opinion. Merci de poster vos commentaires et sentez vous libre de donner votre avis sur le sujet. Merci de donner des arguments pour que nous puissions progresser.

Maintenant, il est temps de commenter !

 

 

Traduction de la news d'origine par Tutul... Vous pouvez aussi allez lire les commentaires déjà présents sur la news d'origine ;)

Tutul

Les commentaires

Auteur Réponses
obitwo Mercredi 3 Juin 2015 à 21:38

Pour ma part, j'ai toujours trouvé que Java semblait plus lourd que d'autres languages. Cependant cela ne me dérange nullement. PlayOnLinux a toujours été un très bon logiciel, et je suis convaincu que vous ferez les meilleurs choix pour la suite.

Bon courrage.

goraxmax Mercredi 3 Juin 2015 à 22:04

Excellent choix!

J'attend avec impatience les premières versions pour les systèmes BSD, voir Android!

 

Bon courage pour tout ce travail et merci pour tout ce qui a deja été fait!

 

Fred Vendredi 5 Juin 2015 à 11:06

Java permet de faire du code très propre et ça c'est bien pour la maintenabilité.

Ce que je n'aime pas avec Java, c'est que non seulement la JVM prend du temps à se lancer mais la consommation en RAM est assez élevé.

Personnellement j'aurai opté pour du C++ avec du QT ou GTK.

Mais bon, après si l'interface est suffisamment soignée, le resultat devrait être sympa quand même.

 

Bon courage !

Letho Vendredi 12 Juin 2015 à 21:34

Anonymous

En tant que développeur Java, je ne peux que dire… weeeeeeeeeeeeeeeeeeeeeeeee ! Et oui, Jenkins et SonarQube sont de merveilleux outils.

Je n'ai pas énormément de temps en ce moment, mais si je peux contribuer à l'occasion je le ferai avec plaisir. Et je vais de ce pas jeter un œil aux sources de la v5 smiley

Benjamin - Metatrader 4 Mercredi 17 Juin 2015 à 16:21

Bonjour.

En temps que utilisateur intensifs de PlayOnLinux avec 40 MetaTrader 4 pour du Trading Forex, je veux bien du Java, mais a une condition, qu'il ne me fasse pas chier !

En effet, Java a la sale manie d'être lourd et lent pour les calculs.

Si j'utilisais Java, j'aurais besoin de 3-4 fois plus de puissances de calcul et 3-4 fois plus de mémoire.

Généralement; les codes ne sont pas assez optimisé en java et les developpeurs s'arrête au bite code.

Pour le calcul, il faut compiler.

Ma conclusion est donc de tester sur mon supercalculateur avant de dire que c'est plus rapide.

Je suis prêt à participer pour un super benchmark-de-la-mort-qui-tue.

PS Config 400Go De RAM, 26cores réel je crois, 4To de disques en fichier temporaires, 24To de datastore.

Il y a de quoi tester.

++

Benjamin.

Quentin PÂRIS Mercredi 17 Juin 2015 à 17:50

Admin

Avec plaisir !

On teste Java contre Python ? Tu veux tester quoi comme genre de calculs ?

 

Jul Vendredi 19 Juin 2015 à 21:07

Personnelement, j'ai encore quelques appréhension sur cette migration.

Je pense que l'essentiel d'un wrapper est d'être pratique et léger (ayant un impact limité sur le système, y compris en mémoire vive). Au niveau des performances, je ne pense pas que ca soit un facteur déterminant pour une interface graphique à WINE, qui lui pour le coups doit être rapide.

Java est très certainement plus performant en calcul pur, mais je doute que la JVM soit plus léger que l'interpréteur Python, notamment en RAM.

Et enfin, avoir à installer le gros OpenJDK JRE, c'est  lourd :$, tandis que Python est souvent fournis les OS Unix, et est beaucoup plus petit.

Je comprends très bien la nécessité d'une réécriture de PoL, mais pourquoi pas en Ruby comme par exemple Vagrant :)? Ou comme dis plus haut, en Qt/C++, portable, léger et performant. Ou finalement migrer vers Python3 :p

 

En tous les cas merci pour votre travail formidable, facilitant la vie à des millions d'utilisateurs :D !

Quentin PÂRIS Samedi 20 Juin 2015 à 1:23

Admin

Je me suis pas mal exprimé en Anglais sur tous ces sujets, très peu en français donc je vais prendre le temps de répondre du mieux que je peux.

N'hésite pas à aller lire les news anglaise pour plus d'infos

 

Je pense que l'essentiel d'un wrapper est d'être pratique et léger (ayant un impact limité sur le système, y compris en mémoire vive). Au niveau des performances, je ne pense pas que ca soit un facteur déterminant pour une interface graphique à WINE, qui lui pour le coups doit être rapide.

Sur ce point la, je te rejoins complètement.

 

Java est très certainement plus performant en calcul pur, mais je doute que la JVM soit plus léger que l'interpréteur Python, notamment en RAM.

Le truc, c'est qu'on a aucun moyen de le savoir, et qu'on le saura probablement jamais. Par contre, j'ai quelques pistes pour répondre à cette question :

  • Il est impossible de savoir combien consomme réellement PlayOnLinux 4 en RAM, car PlayOnLinux 4 crée une multitude de process bash (et autre) qui sont impossibles à monitorer.
  • On sait exactement combien consomme PlayOnLinux 5 en RAM et on peut le surveiller
  • On peut demander à la JVM de ne pas prendre plus que X Mo de ram (X est réglable). PlayOnLinux 5 tourne pour le moment avec seulement 128M de ram (en plus de la mémoire que la VM prend, on doit donc arrivers vers 200M)

Donc en gros, je peux pas t'assurer que POL5 prend moins de ram que POL4, même si c'est très probable. Par contre, je peux te dire exactement combien POL5 demande en RAM et je peux aussi contrôler plus finement la façon dont la mémoire doit être gérée. Ce qui est quand même une approche bien plus saine.

 

Et enfin, avoir à installer le gros OpenJDK JRE, c'est  lourd :$, tandis que Python est souvent fournis les OS Unix, et est beaucoup plus petit.

La par contre, je suis pas totalement d'accord. OpenJDK JRE, ça fait maximum 200Mo (librairie graphique incluse, et j'ai pas encore du tout chercher à réduire la taille du paquet), c'est moins qu'une version de Wine. Je tiens à rappeler que PlayOnLinux installe des dizaines de versions de wine. Python à lui tout seul (sans QT/GTK donc), ça fait déjà ~200Mo auquel il faut rajouter toutes les dépendances graphiques.

PlayOnLinux n'est compatible qu'avec Python 2, qui ne va pas être inclus de base dans les prochaines distribution. Donc le fait que python soit fournis avec les OS unix n'est plus un argument qui va rester valable.

 

Je comprends très bien la nécessité d'une réécriture de PoL, mais pourquoi pas en Ruby comme par exemple Vagrant :)? Ou comme dis plus haut, en Qt/C++, portable, léger et performant. Ou finalement migrer vers Python3 :p

Ruby souffre des même problème que Python. Ce sont des langages dynamiquement typés. C'est bien pour des petits projets, mais quand on commence à vouloir apporter un certain nombre de garantie et de robustesse aux utilisateurs, ça commence à poser de sérieux problèmes. C'est pour ça que nous avions écarté ces deux languages, du moins pour la partie "hard" de POL.

Le C++, c'est pas vraiment une option car les efforts à apporter pour le développement seraient bien trop importants. Notamment l'intégration C++/Python est loin d'être aussi facile que ce qu'on peut faire avec Java/Jython

 

J'espère avoir a peu près répondu à tes questions. Je te suggères si tu le souhaite d'essayer le dernier snapshot de POLv5, et de me dire si tu ressens cette "lourdeur".

 

Bonne soirée :)

 

 

BlondVador Mardi 23 Juin 2015 à 3:09

Modérateur

Les arguments se tiennent, le choix semble mûrement réfléchis, je n'y vois aucune opposition.

J'ajouterai qu'avec le marché des développeurs Java en plein essor, ça va être plus facile de trouver des contributeurs.

 

 

Jul Jeudi 25 Juin 2015 à 19:38

Merci pour ta réponse Quentin!

Tu as sans doute raison pour Java. J'ai aussi fait un rapide tours vers sur le sujet Anglais, j'ai remarqué que certains on évoqué Go avec Qt, un nouveau language intéressant pour un nouveau projet aurait été parfait, par contre c'est vrai qu'il ne bénéficie pas de tout l'écosystème d'un langage plus ancien, et surtout qu'il faut savoir le maitriser...

Bonne continuation, le projet est très prometteur. J'ai en tout cas hâte d'un petit banc d'essai "benchmark" smiley

Quentin PÂRIS Jeudi 25 Juin 2015 à 21:01

Admin

Tiens je t'invites à lire ça si ça t'intéresse pour un mini benchmark :) https://www.playonlinux.com/en/topic-13234-PlayOnLinux_developement_Behind_the_scene.html

geekmps Lundi 13 Juillet 2015 à 17:19

C'est sympa de poser la question.

Qu'est ce que ce plaidoyer pour Java ? Est-ce une vraie question ?
Je trouve l'argumentation à l'affirmation "Vous auriez dû utiliser QT! C'est plus logique." très dirigée.

Bref, faites ce qu'il vous semble le plus pérenne. Java est un choix que je n'aurais pas fait. Mais bon, je suis opposé à Java de longue date (presque depuis sa création).

Quentin PÂRIS Lundi 13 Juillet 2015 à 19:44

Admin

C'était au départ une vraie question qui s'est peu à peu transformé en série de justifications / explications.

Pour comprendre vraiment le contexte, je pense qu'il faut regarder au niveau de la communauté anglaise.

Pour ce qui est de l'interface graphique, il y aura finalement deux implémentations : JavaFX et GTK (complètement native). Dont le problème de l'interface graphique ne se pose plus trop.

andykimpe Lundi 21 Décembre 2015 à 21:27

Anonymous

Moi je dit non a java

et je préfére préciser que si vous sortez officiellement cette version

je ne l'installerais pas

je resterais avec ma version 4 qui pour moi est très bien et puis c'est tout

Quentin PÂRIS Mercredi 23 Décembre 2015 à 13:19

Admin

 

Moi je dit non a java

et je préfére préciser que si vous sortez officiellement cette version

je ne l'installerais pas

je resterais avec ma version 4 qui pour moi est très bien et puis c'est tout

Écoute, je vais pas me fatiguer à refaire des pavés de texte pour expliquer ce que j'ai déjà expliqué 120 fois en anglais, surtout pas face à des objections aussi peu argumentées et détaillées. Je n'ai plus le temps ni l'énergie pour ça.

Si t'as des vrais objections que je n'ai pas encore traité dans les 174 commentaires de la news en anglais, j'y répondrai avec plaisir. Sinon, je suis désolé mais je ne peux plus rien faire.

Si POL 4 te va, très bien. Sache juste que le support sera encore plus limité qu'aujourd'hui, faute de moyens de notre part. (Pour rappel, on gère ce projet sur notre temps libre).

 

skype login Jeudi 21 September 2017 à 5:06

Anonymous

Thanks for sharing these useful information! This is really interesting information for me.  skype login

Poster un commentaire

Erreur

You must be logged in to post a comment