PySimpleGUI icon indicating copy to clipboard operation
PySimpleGUI copied to clipboard

[ Question ] Are you running Python version 3.4 or 3.5 with PySimpleGUI?

Open PySimpleGUI opened this issue 4 years ago • 7 comments

Type of Issues (Enhancement, Error, Bug, Question)

Question for Community

Operating System

All

Python version

3.4, 3.5

PySimpleGUI Port and Version

All ports, but primarily tkinter right now

PSG versions up to 4.34.0 on tkinter tkinter version not important

Ports = tkinter, Qt, WxPython, Web

Details

The Python Version Strategy

Reaching the largest possible audience has been a desire of the PySimpleGUI right from the start. First it was Python3, but then was convinced to extend PySimpleGUI even further back and support 2.7. It was a good move as there have been almost 200,000 pip installs of the 2.7 version of PySimpleGUI.

I've maintained the support of 3.4 and 3.5 largely from the desire to support Raspberry Pi systems. These devices are often slow to be used to run the latest versions of Python. The hardware I use to test all releases of PySimpleGUI runs on a Raspberry Pi.

Desire to Require 3.6+

With the introduction of the Exec APIs comes a problem of supporting them on Python 3.4. These new API calls were added to the release 4.35.0 that I'm trying to get shipped quickly, but it's dragging out a bit, partly due to this 3.4 support.

Requiring 3.4, 3.5 support by PySimpleGUI also means that features in 3.6 cannot be used in the PySimpleGUI code base. 3.6 is an AWESOME release of Python with features such as f-strings.

Everything Has a Cost

There is a cost to support 3.4 and 3.5. It costs time to test all releases of PySimpleGUI. It costs development time itself as features like f-strings are prohibited.

As the product continues to evolve and developed further, costs like this one are re-evaluated to see if they continue to make sense.

Who Will Be Impacted

Examining the Pip installs it appears that perhaps as much as 2% of the user base will be impacted if support for 3.4 and 3.5 were dropped. That's not insignificant.

image

For comparison, the % of users on a Mac varies between 4 and 8%

image

Backwards Compatibility and Ongoing Support of Users is Important

It's been a priority to support as much of the users as possible and to impact them negatively as little as possible. This is why many of the old function calls continue to work. For example, prior to there being a Window object in PySimpleGUI, the term was FlexForm. You can still use FlexForm instead of Window.

It's a big deal when stuff stops working for someone and decisions where users are impacted negatively are important to make in an informed and careful manner. Thus, this Issue is open with the hope of understanding if you are one of the people that will be impacted if support for Python 3.4 and 3.5 is dropped.

HOW YOU CAN HELP

If you are a user of PySimpleGUI on Python version 3.4 or 3.5, then please respond to this Issue with a little bit of information about your project. It will help me make an informed decision as well as what can be done to help users move up to Python 3.6.

PySimpleGUI avatar Mar 02 '21 12:03 PySimpleGUI

Maintaining backwards compatibility comes at a significant cost both in terms of your time and complexity of code. Python setup tools allow version pinning to deal with this sort of thing. Why not declare a new major version number and press on with modernization? Anyone still using an older version can pin 4.x.

RhetTbull avatar Mar 03 '21 17:03 RhetTbull

Why not declare a new major version number and press on with modernization?

I wrote quite a bit about this in the issue. Do I really need to go into even more detail?

PySimpleGUI avatar Mar 03 '21 18:03 PySimpleGUI

I wrote quite a bit about this in the issue. Do I really need to go into even more detail?

Nope, wasn't trying to imply that. I guess as a someone who also maintains several open source projects (albeit with much smaller user base than PySImpleGUI) this is just something I don't see as a huge issue -- the maintainer needs to do what the maintainer needs to do. PySimpleGUI currently works on these old pythons so it's not like you're leaving them in the dust if they don't get new features or bug fixes. My approach would be to upgrade the version and move on. If someone really really cares they can fork the project and backport any fixes. That's the beauty of open source. 3.6 is 4 years old...that seems like a very reasonable target to support. Personally, I draw the line at 3 releases so I currently support 3.7, 3.8, 3.9 but will drop support for 3.7 when 3.10 is released so I can use assignment expressions from 3.8. With virtual environments, it's not hard to deploy multiple python versions for users that need python to run a PySimpleGUI app.

RhetTbull avatar Mar 03 '21 18:03 RhetTbull

Thanks for sharing your strategy/approach for compatibility. It's nice to hear what other projects are doing.

I've got a different strategy which is what I was trying to articulate in the explanation. "The bigger the tent the better" is perhaps the 6-word summary of the approach. I want to be as inclusive as possible.

The purpose of this Issue is to listen to the PySimpleGUI user base that is running older versions of Python. Before making a change that could impact a portion of the user base, I would like to hear from those users.

PySimpleGUI avatar Mar 03 '21 18:03 PySimpleGUI

I've maintained the support of 3.4 and 3.5 largely from the desire to support Raspberry Pi systems. These devices are often slow to be used to run the latest versions of Python. The hardware I use to test all releases of PySimpleGUI runs on a Raspberry Pi.

I'm doing a lot of stuff on Raspberries lately. If you install today the latest version of Raspberry Pi OS, which works on a RPi 0, 1, 2, 3 and 4, it will come out of the box with Python 3.9. The previous version of Raspberry Pi OS (available since 2019 and based on Debian "buster") had Python 3.7.

I love your "The bigger the tent the better" approach, but I think that a 3.6+ tent is still a big one.

Just my 2 cents.

norambna avatar Nov 11 '21 13:11 norambna

I love your "The bigger the tent the better" approach, but I think that a 3.6+ tent is still a big one.

I'm the only person impacted by keeping 3.4 and 3.5 going. The last Pi I bought came with 3.4 loaded. I assume that others are getting the same hardware and software and that they may very well not know or are afraid to upgrade. Everything's a tradeoff as you know. I'm OK with this particular tradeoff and think it's worth the cost.

PySimpleGUI avatar Nov 11 '21 15:11 PySimpleGUI

I like that you guys have opinions and a policy of your own in mind. You're actually thinking through the problem that perhaps most don't spend any time at all thinking about.

PySimpleGUI avatar Nov 11 '21 15:11 PySimpleGUI