• Welcome to the Community Forums at HiveWire 3D! Please note that the user name you choose for our forum will be displayed to the public. Our store was closed as January 4, 2021. You can find HiveWire 3D and Lisa's Botanicals products, as well as many of our Contributing Artists, at Renderosity. This thread lists where many are now selling their products. Renderosity is generously putting products which were purchased at HiveWire 3D and are now sold at their store into customer accounts by gifting them. This is not an overnight process so please be patient, if you have already emailed them about this. If you have NOT emailed them, please see the 2nd post in this thread for instructions on what you need to do

Poser 12 will switch to Python 3!

Ken1171

Esteemed
Contributing Artist
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...
 

English Bob

Adventurous
Thanks for the heads-up and your comprehensive analysis of the situation. As you say, it was inevitable, and it's going to be painful.

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 do the same, for Python compatibility and other reasons. One problem for me is that Poser 7 won't reliably open a PZ3 scene saved by Poser 11, although library items seem ok as far as my experience goes. Posers 10 and 11 can be swapped between just by ignoring the warning message. Hopefully Poser 12 won't make changes that prevent inter-operability.
 

Ken1171

Esteemed
Contributing Artist
Hopefully Poser 12 won't make changes that prevent inter-operability.

In a way, Poser has been quite faithful to the community when it comes to backwards compatibility, almost to a fault. However, it was pure coincidence that Rendo now owns Poser just when Python 2 has reached it's natural end-of-life, and a new Poser version is on the making. It would be incredibly irresponsible for them to keep Python 2 when the rest of the world has moved on to 3.

It was, therefore, a necessary evil. I am just not sure how the general public will receive this, since some may jump to the conclusion that it was a possibility for Rendo to keep Python 2, and that this would had been an arbitrary decision out of whim. I only know this is not the case because I am a Python developer.

So I wrote this little article with hopes of making people understand that Rendo had no choice on this. Maybe it will be easy on people if they know this couldn't be helped, because you know how severe this will be to all of us. Right now I can think of a few scripts I can't live without...
 

Miss B

Drawing Life 1 Pixel at a Time
CV-BEE
I guess the AVFix Snarly came up with recently, was only created to work with scripts in P11.3, and probably won't work for P12 when it comes out.
 

Ken1171

Esteemed
Contributing Artist
I guess the AVFix Snarly came up with recently, was only created to work with scripts in P11.3, and probably won't work for P12 when it comes out.

When it comes to that, we cannot do anything about it until P12 comes out. That's because PoserPython scripts can only run inside of Poser, so we cannot develop anything for a program we don't have. But perhaps that won't be a problem, since Snarly is still active in the community. He will probably update the script.
 

Miss B

Drawing Life 1 Pixel at a Time
CV-BEE
Hopefully he will.
FingersCrossed.png
 

Janet

Dances with Bees
Contributing Artist
Keeping multiple installs of Poser makes a lot of sense. Thank you for the update.
 

Miss B

Drawing Life 1 Pixel at a Time
CV-BEE
Oh is THAT what it fixes? I didn't open it up to look at it, so wasn't sure what the fix actually did.
 

Ken1171

Esteemed
Contributing Artist
Oh is THAT what it fixes? I didn't open it up to look at it, so wasn't sure what the fix actually did.

The script is compiled, so I can't see what it does, but I ran Poser with and without it, keeping an eye on the Poser version string. That's how I figured what it does, and it's very simple. Snarly certainly takes the merit for figuring the cause by himself, but the actual fix is trivial when it comes to implementation. So no worries about Poser 12 when it comes to that! Now that I know what it does, anyone could write it. ^___^
 

Hornet3d

Wise
Well yes, you could run multiple copies of Poser but the alternative may well be that users do not upgrade to Poser 12 so it is definitely a two edged sword. I can see why this decision has been made but unless Rendo come up with either a 'few must' have features or a major tidy up of the features that Poser already has the take up might be very slow. Add to that the fact that it is likely to be launched at a time when the whole world is in the grip of a recession, selling Poser 12 may be a real challenge. Of course this will have no impact on those that use Poser out of the box with no add ons or scripts and I wonder just how many users do exactly what, for me the loss of a batch of NetherWorks scripts is going to make me question making the upgrade.

Not trying to knock Poser or Rendo, in fact in many ways I feel sorry for Rendo who are clearly trying to keep Poser alive at a time when there is almost certainly a major downturn in non essential purchases.
 

Miss B

