Esto depende únicamente de qué tipo de estabilidad le garantice a sus usuarios y cuánto dolor quiera causar a sus usuarios.
Idealmente, su API usa semver para que cualquier cambio importante provoque que se incremente el número de versión principal. En la práctica, es deseable hacer esto casi nunca. Si su API se instala a través de algún administrador de paquetes, es posible que desee crear un nuevo nombre de paquete después de un cambio importante para que una actualización simple no cause conflictos (por ejemplo, myapi2 v2.123.4
vs myapi3 v3.2.1
). Eso puede ser innecesario si su administrador de paquetes admite dependencias de versiones más estrictas (por ejemplo, una especificación de dependencia como ~v2.120
esa no incluye v3.*
), pero los diferentes nombres de paquetes tienen la ventaja de que las versiones incompatibles se pueden usar juntas muy fácilmente. Incluso cuando se usa semver, puede ser sensato tener un período de desaprobación.
Semver no siempre es aplicable. Entonces es más importante comunicar una política de estabilidad clara. Por ejemplo:
- Las características experimentales pueden eliminarse sin previo aviso.
- Las funciones se pueden eliminar por razones de seguridad en cualquier momento.
- Otras funciones solo se eliminarán
- ... después de haber quedado en desuso en una versión lanzada
- ... donde esa versión tiene al menos tres meses de antigüedad
- ... y estará marcado por un golpe en la versión principal.
Dichas políticas funcionan particularmente bien cuando tiene lanzamientos regulares para que haya un período claro de desaprobación, por ejemplo, un año.
Además de marcar cualquier parte de la API como obsoleta, debe hacer que la obsolescencia sea ampliamente conocida. Por ejemplo:
- Tenga una sección en su registro de cambios sobre futuras direcciones y desaprobaciones.
- Transmita su intención de desaprobar antes de realizar la desaprobación y escuche a la comunidad para ver si hay objeciones sustanciales.
- Comunique qué beneficios provendrán de estos cambios. Dependiendo de su base de usuarios, los boletines, presentaciones, publicaciones de blog o comunicados de prensa pueden ser medios apropiados. Dando un giro “¡estamos creando una nueva característica increíble! (que requiere que se elimine esta característica antigua ampliamente utilizada) "es un poco menos frustrante que eliminar una característica sin contexto.
En cuanto al período de desaprobación exacto para elegir, primero mire si debe cumplir con los contratos de soporte con sus usuarios. Dichos contratos pueden requerir que mantenga la compatibilidad durante algún período. Si no, considere cualquier impacto aguas abajo. Intente cambiar menos rápidamente que los usuarios intermedios para que puedan pasar por un ciclo de desaprobación propio. Los usuarios intermedios tardarán un tiempo en adaptarse a sus cambios, por lo que nunca debería tener un período de desaprobación de menos de un mes.