I'm honestly interested in finding out at least one serious project using Python 3 in a production environment. Everyone I know that earns a living programming and does Python development refuses to run their apps in production under Python 3. Many of them are willing to provide Python 3 support for libraries they develop so it's not the case that they don't want Python 3 to be successful it just they are not willing to take the risk or can't make the change due to dependencies that are not supported.
Just curious, how much Python code base is related to web development? The reason I ask, it seems these type of arguments I see seem to center around Python being used among web developers. But Python is being used in so many different domains. So it may be true Python 3 may not be used a lot in production in the web development world, but in the scientific and data analysis world, Python 3 is being used widely. I don't have numbers to back it up, but at my Fortune 500 company, we use Python for data or statistical analysis. The Python 3 code we use, use the full scientific stack (et. el. numpy, scipy, matplotlib) without problems. We are using Python 3 for making critical business decisions, which include whether or not our company will issue million+ dollar recalls.
So basically I am trying to say that we should remind ourselves that Python is being used in other domains besides web development.
I generally do only a small amount of web development so my comments are being driven by a combination of my experience in scientific and general software development and also influence by a large number of software developers I know that earn a living using Python.
If we were to bin SW development into web, scientific, dev ops, and general software development I would say the web side of things are supported fairly well in Python 3. Part of what makes it in better shape is that on the front end side of things it's nearly all JS and not influenced by Python 2/3. If you look at the web server functionality it self (ignoring the backend that contains the business logic.), the web frameworks and its closely associated eco system you find that the majority of the libraries have been ported to Python 3. There are exceptions like Paste but there are also alternatives to Paste that work in Python 3. Although there are a lot of Python web frameworks when you look at Python's web eco system there really is not that large number of important/highly used libraries. Since the number of these libraries is "reasonably small" then it should come to no surprise that web development is in reasonable shape.
On the other hand the dev op guys have so little chance of using Python 3 as it seams like every cool tool they would want to use is not supported. Pretty much all the cloud tools are not supported, Fabric is not now but I hear it is in the works, neither is salt, supervisor, etc.
On the scientific side of things, Python 3 support is reasonable good within the core libraries (numpy, scipy, matplotlib) and you can also add scikit-learn. But once you start to get away from these main stream packages support for Python 3 is nearly nonexistent. For instance today I needed Delaunay triangulations but support for it is fairly basic in scipy plus its quit slow so I prefer to use the triangle library which currently does not support Python 3. Now this library is likely fairly trivial to get working with Python 3 but when you come across a dozen or so libraries each month that is not supported who has the time to fix them all plus it doesn't appear to even have a test suite.
When you are doing general SW development or the backend of a web server the issue usually comes down to domain specific libraries that are often not supporting Python 3. So as much as it is great that a good chunk of the top 200 libraries listed in the Python 3 WOS has been ported it it does not come close to being a fair representative to all the thousands of domain specific libraries that are useful to huge numbers of Python developers.
If you have to support Windows have fun. You can run into enough road blocks and issues with Python 2 on Windows but usually most can be worked around. As far as I know there is no option to interface with .NET under Python 3 plus I hear comtypes is hit or miss. Support for both .NET and COM works well in Python 2.
Most Python developers would agree that that Windows support is second class. Why is that? Most developers of libraries use Linux or OS X. They code it under Linux, test it under Linux and if a Windows user reports an issue they do what they can to fix it and when they do so they hope someone with Windows will give them feedback if the fix doesn't work. Now I know some projects support Windows better than that but for the majority of libraries Windows support is like I said second class.
If most Python developers can see Windows has second class support why is it they can't see the same thing with Python 3. Let see the libraries are written by developers who write their code and test it under Python 2. If someone complains about an issue when running under Python 3 they fix it and hope someone will let them know when something else breaks. Sure many more projects have their CI systems test Python 3 compare to testing it under Windows but in the end the libraries are getting very little real use or attention under Python 3.
Now even if all the public libraries get ported over to Python 3 there is still the issue of porting all the non public code. If the benefits of porting don't out weight the costs it highly unlikely to happen. Unfortunately for most projects the negative benefits far exceed the nearly nonexistent positive benefits plus it's going cost a boat load of developer time. Have fun with that conversation with your boss, CEO, or a customer.
0
u/reallyserious May 26 '14
Where are you going with this? Am I supposed to read this as people using py3 don't do meaningful things?