Drawing Life 1 Pixel at a Time
CV-BEE
The script is compiled, so I can't see what it does, but I ran Poser with and without it, keeping an eye on the Poser version string. That's how I figured what it does, and it's very simple. Snarly certainly takes the merit for figuring the cause by himself, but the actual fix is trivial when it comes to implementation. So no worries about Poser 12 when it comes to that! Now that I know what it does, anyone could write it. ^___^
Ahhh, I didn't realize he had compiled it. OK as long as you know what it did, we're one step ahead. ;)
 

Miss B

Drawing Life 1 Pixel at a Time
CV-BEE
. . . for me the loss of a batch of NetherWorks scripts is going to make me question making the upgrade.
Well I'll probably upgrade, though will definitely keep P11.3 installed. I always have more than one version of a number of software apps I use regularly, like Blender, which has gone through a whole UI upgrade. The newer 2.8x version look totally different than my 2.79, which I've been using for a long time. I already went through that sort of upgrade about 10 years ago, but back then Blender needed it. Now I think they're just doing it to make it easier for newer users to get around in it, because a lot of folks have been complaining they had to give up learning it.

As far as Poser scripts like the dozen, or more, of Joe's (Netherworks) I have, I don't know how badly they'll be hit when Poser goes Python 3. Only time will tell.
 
I take it there's no way to predict which scripts won't run with based only on the changes in Python itself from 2 to 3? In other words, is it true across the board that no script made with Python 2 will work with Python 3, or is it that some Python 2 scripts will no longer work based on how they interact with Poser (or b/c they weren't correctly made to begin with)?

If Netherworks' scripts don't work in Poser 12, then I guess I'll be stuck on 11 for a very long time! I use several of his scripts not only ever day but darn near every hour :)
 

Miss B

Drawing Life 1 Pixel at a Time
CV-BEE
I've done a lot of scripting in a lot of languages, but Python's not one of them, so I don't know if the older scripts will be totally unusable, or will partially work, but not perfectly. Since I'm not familiar with the Python syntax, I don't know if version 3 is totally different from version 2.7, or only partially.

Also, since this is a matter of Python 2.x reaching end of life, it means no software that uses Python scripting will benefit by still using 2.x for newer versions of the software. This isn't a matter of Renderosity "choosing" to use the newer version because they like it better, it's a matter of not getting anything new done with Poser in the future if they don't switch to the newer Python.

It's the same as never updating your Windows (or Mac) software because you just don't want to. I know because I held off upgrading to Win10 until Win7 came to the end of it's life, though the decision was more or less made for me, because I needed a new laptop since my 8-year old Win7 laptop was on it's last leg, so to speak.
 

Ken1171

Esteemed
Contributing Artist
I take it there's no way to predict which scripts won't run with based only on the changes in Python itself from 2 to 3?

Chances are that NOTHING written in Python 2 will work in Python 3. One of the main reasons would be that compiled PYC files have embedded version numbers, and that alone can cause Python 2 modules to crash right away in Python 3 with an infamous "magic number" error message. Even if the code itself is 100% compatible (I wouldn't count on that), it would at least need to be recompiled (to avoid "magic number" crashes).

However, I would not expect old Python 2 code to just work in Python 3 without some syntax adjusting. So many things have changed, especially if Rendo will pick the latest Python 3 version with all the accumulated changes and deprecated functionalities that are no longer accepted. After the Python 2 end-of-life period has been reached last December, all the stuff that was marked for deprecation is now in full effect.

So as a general rule, I wouldn't expect any existing scripts would work in Poser 12 without some changes and recompiling.
 

Satira Capriccio

Renowned
CV-BEE
Contributing Artist
Broken Netherworks' scripts are going to hurt. I use PoserFileAssistant, Creator's Toybox File Optimizer, and MATWriter Panel 2014 extensively when creating products :(

Granted, I can continue to use Poser 11, but then what's the point of upgrading to Poser 12?
 

RAMWolff

Wolff Playing with Beez!
Contributing Artist
Broken Netherworks' scripts are going to hurt. I use PoserFileAssistant, Creator's Toybox File Optimizer, and MATWriter Panel 2014 extensively when creating products :(

Granted, I can continue to use Poser 11, but then what's the point of upgrading to Poser 12?
I would venture a guess that Ken would take over the reins on that and create his own version of Joe's scripts. I'm sure Joe would give his blessings anyways as he's always been so nice and helpful when he was part of the community.

Personally, since I've only recently jumped over to Poser, I've not gotten overly attached to MOST python scripts, if any at all really, so this won't hurt me at all and it will be fun to see what Ken can do to WOW the community and you know Ken, you'll make some BIG BUCKS with everyone flocking to buy your "replacements" for many of the well loved and needed scripts.
 
Top