Poser 12 will move on to Python 3
Poser has supported Python automations since version 4, and over time, the supported Python version was sometimes updated to a newer version, breaking existing tools and plug-ins created by third parties. This is usually not well received by the community, since people start relying on 3rd party plug-ins to perform action automations that make life much easier, or sometimes, even things Poser can’t do on its own.
Well, looks like Poser 12 will be one of these cases. As of today, Charles Taylor (Nerd3D) has publicly announced that Poser will finally move on from old school Python 2.7, even because Python 2 has reached its official end-of-life retirement by the end of last year. That is, Python 2 is officially no longer supported by the makers. It was given a 10 years leeway, so people could move their code to Python 3, and that grace period has ended last December.
Having that said, we also have another related issue when it comes to Poser Python developers. Most of them have retired in the recent years, to include PhilC, ShaderWorks, Dimension3D (passed away), and now also NetherWorks (moved to another job). This means none of these developers will be updating their existing scripts for Poser 12, so their entire line-up with simply stop working. That means basically all existing Python scripts will no longer work in Poser 12.
This is the kind of thing everybody unconsciously knew would eventually happen at the back of their heads, but we tend to filter that out, hoping for it to fall over some distant time in the future that will never come. With the official retirement of Python 2 last year, I knew that time was about to come for Poser, and now it is official. Taylor didn’t mention which Python version will be adopted, but I would assume it would be the latest 3.x.
I see this as both great and terrible at the same time. Great because Python 3 is not only the current standard, but it is also faster and supports many new features Poser could benefit from. However, loosing all of my existing tool automations for content creation feels dreadful, especially when we know they will never be updated.
But fear not - to all the people who still want to keep using their existing Python 2 arsenal in Poser, I have a simple solution. Each Poser installation is isolated from each other, so we can keep multiple versions installed. I actually have Poser 7, 10 and 11 installed, and they don’t interfere with each other. As a matter of fact, most content creators tend to have multiple versions installed for product testing purposes. So we can keep Poser 11 installed and use our Python 2 scripts there. I know, that’s probably not what you wanted to hear, but hey, it’s better than nothing.
Now, from a Python developer’s perspective, this is definitely a change for the better. I have started straight from Python 3, and it has been a royal pain having to seek for obscure tools and information on ancient Python 2 every time I created a new script for Poser. Not to mention I could never use modern implementations of the tools, because I could only used ancient versions that were supported by Python 2 from decades ago. Since old and outdated tools were the only things we could use in Poser, you can see that can be come a compromise.
There is also the issue of graphical interfaces supported in Python 2 that can often cause cross platform issues. Tkinter for Python 2.7 barely works nowadays, since it has ceased to be updated long ago. Sometimes even simple buttons won’t work as expected, so I gave up on it.
More recently, Poser now supports the modern WX interface, which, I believe, is what Poser 11 uses under the hood on its own graphical interface. This allows Python plug-ins to seamlessly integrate with Poser 11, and even dock natively into it.
However, it is not all wine and roses when it comes to WX. When I released my recent “Scatter Tool” plug-in for Poser 11, I was soon to find out that WX doesn’t work correctly in MacOS. The incompatibilities ranged from missing features, all the way to features that simply didn’t work (or misbehaved) in MacOS off the box. For instance, we can double-click on a WX listbox in Windows, but that has no effect in MacOS. We can skin the WX interface in Windows, but not in MacOS. Even the interface layout mechanics that were meant to make the process universal didn’t work as expected in MacOs. You get the point - it’s a buggy mess of unfinished and missing features. This becomes aggravated when I only have a Windows PC, so I cannot test things on a Mac to check for incompatibilities. I have to rely on other people who were kind enough to volunteer for helping with MacOS.
With all the pros and cons, I can imagine the Poser community may not receive this change very well. Even with the official announcement that Poser will move on to Python 3, some users may only understand what this means when they try running the older plug-ins they already own in the upcoming Poser 12, and see that they no longer work. That’s basically the bottom line. Perhaps only Python developers like me will be able to see any good on this, because one has to write their own code to understand the advantages. On the perspective of script users, they don’t care how it was created - they just care for what it does.
Historically, this will be the very first time when Poser changes the Python version, and none of the original script makers will be present to update their tools. So this is that thing we all knew would eventually happen, but we kept filtering it out as some future event that will never come. With Poser 12, it will come, and now it is official.
Being both a Poser user and a Python developer, I am both frilled and terrified. I don’t think I will have much trouble adapting my Poser Python tools from version 2 to 3, though. Being a computer scientist, I wrote my code following best practices from the industry, so I expect very few changes will be required. Nonetheless, what I fear is all the code wrote by other people that I have no access to, and therefore cannot be changed - all the extended Poser functionality that will be lost.
However, I can see this as both a loss and an opportunity. I could attempt to recreate all these wonderful Python tools left by others, now using modern Python 3 with all of the latest features and better performance. I can also hope other people will try the same, and I know I don’t have to wait for others if it’s something I can do myself. It’s a choice between just complaining, or instead doing something about it. I plan on doing something about it.
That doesn’t mean I will stop making Poser contents, like clothing, body sculpts, and the characters you can find in my store, but I might concentrate more on Python coding when the time comes. So much to do, so little time...
Poser has supported Python automations since version 4, and over time, the supported Python version was sometimes updated to a newer version, breaking existing tools and plug-ins created by third parties. This is usually not well received by the community, since people start relying on 3rd party plug-ins to perform action automations that make life much easier, or sometimes, even things Poser can’t do on its own.
Well, looks like Poser 12 will be one of these cases. As of today, Charles Taylor (Nerd3D) has publicly announced that Poser will finally move on from old school Python 2.7, even because Python 2 has reached its official end-of-life retirement by the end of last year. That is, Python 2 is officially no longer supported by the makers. It was given a 10 years leeway, so people could move their code to Python 3, and that grace period has ended last December.
Having that said, we also have another related issue when it comes to Poser Python developers. Most of them have retired in the recent years, to include PhilC, ShaderWorks, Dimension3D (passed away), and now also NetherWorks (moved to another job). This means none of these developers will be updating their existing scripts for Poser 12, so their entire line-up with simply stop working. That means basically all existing Python scripts will no longer work in Poser 12.
This is the kind of thing everybody unconsciously knew would eventually happen at the back of their heads, but we tend to filter that out, hoping for it to fall over some distant time in the future that will never come. With the official retirement of Python 2 last year, I knew that time was about to come for Poser, and now it is official. Taylor didn’t mention which Python version will be adopted, but I would assume it would be the latest 3.x.
I see this as both great and terrible at the same time. Great because Python 3 is not only the current standard, but it is also faster and supports many new features Poser could benefit from. However, loosing all of my existing tool automations for content creation feels dreadful, especially when we know they will never be updated.
But fear not - to all the people who still want to keep using their existing Python 2 arsenal in Poser, I have a simple solution. Each Poser installation is isolated from each other, so we can keep multiple versions installed. I actually have Poser 7, 10 and 11 installed, and they don’t interfere with each other. As a matter of fact, most content creators tend to have multiple versions installed for product testing purposes. So we can keep Poser 11 installed and use our Python 2 scripts there. I know, that’s probably not what you wanted to hear, but hey, it’s better than nothing.
Now, from a Python developer’s perspective, this is definitely a change for the better. I have started straight from Python 3, and it has been a royal pain having to seek for obscure tools and information on ancient Python 2 every time I created a new script for Poser. Not to mention I could never use modern implementations of the tools, because I could only used ancient versions that were supported by Python 2 from decades ago. Since old and outdated tools were the only things we could use in Poser, you can see that can be come a compromise.
There is also the issue of graphical interfaces supported in Python 2 that can often cause cross platform issues. Tkinter for Python 2.7 barely works nowadays, since it has ceased to be updated long ago. Sometimes even simple buttons won’t work as expected, so I gave up on it.
More recently, Poser now supports the modern WX interface, which, I believe, is what Poser 11 uses under the hood on its own graphical interface. This allows Python plug-ins to seamlessly integrate with Poser 11, and even dock natively into it.
However, it is not all wine and roses when it comes to WX. When I released my recent “Scatter Tool” plug-in for Poser 11, I was soon to find out that WX doesn’t work correctly in MacOS. The incompatibilities ranged from missing features, all the way to features that simply didn’t work (or misbehaved) in MacOS off the box. For instance, we can double-click on a WX listbox in Windows, but that has no effect in MacOS. We can skin the WX interface in Windows, but not in MacOS. Even the interface layout mechanics that were meant to make the process universal didn’t work as expected in MacOs. You get the point - it’s a buggy mess of unfinished and missing features. This becomes aggravated when I only have a Windows PC, so I cannot test things on a Mac to check for incompatibilities. I have to rely on other people who were kind enough to volunteer for helping with MacOS.
With all the pros and cons, I can imagine the Poser community may not receive this change very well. Even with the official announcement that Poser will move on to Python 3, some users may only understand what this means when they try running the older plug-ins they already own in the upcoming Poser 12, and see that they no longer work. That’s basically the bottom line. Perhaps only Python developers like me will be able to see any good on this, because one has to write their own code to understand the advantages. On the perspective of script users, they don’t care how it was created - they just care for what it does.
Historically, this will be the very first time when Poser changes the Python version, and none of the original script makers will be present to update their tools. So this is that thing we all knew would eventually happen, but we kept filtering it out as some future event that will never come. With Poser 12, it will come, and now it is official.
Being both a Poser user and a Python developer, I am both frilled and terrified. I don’t think I will have much trouble adapting my Poser Python tools from version 2 to 3, though. Being a computer scientist, I wrote my code following best practices from the industry, so I expect very few changes will be required. Nonetheless, what I fear is all the code wrote by other people that I have no access to, and therefore cannot be changed - all the extended Poser functionality that will be lost.
However, I can see this as both a loss and an opportunity. I could attempt to recreate all these wonderful Python tools left by others, now using modern Python 3 with all of the latest features and better performance. I can also hope other people will try the same, and I know I don’t have to wait for others if it’s something I can do myself. It’s a choice between just complaining, or instead doing something about it. I plan on doing something about it.
That doesn’t mean I will stop making Poser contents, like clothing, body sculpts, and the characters you can find in my store, but I might concentrate more on Python coding when the time comes. So much to do, so little time...