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.