Isso depende apenas do tipo de estabilidade que você deu aos seus usuários e quanta dor você deseja causar aos seus usuários.
Idealmente, sua API usa semver para que qualquer alteração de quebra faça com que o número da versão principal seja incrementado. Na prática, é desejável fazer isso quase nunca. Se sua API for instalada por meio de algum gerenciador de pacotes, convém criar um novo nome de pacote após uma alteração de última hora, para que uma atualização simples não cause conflitos (por exemplo, myapi2 v2.123.4
vs myapi3 v3.2.1
). Isso pode ser desnecessário se o seu gerenciador de pacotes suportar dependências de versão mais restritas (por exemplo, uma especificação de dependência como ~v2.120
essa não inclui v3.*
), mas nomes de pacotes diferentes têm a vantagem de que versões incompatíveis podem ser usadas lado a lado com muita facilidade. Mesmo ao usar o semver, pode ser sensato ter um período de reprovação.
Semver nem sempre é aplicável. Então é mais importante comunicar uma política de estabilidade clara. Por exemplo:
- Recursos experimentais podem ser removidos sem aviso prévio.
- Os recursos podem ser removidos por razões de segurança a qualquer momento.
- Outros recursos serão removidos apenas
- … Depois de ter sido descontinuado em uma versão lançada
- ... em que essa versão tenha pelo menos três meses
- … E será marcado por um solavanco na versão principal.
Essas políticas funcionam particularmente bem quando você tem lançamentos regulares, para que haja um período de depreciação claro, por exemplo, um ano.
Além de marcar qualquer parte da API como descontinuada, você deve tornar a descontinuação amplamente conhecida. Por exemplo:
- Tenha uma seção em seu registro de alterações sobre direções e descontinuações futuras.
- Transmita sua intenção de desaprovar antes de executá-la e ouça a comunidade para ver se há objeções substanciais.
- Comunique quais benefícios virão dessas mudanças. Dependendo da sua base de usuários, boletins, apresentações, postagens em blogs ou press releases podem ser a mídia apropriada. Dando uma volta “estamos criando um novo recurso incrível! (que requer que esse recurso antigo amplamente usado seja removido) ”é um pouco menos frustrante do que remover um recurso sem contexto.
Quanto ao período exato de descontinuação escolhido, verifique primeiro se você precisa honrar algum contrato de suporte com seus usuários. Esses contratos podem exigir que você mantenha a compatibilidade por algum período. Caso contrário, considere qualquer impacto a jusante. Tente mudar menos rapidamente do que os usuários downstream, para que eles possam passar por um ciclo de depreciação próprio. Os usuários downstream levarão algum tempo para se adaptarem às suas alterações, portanto, você nunca deve ter um período de descontinuação menor que um mês.