Edit: apparently there are some people that do not want to play the game and decided to flood the poll. Fair enough. The poll is now closed. Please comment instead.
Hi everybody!
As some of you have heard about it, we are seriously thinking about
the future version of PlayOnLinux (a.k.a. PlayOnLinux 5. The version 4
has a long history and the code contains stuff that makes it very hard
to maintain. We really need to have a more stable version if we want to
continue to give you the best. If we continue working on PlayOnLinux v4
we are assuming that:
- PlayOnLinux will no longer have new features
- PlayOnLinux may become completely broken one day
In this piece of news, I'm going to explain the option we
prefer, why are we prefering it and also we are going to ask you if you
agree or not.
Please read the whole article before
complaining, trolling. It is a really important topic! Once you have
read everything and you understand the problem, fell free to send
comments and to vote.
As many of you may have heard, we are seriously thinking about
switching from Python to Java. I perfectly understand some concerns and
to be honest, I was the first to criticize Java even few months ago.
However there are several reasons that let us think that Java is the right choice for us:
- Portability: We want PlayOnLinux to be
accessible on Linux, FreeBSD, OpenBSD, Mac, ... and why not, being
prepared to run on ARM/Android devices later.
- Maintenability
- Java do a lot of things to force developers to do things great
- Java is statically typed. It is a lot easier to do simple task like refactoring, code-checking, ...
- I have recently discovered the tools that exists Java to measure
the code quality and the technical debt and to be honest, it is just
impressive. You may have a look at this end of this news (SonarQube)
- Contributions
- We've noticed that there were hardly any contribution for
PlayOnLinux v4 and we target to make some really infrastructure and
guidelines so that everyone contribute. (See "infrastructure" paragraph
at the end of this news)
PlayOnLinux is a lot more complex than just a GUI for wine. It
is mainly a set of tools allowing you to write very powerful scripts.
That is why it is a little more complicated than
just a GUI for wine.
Responses to the main concerns
I don't want to install Oracle JDK or any closed program on my computer
We are going to guarantee you that PlayOnLinux v5 is compatible with OpenJDK (GPLv2)
PlayOnLinux will become very slow because Java is very slow
I can ensure you that this is wrong.
Java is a lot faster than Python in general (http://benchmarksgame.alioth.debian.org/u64q/python.html).
Moreover, the v4 branch has a lot of non optimal code. The tests we
have already done with Java is showing us than what we have developed so
fare behave a lot faster that
PlayOnLinux 4. To be honest, there is only one drawback: the JVM takes a little more time to start than the python interpreter.
You should have used QT! That makes more sense.
You may be right, but I'm talking about the language here, not about
the graphical interface. So far, we've started to work with OpenJFX:
- It is Open Source
- It is customisable with some CSS
- It supports GPU acceleration
- We could support different skins for PlayOnLinux or imagine a Steam-Like interface. Everything is possible!
- It is portable
Drawbacks
- It may not be fully integrated with your Desktop theme
However, the design of PlayOnLinux v5 perfectly allows to
implement several user interface and let users chose the one they want.
So it is perfectly possible to implement a QT interface with QTJambi for
example: http://en.wikipedia.org/wiki/Qt_Jambi. (But it is not a priority. A command line interface is more important)
Java applications are ugly, not integrated to the system.
You may be talking about Swing. In our case, we are planning to use different interfaces that look a lot better.
Java is insecure, there are so many security patches
The reason for that is that Java also has a "sandbox" mod which is
often used to allow browser to execute some Java code without the
approval of the user. We do not want to run PlayOnLinux on your web
browser, so that's fine if you disable your browser plugin.
Proposal of a new design
A image is better to start. We plan to replace
bash script with
python scripts.
- Python scripts will be directly run by Java (yes it is possible thanks to Jython!).
- We are going to get a small part of PlayOnLinux v4 code just for backward compatibility (after some cleanup of course)
- A lot of effort are going to be made to ensure the good quality of the code.
So you plan to run Wine inside Bash inside python inside Java :-O.
Of course not, that is where Jython comes. Jython is not using your
system python at all! In fact it is a library that compile your python
code into Java class on runtime. Basically, it means than it can just
run your python script directly on the Java Virtual Machine without
depending on Python. In fact, there will be less layer than there are
today because the scripts will be able to execute Java codes directly
without needing to create any sockets or other stuff like that.
Tasks that have already been done so far
Infrastructure
We have set up two tools:
- Jenkins (http://www.playonlinux.org:8080). This tool will periodically run unit tests to be sure that the code stays in a stable state
- SonarQube (http://www.playonlinux.org:9000).
This tool will periodically scan the whole code to measure its quality.
It is a really powerful tool that is giving us precious advice.
- GitHub (https://github.com/PlayOnLinux/POL-POM-5/)
Programing
We have developed the following component as a proof of concept. If
you agree with us, we are going to continue on that way to be able to
propose you the best version of PlayOnLinux in the next few months.
- PlayOnLinux core
- Dependency injection
- Unit test
- PlayOnLinux core script management (all keywords are not yet implemented though)
- PlayOnLinux Python script compatibility
- PlayOnLinux Legacy (v4) script compatiblity
- Script exemples
- Install window (with remote downloading)
- Other important stuff
- GPG Script signature check
- Complete wine registry parser (it means that you are going to be able to browse the registry with a very few line of script)
- Wine management: Create a prefix with a progressbar, ...
- Filesystem management (Copy with progressbar, download with progressbar)
Conclusion
So far, I'm pretty confident that this version can perform a lot better than v4.
- The core we have is a lot faster
- The scripts are smoother
- We have a really clean code (for the moment at least)
- We have a really clean infrastructure
- Some external people have already shown interest in contributing to v5 code (by sending small patches)
However, I want to have your opinion about this choice. Please
send the most comment as you can and talk freely. Please provide
arguments with your commentary so that we can progress.
Now the time has come to vote!
Run Microsoft Windows Applications and Games on Mac, Linux or ChromeOS save up to 20% off
CodeWeavers CrossOver+ today.