4 ms·
Best transition ever IMHO: I started Python end of 2008, approx 1 year prior to Python 3 release, which I started learning at the same time I was learning Djang
by 1337shadow 6y ago
Best transition ever IMHO: I started Python end of 2008, approx 1 year prior to Python 3 release, which I started learning at the same time I was learning Django.
I disregarded Python 3 for a few years, then started accepting pull requests for Python 3 support on my packages when Django started to support Python 3, added it to the CI build matrix.
Then, I started to code compatible with Python 2 & 3 while keeping Python 2 as my main Python (private codebases). A few years later (not so long after Arch Linux made Python 3 the default) I started using Python 3 as main Python, contributed to other packages for Python 3 support as I needed it.
It was hard, until I became sufficiently efficient at it, then it became a joy to have "such easy" contributions to make to the Python ecosystem, note that at the same time I was doing the same with Django versions which did break user code often on upgrade.
Perhaps it's because I worked so hard to upgrade codebases during Django 1.x days, and Python 2 to 3, that every upgrade now seem so easy, anyway, it basically feels like I have nothing to do anymore given the current state of the parts of the ecosystem that I depend on.
As of this day, I must admit that the whole operation has been a great success. I could jump in the train when I felt like it, and nowadays upgrading has never been easier, asyncio has become really fun to use with Python 3.8, Django 1.x days were hard on users to upgrade, but since Django 2.0 it's mostly been a no-op for me, most of my Django 2.x codebases just work on Django 3.0.
For those who had left Python or Django, or decided not to try it at all, it really seems to me that now is the best moment than ever to try it out, again or for the first time. Yes it was pretty hard, yes it took a while, but I really feel golden about the current situation. I'm glad I sticked with Python and I see people coming back to it, it's really useful for a wide variety of use cases.
- millstone 6y agoIt's not normal to have to write new code to retain compatibility. ES6 was a huge change, but was sufficiently compatible with ES5 that you didn't need to double your test matrix. C++11 is another example of a major evolution that retained backwards compatibility. There have been other painful upgrades (Swift, Rust) but these have been in younger languages with less established codebases; both have since shifted to a mature-language model. Python3 is unique in attempting to aggressively evolve a very mature language with deep established codebases, and has paid a heavy price.
- 1337shadow 6y agoI'm not convinced that spreading the BC breaks over more Python major versions would have been more helpful or worse ... Hard to say of course, will we ever know for sure ? It seems to me that the problem would have been multiplied.