Good question Henri.
I am so new here too so I have to throw in my 2 cents. So the question is if and when we can switch to all develop the 4.x.. Or can we ever?
I think the most simple answer is that there are still some open issues to solve on V4, and it needs more testing still.
A little longer answer is that we need a long enough time to harden and stabilize the new V4 platform. This is a typical situation with feature rich programs that two versions have to co-exist for a suprisingly long time. V4 is a pilot and beta and we have to prove and test that it can take care of the most important functions in V3 before we make the switch.
But it is up to us to decide. Maybe mostly Randy and Dirk, as I am only a 57 year on on-job training :-) I start to have a very good understanding of the backend code but I dont know nearly enough about the echo-system yet. I still find out about new features all the time. As said, this is a very feature rich software.
We should perhaps list and prioritize the issues preventing us from joining forces. What are the issues that we need to solve before we could consider a switch? What do we need to do to make it a common platform for us to all develop in?
There is a more human issue: its not easy to develop in someone elses github. I have tried to keep the main program picochess.py as unchanged as possible, but there are changes that were necessary due to details given below. It should indeed be possible for us to all develop only one version. I have sent out github invites to some already, and I will send out developer invites to everyone/anyone who can make code changes. The only thing we have to keep in mind if we all develop the same version is that we have to use branches and PRs when developing and coding so that we dont mix things up.
— Johan
PS Some tech details
The old chess library can never go higher than Python 3.8 (not sure if it was exactlyl that version). It is therefore just a question of time until we have a Python platform issue on our hands as the current implementation is stuck in an old Python. You can always run it in virtual environments etc, but development might become challeng at some point.
There is a new async architecture replacing the threads and changing the messaging system. And picochess now uses the latest version of the chess library which unfortunately is not at all like the existing one. The new chess library has given us many surprises. It was not simply an issue of updating some function calls, it forced me to rewrite the entire uci communication and create a totally new analysis background process (a totally new background eternal brain for picotutor). … There could still be stability issues, although the playing and analysis, and the messaging system have been stable now for a while.
In addition to the UciEngine rewrite the Picotutor was also using the old chess library. I have rewritten the Picotutor as well trying to take detailed care that the evaluation algorithm is still the same Cambridge based one. Now the Picotutor also uses the UciEngine, so next time the chess library changes, there will only be one level to change.
To summarize the technical changes. Picotutor and Uciengine are quite rewritten. Ideally they should not have affected picochess.py main, but they did, especially the way moves are being made, and how analysis is received back. The eboard and the state handling in picochess.py should be quite similar still.
One example of a new feature is that Tutor stores the game comments and at the end of the game they are written to the PGN file.
DS