Restic: No se está siguiendo el control de versiones semántico

Creado en 18 feb. 2020  ·  14Comentarios  ·  Fuente: restic/restic

Documentación contradictoria

Exploremos lo que dice la documentación sobre esta pregunta:
¿Se garantiza que la API de Restic 0.10.0 sea ​​compatible con la versión 0.9.6 ?

Documentación, página Inicio párrafo Compatibilidad dice:

siempre que no incrementemos la versión principal, los datos se pueden leer y restaurar

Esto sugiere que usted se compromete a NO realizar cambios importantes mientras solo actualiza la versión MENOR. La respuesta es sí.

Sin embargo, solo dos oraciones sobre la documentación dicen:

restic sigue el control de versiones semántico para definir claramente qué versiones son compatibles

Y la especificación de control de versiones semántico dice:

La versión principal cero (0.yz) es para el desarrollo inicial. Cualquier cosa PUEDE cambiar en cualquier momento.

Esto sugiere que la API puede cambiar en cualquier momento. La respuesta es no.

Entonces, ¿qué es lo correcto? ¿La API es estable o no?

Solución propuesta

Si la API se considera estable actualmente, la versión debe cambiarse a 1.0.0 tan pronto como sea posible, para evitar confusiones.
Hasta entonces, esto debe quedar más claro en la documentación, mencionando explícitamente que la API es estable desde la versión 0.x y no cambiará en la versión 1.0.0 .

documentation project

Comentario más útil

Dado que el software aún no tiene la versión 1.0, es de suponer que al final debería estar preparado para que las cosas puedan cambiar. Dicho esto, como ha visto, los mantenedores y desarrolladores hacen todo lo posible para mantener la compatibilidad y la estabilidad con versiones anteriores. No siempre es factible, pero en general diría que está funcionando bastante bien :)

Todos 14 comentarios

No hace falta gritar como si el mundo se acabara ;-)

Estoy de acuerdo en que los textos que encontraste son contradictorios. Lo investigaremos. ¡Gracias por notar esto!

Oh lo siento por eso. Siéntete libre de editar mi publicación para que sea más elegante. @rawtaz

No te preocupes en absoluto, entiendo que estabas siendo claro 👍

Tenga en cuenta que semver, tal como se aplica a restic, no se trata de la API interna de restic, sino del diseño del repositorio en almacenamiento. Las API internas de Restic pueden cambiar en cualquier momento; no hay una API pública (aparte de la interfaz de línea de comandos). Entonces, la pregunta principal que ha hecho:

Entonces, ¿qué es lo correcto? ¿La API es estable o no?

De hecho, es totalmente irrelevante. Esto debería preguntar sobre el _formato del repositorio_ y no la API.

@cdhowie
Estados de la documentación:

El repositorio y las estructuras de datos que contiene se consideran la "API pública".

A eso me refiero cuando pregunto sobre la estabilidad de la API (junto con los comandos CLI).

¿Hay alguna actualización sobre esto? La página de compatibilidad aún indica que restic sigue a semver (por lo tanto, es inestable), aunque el sitio web sugiere lo contrario (incluso si nunca afirma explícitamente la estabilidad).

¿Existe alguna garantía de estabilidad?

Dado que el software aún no tiene la versión 1.0, es de suponer que al final debería estar preparado para que las cosas puedan cambiar. Dicho esto, como ha visto, los mantenedores y desarrolladores hacen todo lo posible para mantener la compatibilidad y la estabilidad con versiones anteriores. No siempre es factible, pero en general diría que está funcionando bastante bien :)

También recomiendo considerar restic como un software estable y marcarlo de acuerdo con SemVer como 1.0.

Cuando se trata de la API, la estabilidad se refiere principalmente a la API pública, tanto al formato del repositorio como a la interfaz CLI. Este último en restic tuvo un cambio importante en la versión 0.10 debido a # 2546 (personalmente lo enfrenté).

En mi opinión, debería reemplazarse gradualmente, por ejemplo, introduciendo una marca de función primero para activar el nuevo comportamiento. Después de un tiempo, finalmente lo reemplazaremos, pero con la capacidad de usar el comportamiento anterior mediante el uso de algún indicador de función. Lo sé, dado que el restic aún no está en 1.0 , no tiene que seguir esta práctica. Sin embargo, parece que restic es lo suficientemente estable y muchas personas lo aprovechan. Por eso creo que es razonable tratarlos como software estable y evitar BC, al menos en el ámbito de una única versión principal.

