Desenvolver software é como cuidar de uma planta... O software vive dentro de um contexto dinamico que muda o tempo todo. As mucuas atualmente estão rodando numa versão desatualizada já tem muitos anos. Nesses anos muitas coisas mudaram e parece até estranho que ainda estejam funcionando. Mas chegou o momento de fazer um bom manejo para revitalizar o Baobáxia.

Os software normalmente seguem um padrão de versionamento para manter o controle da evolução desse ecosistema baseado em tres numeros.

Podemos ver, por exemplo, que a versão do Django que vem no pacotão do Baobáxia era a 1.5.1 . O Django segue o padrão de versionamento semantico, vamos ver o que é:

Segundo o Semantic Versioning:

  • O primeiro número indica que o sistema tem mudanças que o torna incompatível com versões anteriores;
  • O segundo número indica que o sistema tem mudanças compatíveis com versões anteriores, dentro do primeiro número;
  • O terceiro número indica que o sistema tem mudanças menores, como correções de bugs e funcionalidades que não prejudicam a compatibilidade com versões anteriores.

Pode ler mais sobre no stackoverflow.

Hoje o Django esta na versão 3.1.3, ou seja, nosso codigo esta desatualizado de duas macro versões a 2 e agora a 3. Isso comporta bastante trabalho para incluir as mudanças que teve no ecosistema. A cada versão nova que sai, os desenvolvedores comunicam no "release note" o que mudou, incluindo alem das melhorias as mudanças que afetam o codigo antigo. Na passagem de uma versão menor para outra (que seria o segundo numero dos tres) são colocados como "deprecated" coisas que vão ser removidas ou alteradas na macro versão futura e como deixar o codigo já pronto para essa mudança.

Para atualizar o codigo então é necessário ler todos os anuncios de novas versões desde a 1.5.1 ate a 3.1.3 e tentar anotar as coisas principais.

Temos também as dependecias do Django que mudaram bastante:

Django 1.5.1 --> 3.1.3 
South 0.8.1 - Agora faz parte do core do Django 
argparse 1.2.1 --> 1.4.0
django-extensions 1.1.1 --> 3.1.0
djangorestframework 2.3.6 -->  3.12.1
gunicorn 18.0 --> 20.0.4
six 1.3.0 --> 1.15.0
wsgiref 0.1.2 - Não mudou :)
longerusername 0.2 --> 0.4

Mas nesses anos não mudou somente o Django, o mesmo Python passou de macro versão e estamos hoje no Python 3 que é uma mundança muito mais radical. Vale a mesma dica de ler os release note de todas as versões que sairam desde a epoca. Felizmente a galera do Python criou algumas ferramentas para ajudar na migração como o comando "2to3" que le o nosso codigo e sinaliza todas as mundanças que serão necessárias.

Previous Post Next Post