Seeing that Python 3 was released four years ago, and 2.7 will only be supported for ~2 more years, I'm curious which type-centric python libraries need to be ported over. I assume at this point that none of them have, but I could be wrong. The biggest hurdles that I can see are Robofab and Vanilla. PyObjC, which Robofont and parts of Glyphs depends on, would also be a huge component of Python 3 compliance, but it seems to be making the jump (can anyone verify this?). Are there other big python libraries that would need attention to move your scripts from 2.x to 3?
The other question I have is: how concerned are type designers with using an unsupported and/or outdated scripting language? My hunch is that there's not a lot of excitement about updating old scripts that are working fine, but I can see the day when Python 2.x might no longer be the default install on new hardware. If that's the case, it's going to start to feel funny installing an old version of Python to handle modern type design workflows…
0
Comments
@Chris, the reasons to switch are mostly just to keep up with the development of the language. Usually major point releases are moments where inconsistencies and warts in the language can be cleaned up. The language becomes a bit nicer to work with. The differences between 2.7 and 3 aren't actually that large, but in the long term Python 3 will continue to be improved, but development on 2.x will cease.
The reasons to stay is the inertia of a large library of 2.x scripts. There are programs that can convert 2.x to 3, but the libraries that we all use would have to be updated first.
Still curious if there are other libraries that would also need similar treatment that I am unaware of.
the truth is that migrating code from 2 to 3 is not nearly as traumatizing as it would appear and given the massive amount of code that is presently being written for 2.7 and will need to be supported in the future, i expect it would be a while until the pycopalypse manifested itself as a problem given that people still routinely support python 2.5 which came out in 2006 (boy does time fly).
migrating to 3 though is entirely something that can happen iteratively and it can happen a handful of files at a time, too, without totally breaking a codebase. Tests do really help, though, for this sort of project.
The biggest change i have encountered in trying to make code portable between the two is the use of byte strings, slightly different exception handling and the new division behavior. catching importerrors for renamed modules in the stdlib is straightforward.
again, most patches could be submitted by anyone who currently writes python and is willing to write a unit test and run it against both 2.7 and 3.3 / 3.2. test writing is the easiest way to contribute to a project and it serves as living documentation since it shows functions being (successfully) used in very specific ways.
I'm not convinced that the amount of work would warrant a kickstarter, but i think getting the community corralled and setting visible goals to write tests and upgrade submodules iteratively would be fantastic.
Ben: What parts of robofab need the most help at this point? Are there outstanding bugs? Better test coverage? I'd like to get involved but not sure what would be helpful.
I am thinking about getting into Python (for type design purpose). As far as I can tell FL7 is still on Python 2.7, but I see this doc by Roberto Arista, referring to Python 3.
http://pythonfordesigners.com/
Which one to learn now?