Por que nunca vai existir o Minecraft 2.0.0
Uma explicação sobre versionamento semântico, que conecta Minecraft e nosso trabalho como programador.
Se você já jogou Minecraft no passado, deve ter tido contato com as aclamadas versões.
Eu acredito que um dos fatores que tornaram esse jogo um sucesso mundial, foi as constantes atualizações que o jogo recebia. Cada mês que passava, o Yudi criança de 2011 sempre estava muito ansioso pra ver quais seriam as novidades apresentadas na próxima versão.
Até hoje me lembro de versões bem marcantes, como a 1.8.0-beta
lá de 2011, que era conhecida como a Adventure Update, foi um momento histórico, no qual foi criado o modo criativo, sistema de fome, e várias outras coisas.
Hoje em dia, estamos na versão 1.21.7
.
Ué, só isso? — Você, um jovem confuso, me pergunta.
Sim, em 14 anos, fomos de 1.8.0-beta, para 1.21.7, passando por inúmeras versões. E isso é muito interessante.
Pra entendermos tudo isso, eu vou explicar pra vocês um conceito muito presente no dia a dia do programador:
O Versionamento Semântico, ou SemVer (Semantic Versioning).
Versionamento Semântico
Olha só que bonitão. Já tá tudo aí na imagem. Mas eu vou te explicar direitinho.
Você já se perguntou…
Por que temos que especificar a versão de um sistema?
A resposta é: evolução e compatibilidade.
Quando criamos um sistema, queremos que ele seja usado e interagido por outras pessoas, e outros sistemas, e continue funcionando, mesmo com as atualizações que forem vindo.
Então foi criado o SemVer, que é simplesmente um padrão, uma convenção, uma regra.
Basicamente, nós vamos incrementar a versão, separada por patch, minor e major, de acordo com os seguintes critérios:
PATCH: Correções de bugs.
MINOR: Adições de funcionalidades que não quebram a compatibilidade.
MAJOR: Alterações que quebram a compatibilidade.
Mas o que eu quero dizer com quebrar a compatibilidade?
Significa que o sistema que interage com o nosso, pode encontrar problemas ao tentar se comunicar da mesma forma que fazia antes da atualização.
Fazendo uma analogia:
Imagine que eu tenho um carro movido a gasolina comum, que todo dia você enche esse tanque pra mim.
Certo dia, eu fiz uma alteração nesse carro, e troquei pra que ele passasse a ser movido a diesel. Se você for tentar encher o tanque de novo, vai ter problemas, afinal você estava acostumado a colocar gasolina. Então, isso foi uma alteração do tipo MAJOR.
Outro dia, eu adicionei entradas USB no painel, pra podermos carregar nossos celulares. Isso é uma funcionalidade nova, mas não quebra nada do que já funcionava antes. Então, é uma alteração MINOR.
Por fim, eu percebi que o freio estava ruim, então corrigi isso. Nada de novo foi criado, apenas corrigido pra continuasse funcionando como esperado. Isso é um PATCH.
Nossa Yudi, então o SemVer serve pra comunicar pros consumidores se eles tem que preocupar com uma nova versão? — Você, agora entendendo SemVer.
Exato, meu amiguito.
O versionamento semântico nada mais é que uma etiqueta que diz de forma rápida pra um consumidor, que tipo de alteração foi feita no sistema.
E temos também a label de pré-release:
É o -beta, que vem depois da versão. Ele é uma etiqueta dizendo que essa versão ainda não foi oficialmente lançada, não está 100% estável e confiável. Ou seja, a versão 1.0.0-beta, vem antes da 1.0.0, porque a primeira é a versão incompleta da segunda.
Voltando pro Minecraft
Agora entendemos de onde os desenvolvedores do Minecraft tiram os números malucos das versões.
É por isso que parece que a versão andou tão pouco em 14 anos, indo do 1.8.0-beta para o 1.21.7. Isso ocorreu porque a primeira é uma beta. Depois dela, vieram outras versões, até chegar no lançamento completo na 1.0.0 (sem sufixo beta). E seguimos a partir daí.
Agora entendemos que o Minecraft 2.0.0 só vai surgir se os desenvolvedores decidirem que foram feitas mudanças MAJOR, que quebram a compatibilidade.
Mas, será que isso já não aconteceu? Já não foram feitas mudanças major?
A resposta é muito boa:
Sei lá!
Afinal, como eu disse no início do artigo, o versionamento semântico é uma convenção de regras. E se você é um dev experiente, você sabe que o que menos as pessoas seguem na vida são as regras. As vezes seguem 100% da regra, as vezes 90%, as vezes 10% ou 0%.
Então, se elas estão sendo seguidas à risca pelos devs do Minecraft, eu não sei. Ou seja, não da pra dizer com certeza qual o critério que eles usam pra decidir se a versão major vai subir.
Por fim, espero que agora as versões do Minecraft agora façam um pouco mais de sentido para você, e as dos nossos sistemas que criamos como dev, também.
Recomendações
semver.org. — Este é o site oficial que explica a iniciativa do Semantic Versioning.
Gostei muito de relembrar da minha época de minecrafteiro raíz. Cheguei a ter um bom canal de Minecraft em 2011 kkkkkk.
E você, já teve essa fase também? :D
Deixa nos comentários o que você achou desse conhecimento, e até a próxima semana! 🙇
Com nostalgia,
Yudi Ganeko.
Muito bom. Para quem era um minecrafteiro raiz e hoje é programador, essas coisas acabam sendo muito interessantes de saber e relembrar da infância!