Para aquellos que estén preocupados por esto, tengo dos preguntas:

  • ¿Qué problema real y práctico está experimentando debido a que restic tiene una versión 0.10.0 en lugar de 1.0.0? Tenga en cuenta el problema práctico real.

  • ¿Qué texto del sitio web de restic le gustaría cambiar para hacerlo, en su opinión, más razonable que restic tiene la versión 0.x en lugar de 1.0, y cómo le gustaría que se formularan los cambios?

Para la primera pregunta: no hay un problema práctico real, en el sentido de que el programa funcionará igualmente cualquiera que sea la etiqueta. Si el sitio web dijera "este programa podría romper cualquier copia de seguridad en cualquier actualización", no habría ningún problema práctico real, pero puede ver por qué eso sería un problema para un usuario. El problema es que se supone que el usuario debe confiar en un programa que el desarrollador ha dejado claro que no es confiable. Al tener una versión 0.xy, estás diciendo (cita de https://semver.org/#spec-item-4): "Todo PUEDE cambiar en cualquier momento. La API pública NO DEBE considerarse estable".

Para la segunda pregunta: el texto actual es:

La compatibilidad con versiones anteriores de las copias de seguridad es importante para que nuestros usuarios siempre puedan restaurar los datos guardados. Por lo tanto, restic sigue el control de versiones semántico para definir claramente qué versiones son compatibles. El repositorio y las estructuras de datos que contiene se consideran la "API pública" en el sentido de control de versiones semántico.
Garantizamos la compatibilidad con versiones anteriores de todos los repositorios dentro de una versión principal; Siempre que no incrementemos la versión principal, los datos se pueden leer y restaurar. Nos esforzamos por ser totalmente compatibles con todas las versiones anteriores.

Lo que creo que sería genial si ya hubiera lanzado 1.0.0 (el segundo párrafo habla de los cambios realizados después de 1.0.0), sin embargo, en esta situación, es muy engañoso. De hecho, si no supiera sobre el control de versiones semántico, pensaría que hasta que se publique 1.0.0 (la próxima versión principal), no se aplicarán cambios importantes. En realidad, casi ninguna de las reglas de SemVer ha comenzado a aplicarse, porque solo lo hacen después de 1.0.0.

Entiendo que incluso en una versión 0.xy, hay esfuerzos para no realizar cambios importantes, por lo que cambiaría lo siguiente: escribiría explícitamente que el segundo párrafo solo se aplica después de 1.0.0 y agregaría otro párrafo hablando sobre el esfuerzos realizados para no romper nada durante el desarrollo inicial. Por ejemplo:

La compatibilidad con versiones anteriores de las copias de seguridad es importante para que nuestros usuarios siempre puedan restaurar los datos guardados. Por lo tanto, restic sigue el control de versiones semántico para definir claramente qué versiones son compatibles. El repositorio y las estructuras de datos que contiene se consideran la "API pública" en el sentido de control de versiones semántico.
Una vez que se lanza la versión 1.0.0, garantizamos la compatibilidad con versiones anteriores de todos los repositorios dentro de una versión principal; Siempre que no incrementemos la versión principal, los datos se pueden leer y restaurar. Nos esforzamos por ser totalmente compatibles con todas las versiones anteriores.
Durante el desarrollo inicial (versiones anteriores a 1.0.0), los mantenedores y desarrolladores harán todo lo posible para mantener la compatibilidad y estabilidad con versiones anteriores, aunque puede haber cambios importantes sin aumentar la versión principal.

Espero que esto ayude a entender el punto de vista :)

@oscarbenedito ¿Te gustaría hacer un PR con esos cambios de texto (en el repositorio de restic.net)? De lo contrario, lo haré, de cualquier manera está bien para mí :)

¡Seguro! Yo haré eso.

Cerrando ya que está arreglado con restic / restic.net # 22, ¡gracias @oscarbenedito!

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

mholt picture mholt  ·  4Comentarios

e2b picture e2b  ·  4Comentarios

TheLastProject picture TheLastProject  ·  3Comentarios

axllent picture axllent  ·  4Comentarios

stevesbrain picture stevesbrain  ·  3Comentarios