Pregunta

A veces es necesario introducir atrás incompatibile cambios, cuando las mejoras que supera con creces a los inconvenientes.Es posible cambiar fácilmente a la conducta de edad, pero el usuario debe ser consciente de tales cambios.

Por lo tanto, la pregunta es: cómo anunciar futuras incompatibilidades con versiones anteriores a la SEDA (open source) proyecto, para que los usuarios puedan prepararse para ellos, y cambiar su uso, o configurar el programa para que use la conducta de edad.

Porque es proyecto OSS, es empaquetado por varias distribuciones de forma independiente, y puede ser actualizado de forma automática sin intervención del usuario.Y, a continuación, hacia atrás incompatible cambio podría estropear somebodys de flujo de trabajo (scripts de terceros, por ejemplo).

Avenidas considerado en la actualidad (y se usa):

  • lista de correo del proyecto
  • página de inicio del proyecto
  • notas de la versión (la primera advertencia, luego del anuncio)
  • mantenedor del blog

Edit 1: Este (hacia atrás incompatibles) cambio se produciría en algunos principales de liberación.

Todos los cambios son acerca de la adición de salvaguardias (negarse comandos que bien puede confundir a los novatos de los usuarios), o cambiar los valores predeterminados para más cuerdo de los valores.

Edit 2: En el período de transición la configuración por defecto (el que está destinado a ser cambiado por defecto rechazar/negar) es cambiado a advierten, con la descripción de cómo activar una alerta, lo que también podría proteger contra hacia atrás incompatibile cambio en el comportamiento predeterminado.

Pero si es un sistema automatizado que podría no ayudar...


El proyecto en cuestión Git, distribuido sistema de control de versiones;
ver Dar de alerta temprana para los usuarios en gitster del diario (Junio C Hamano blog)

¿Fue útil?

Solución

  • Cambio de las principales de la versión número
  • Anunciar por todas las vías a su disposición
  • Agregar anuncio destacado en el readme
  • Agregue el código que convierte entre el antiguo y el nuevo si DB u otros cambios son necesarios
  • Agregue el código que detecta el uso de depreciado métodos, almacenamiento de datos, etc, y avisa al usuario antes de realizar cambios destructivos
  • Plantear las preguntas frecuentes preguntas de tipo en las principales P/Una web para que cuando la gente tiene preguntas la respuesta es inmediata y evidente mediante una búsqueda simple

Pero el número de versión principal es el objetivo principal - la gente espera 1.x a 2.x transiciones a causar problemas, y son más cuidado a la hora de actualizar.

-Adam

Otros consejos

Tienes buenas respuestas acerca de la introducción de la palabra.Pero la migración de mi propia forma de pensar es la cuestión más importante para mí, especialmente cuando las funciones obsoletas que están en mi memoria muscular.Desaprender es más difícil que aprender.

Recibiendo advertencias de venir incompatibilites cuando en realidad yo soy de los comandos que se va a cambiar es particularmente útil, sobre todo con los cambios en los valores predeterminados.Algo así como:

 $ git foo  
 Note: git foo currently defaults to HEAD. Starting with
 version 2.0, git foo will instead default to master.

Yo podría ir por RSS (si existe), Twitter (si existe) de la lista de correos (correo en menos de 3 veces la actualización está cerrando), página web (es muy contrastantes, por lo que es fácil ver) y el blog, por supuesto.notas de la versión están apenas leer, así como el último punto de información.

(He publicado esto como primera respuesta, pero no se muestran)

Todos los anteriores.

Si usted tiene un cambio, donde:

La sintaxis exacta de un no destructivos comando cambiar a ser destructiva comando

Veo que no hay opción, pero hacer el cambio más perjudicial para representar el comando antiguo totalmente válido, de modo que si un usuario actualiza y los intentos (o posiblemente una secuencia de comandos intenta) el viejo estilo comando termina con un mensaje de error descriptivo en stderr.El uso de stderr para los mensajes de advertencia sobre los comandos con los sutiles (o no tan sutiles) los cambios que son no destructivas también es una buena idea.La definición de destructivo es algo más complejo en un repositorio de código fuente

El uso de stderr advertencias para la simple amortización de los métodos a menudo es bueno pero algunas personas se quejan de que los saltos de su (mal escrito) secuencias de comandos.En estos casos, una silenciosa desaprobación de liberación (todos los no invasivos formas de degradación), seguido por la forma verbal (stderr advertencias) la liberación seguido tal vez (ver más abajo) con un no funcional, pero presentes en la liberación seguido por la eliminación total.Este último no funcional de la liberación va a ser muy dependiente en el proyecto en cuestión, como no podría ser de más problemas de lo que vale la pena, especialmente para aquellos usuarios que se comportan bien y mantenerse al día en desuso funcionalidad.

Desde el cambio específico que referencia es la eliminación de los complementos de este debe estar bien yo, probablemente no habría hecho una versión con el built-ins en una forma no funcional, pero no sé bien el proyecto lo suficiente como para decir con certeza.

Nota para código en lugar de script de cambios de nivel es posible en muchos idiomas modernos para dejar en el método talones con atributos/anotaciones que será totalmente ocultar de intellisense así como negarse a compilar en contra de ellos.Esto hace que su presencia (con una simple excepción si se utiliza) una mucho mejor manera de averiguar que no se pueden utilizar de un tiempo de ejecución de MissingMethodException o lo que sea.

Sólo mi $0.02.Los modernos entornos de desarrollo (específicamente, .NET) proporcionar los medios de informar a los desarrolladores que ciertas Api se declaran obsoleto o en desuso y será eliminado en futuras versiones.Microsoft C/C++ compilador tiene #pragma obsoleto.

Si nada de esto es compatible con su entorno, dependen de la el control de versiones para proporcionar compatibilidad de retroalimentación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top