Organizations keep finding excuses to stay on Python 2, especially large companies with a lot of legacy code. Developers in such organizations either require or could benefit from Python 3 features, such as asyncio or type checking, but are constrained by their environment. It does not have to be that way and you can move to Python 3 with careful planning and agile, incremental execution.
We present the comprehensive case study of enabling Python 3 development in a large company. The talk covers all the stages of the process. We start with the initial motivation, goals, and possible solutions. Then, we go into the specifics of the design for infrastructure changes necessary to make the migration possible. After, we discuss the execution and the decision making process for resolving challenges or trade-offs. We talk about multi-version testing, conditional dependencies, build, continuous integration, and automation. We describe possible ways to resolve platform, dependency, and code base issues. In the end, we'll look into the porting of the specific code patterns and future development.
Zvezdan currently works at LinkedIn on the Python Foundation Team. He taught Python at University of Mary Washington and then worked for Zope Corporation where he led a team that developed one of its most important products. He also worked on and maintained dozens of packages for the open-source Zope web framework. These days, he contributes to PyGradle -- the open-source Python build tool developed by his team at LinkedIn. Zvezdan had presented at international conferences and internal company tech talks on various topics from microprocessor design to distributed file systems to troubleshooting Python applications.