O que essa mudança significa para as empresas que utilizam fortemente o idioma, especialmente aquelas que podem não estar prontas para migrar?

Em Pycon, em 2014, Guido van Rossum, o criador de Python e, na época, o Ditador Benevolente Para a Vida da Língua, estava no palco com uma camisa que tinha um grande 2.8 escrito sobre ele em letras de bloco, com um grande sinal vermelho sem entrada através dele. “É hora de passar para o Python 3”, disse ele, dizendo ao público que eles devem começar a adotar a nova versão do idioma em seus fluxos de trabalho.

Depois de muitos anos de trabalho árduo para esse objetivo dos principais comprometedores, e da comunidade circundante de bibliotecas, Python 2 está finalmente no fim da vida. 1 de janeiro de 2020, de acordo com pythonclock.org, é a data de entrega para o suporte do Python 2.

Para algumas empresas que já fizeram a mudança anos atrás, não será um problema. No entanto, há uma série de empresas que não farão a mudança tão cedo, por uma série de razões.

O que essa mudança significa para as empresas que utilizam fortemente o idioma, especialmente aquelas que podem não estar prontas para migrar? Para entender todo o contexto do que está acontecendo, vamos dar um passeio de volta pela história do Python.

 

Uma breve história de Python

 

A ideia por trás do desenvolvimento do Python 3 era implementar uma única grande mudança que se livrasse de um problema legado no Python: renderizar todas as cordas como Unicode nos bastidores. Como Brett Cannon, um dos principais desenvolvedores do Python, escreve:

 

As pessoas às vezes esquecem a idade do Python; Guido começou a codificar python em dezembro de 1989 e foi lançado pela primeira vez como código aberto em fevereiro de 1991. Isso significa que o próprio Python antecede o primeiro volume do padrão Unicode, que saiu em outubro de 1991. Ao longo dos anos seguintes, os idiomas criados após o Unicode padronizado optaram por basear sua implementação para strings em codificações que pudessem suportar o Unicode.

 

….

 

Apoiar o Unicode e o texto de qualquer idioma escrito é importante. Python é uma língua para o mundo, não apenas para as línguas que suportam o alfabeto romano que asCII cobre. É por isso que o Python 3 o torna “Unicode ou busto” quando se trata de texto; ele garante que todo o código Python 3 suportará todos no mundo, quer o desenvolvedor que escreveu o código explicitamente destinado a ele para ele para ele ou não.

Infelizmente, a equipe assumiu que todos fariam a grande troca imediatamente, e fez python 3 incompatível, e definir 2 como um ramo de manutenção. No entanto, muitas pessoas não quiseram mudar, porque, como disse o PEP para a melhoria, oPython 3 foi “uma melhoria relativamente leve no Python 2”. Muitas pessoas não trocaram pelo que eles consideravam ser principalmente um inconveniente. Naquela época, a maior diferença era a mudança da instrução de impressão para a sintaxe da função Python, que quebrou muito código.

Como resultado, o Python 2 continuou em desenvolvimento ativo. Em 2019, porém, o Python 3 finalmente (principalmente) tornou-se a versão padrão da linguagem para o novo desenvolvimento python, e muitas empresas e projetos estão usando os principais recursos do Python 3: f-strings, Path, dicas de tipo, asyncio e, claro, renderização Unicode.

 

Um processo lento de adoção

 

Foi um longo caminho para chegar à adoção do Python 3 desde que a nova versão principal foi anunciada em 2008. Dustin mostra quanto tempo a adoção levou:

 

 

No início, havia uma série de boas razões para não adotar o Python 3: O mais importante, não era retrocompatível com Python 2. Como resultado, as principais bibliotecas hesitaram em se mudar para a plataforma, e em uma profecia autorrealizável, e foi difícil portar o código com a falta de ferramentas de suporte (eventualmente resolvidas com coisas como 2to3 e seis).

O ponto de inflexão para conversão ocorreu em algum momento por volta de 2016 ou mais com o lançamento do Python 3.5, que contou com multiplicação matricial, introdução de asyncio, melhorias de velocidade no OrderedDict, e uma implementação de dicas de tipo que trouxeram alguns recursos estáticos semelhantes à linguagem para Python.

Versões posteriores incluem ainda mais recursos, como a biblioteca Pathlib e a manipulação de f-string. Com essas mudanças, muitas bibliotecas que as pessoas usam (como scikit-learn para aprendizado de máquina) iniciaram suas migrações para Python 3.

À medida que mais e mais dependências começaram a se atualizar, as empresas começaram a se movimentar também.

Então, agora que estamos perto do fim, o que o corte do Python 2 do desenvolvimento significa para o ecossistema de desenvolvedores dependentes dele?

A julgar pelo estado das coisas na internet, você teria pensado que todos completaram suas migrações. Em uma pesquisa da Jetbrains, que faz IDEs como IntelliJ e PyCharm, 75% dos entrevistados individuais indicaram que já migraram. Uma enxurrada de posts no blog mostraram o mesmo. Por exemplo, o Dropbox detalhou sua migração no outono de 2018. O Instagram migrou em 2017. O Facebook começou em 2014. Splunk, a pedido de seus clientes, também o fez recentemente.

No entanto, só porque o Python 2 está chegando ao fim da vida não significa que as empresas vão parar de usá-lo da noite para o dia. Como sabemos que ainda há energia significativa sendo investida no Python 2? Podemos verificar o que está acontecendo diretamente com o PyPI, a biblioteca de pacotes Python. Em 2016, os principais desenvolvedores por trás do PyPI começaram a enviar logs para o BigQuery do Google, para a capacidade de executar SQL contra eles, oque torna muito mais fácil tomar decisõ