Página 1 de 2

Versionado de pelisalacarta (betas y finales)

Publicado: 05 Nov 2016, 11:34
por jesus
Abro este hilo para recoger el procedimiento que he pensado en aplicar para la publicación de las futuras versiones de pelisalacarta, ya sea en una fase de "beta" o en una fase "final" apta para el usuario no técnico.

De momento el procedimiento no está cerrado, lo describo aquí para que podamos discutirlo si queréis aunque realmente le he dado bastantes vueltas y creo que es la mejor solución.

La idea principal es:
  • - Las versiones beta y las versiones finales serán todas "plugin.video.pelisalacarta" para no confundir
    - Cada versión llevará un número consecutivo en el "version.xml" como hasta ahora, ya sean betas o finales.
    - Las betas llevarán la etiqueta de la PRÓXIMA versión, seguido de beta 1, beta 2, etc.
    - El proceso que comprueba las actualizaciones en pelisalacarta avisará de que hay nuevas versiones, y le llevará a la opción de actualizar donde podrá instalar la última o cualquiera de las anteriores.
    - Si el usuario se intenta instalar una beta se le mostrará una advertencia de que no tiene garantías de ser estable :)
    - Los canales y conectores se actualizarán por separado, mediante un ZIP que tenga los directorios "channels" y "servers" o de forma individual cuando entres a un canal gracias a la URL.
Y en el GIT esto se traduce en:
  • - Todos los PR irán a "develop" a partir de ahora, no aceptaremos más PR a "master" en pelisalacarta para evitar conflictos.
    - El ZIP de "channels" y "servers" saldrá directamente de develop, haremos algún tipo de script que lo mantenga al día.
    - Sólo pasaremos a "master" aquello que se vaya a incluir en la beta o en la versión final.
Veamos la idea con un ejemplo de los próximos pasos en el momento presente:
  • - La última versión publicada es la 4.1.2
    - Dados los avances que hay en el GIT vamos a llamar a la próxima versión 4.2 (sugerencia de Superberny que me parece muy acertada)
    - Publicaremos una versión "4.2 beta 1" con lo que haya actualmente en el "master", la anunciaré en el blog como las versiones finales, pero no se actualizará sola porque no incrementaré el contador de versión hasta tener listo el nuevo updater.
    - Las correcciones que surjan las seguiremos subiendo al GIT, y eventualmente publicaremos una nueva "4.2 beta 2" o la final si todos lo vemos claro.
Queda pendiente hacer que el updater compruebe nuevas versiones de ese ZIP de canales y servidores, activar de nuevo la actualización individual de canales y ese proceso que liste las versiones disponibles para dejarte elegir una u otra. Ya he empezado a trabajar en ello, lo subiré al GIT en cuanto esté listo.

Re: Versionado de pelisalacarta (betas y finales)

Publicado: 05 Nov 2016, 12:44
por SeiTaN
Muy lógico el proceso de betas, es como trabajan muchos ;)
El ZIP de "channels" y "servers" saldrá directamente de develop, haremos algún tipo de script que lo mantenga al día.
Creación
Cada cuanto se hará? 1 o varios días, semanal, bisemanal?

Lo suyo es que el script se ejecute siempre que haya algún cambio aparte de un schedule en plan, se ejecutará máximo una vez por semana, y se comprobará del github si en channels o servers se ha modificado algo para ejecutarse.

Actualización
¿Como se hará para actualizarse? es decir, en el addon te listará un directorio donde están todos los zips o sólo te mostrará un aviso del último que tú no tengas?
Entiendo que esta actualización podrá ser manual o automática e independiente de la del canal cuando se acceda.

Referente a la actualización de los canales, ¿recuperamos el sistema de comprobación con los xml? lo digo para tenerlo en cuenta y tb modificarlos cuando se actualize o cree un canal.

Otros
Sobre github Jesús al final vas a cambiar el tipo de cuenta o lo vas a dejar como hasta ahora?

P.D: gracias por estar más pendiente de los PR, ayuda si se tienen desarrollos dependientes :)

Re: Versionado de pelisalacarta (betas y finales)

Publicado: 05 Nov 2016, 13:52
por super_berny
jesus escribió:Y en el GIT esto se traduce en:

- Todos los PR irán a "develop" a partir de ahora, no aceptaremos más PR a "master" en pelisalacarta para evitar conflictos.
"En estos momentos tan entrañables no puedo evitar derramar unas lagrimas de emocion... :cry: :cry: :cry: "
jesus escribió: - El ZIP de "channels" y "servers" saldrá directamente de develop, haremos algún tipo de script que lo mantenga al día.
Github permite lanzar scripts al recibir un commit: Hooks

Eso si, a la hora de enviar PR de canales/servidores y añadirlas a develop debemos ser muy escrupulosos. Deberian especificarse claramente si los cambios solo afectan aun determinado canal (por cambios en la web por ejemplo) o si ademas hemos modificado alguna otra cosa para añadir una nueva funcionalidad al canal y este deja de ser compatible con versiones anteriores. Me explico: Imaginaros q añado una nueva funcionalidad a pelisalacarta, por ejemplo añadir la BSO de las peliculas en los listados de peliculas y sus enlaces. Para demostrar q funciona modifico el canal ZZZZ, pero ahora esa nueva version del canal ya no funcionaria si lo copiamos en una version de pelisalacarta q no tubiese mis cambios. Pues bien, esta version del canal ZZZZ no deberia ir en el zip de actualizacion de canales.
jesus escribió: - Sólo pasaremos a "master" aquello que se vaya a incluir en la beta o en la versión final.
¿Que te parece si las betas tiran de la rama develop y las versiones finales de master? De este modo master SOLO se ha de actualizar (trayendo los cambios de develop) cuando se quiera publicar una version final.


Coincido con Seitan en agradecerte q estas ultimas semanas hayas agilizado la gestion de GitHub. Todo este sistema de actualizaciones y betas no tiene sentido si las propuestas no se añaden a develop de manera constante.
Gracias

Re: Versionado de pelisalacarta (betas y finales)

Publicado: 05 Nov 2016, 14:45
por Cmos
Por mi parte a priori me parece perfecto el sistema que propones Jesús, muchas gracias por todo el trabajo que haces ;) Creo que lo suyo es que además, en el foro, se habilitara un tema único o un subforo para tratar específicamente los fallos o mejoras que se vayan viendo en las betas, porque sino puede ser un lío cada vez que nos pongamos a resolver una duda o un reporte de error.

Para el tema de los ZIP de canales y servers, yo planteo otra propuesta teniendo en cuenta, como bien ha dicho super_berny, que pueden llegar a haber canales que funcionen en una versión y no en otra porque modifiquen otros archivos del addon. La idea sería, como dice super, tener la rama develop para betas, y la master para la final y para las actualizaciones de canales y conectores que no dependan de otros cambios.

Cuando se abra un PR con algun update, indicar si no es compatible con cualquier versión, si es así solo se mergea en develop, y si no se dice nada, se hace en develop y master. Luego, para la actualización de los canales y servers en el addon, se puede hacer un script que compruebe al entrar si hay un nuevo commit en las carpetas correspondientes de la rama master, y si es así, se lanza el método addchannel del canal configuración pasándole la url de master (habría que hacerle una pequeña modificación para que no abriese el teclado). De esta forma no sería necesario tener que estar creando zips y además ese método realiza backups de los archivos, así que no sería dificil de reparar en caso de fallo.

Re: Versionado de pelisalacarta (betas y finales)

Publicado: 05 Nov 2016, 18:06
por super_berny
Cmos escribió:Cuando se abra un PR con algun update, indicar si no es compatible con cualquier versión, si es así solo se mergea en develop, y si no se dice nada, se hace en develop y master.
Siguiente estacion GitFlow!!! :lol: :lol: :lol:

Re: Versionado de pelisalacarta (betas y finales)

Publicado: 05 Nov 2016, 19:21
por jesus
Gracias por los comentarios, veo que no he contado ninguna barbaridad y que más o menos pensamos igual ja ja ja

Contesto algunos de los puntos:
SeiTaN escribió:
El ZIP de "channels" y "servers" saldrá directamente de develop, haremos algún tipo de script que lo mantenga al día.
Creación
Cada cuanto se hará? 1 o varios días, semanal, bisemanal?
Yo había pensado en un script que al final de cada día creara la actualización, si ha habido cambios en el git.
SeiTaN escribió:Actualización
¿Como se hará para actualizarse? es decir, en el addon te listará un directorio donde están todos los zips o sólo te mostrará un aviso del último que tú no tengas?
Entiendo que esta actualización podrá ser manual o automática e independiente de la del canal cuando se acceda.
La actualización del ZIP de canales será automática y silenciosa (con una notificación al terminar), aunque podrás desactivarla. Preguntar cada día por lo de "¿quieres instalar una actualización?" puede ser agotador para el usuario.

La actualización de canales individuales al entrar también será automática y silenciosa (con notificación al final), y también podrás desactivarla.

Luego en la opción de actualizar, que será algo así como una lista de todas las cosas que puedes hacer, sí que había pensado dejar todas las opciones: listar versiones e instalar las que quieras, listar ZIPs de canales e instalar el que quieras, etc. Pero en general la versión "antigua" de canales y conectores no tiene mucho sentido.
SeiTaN escribió:Referente a la actualización de los canales, ¿recuperamos el sistema de comprobación con los xml? lo digo para tenerlo en cuenta y tb modificarlos cuando se actualize o cree un canal.
Eso es, al entrar a un canal se irá a la URL que haya en el XML para ver si hay nueva versión. Opcional, como he dicho antes.
SeiTaN escribió:Sobre github Jesús al final vas a cambiar el tipo de cuenta o lo vas a dejar como hasta ahora?
Supongo que te refieres a lo de convertirla en una cuenta de organización... efectivamente lo haremos así.

Quiero agilizar el flujo lo más posible, por si vuelvo a tener una sobrecarga de trabajo como la de estos meses que podamos seguir avanzando sin que yo sea el bloqueo.
super_berny escribió:
- El ZIP de "channels" y "servers" saldrá directamente de develop, haremos algún tipo de script que lo mantenga al día.
Github permite lanzar scripts al recibir un commit: Hooks
Lo se, lo hemos comentado en alguna ocasión. No descartes que sea este el sistema, pero al principio lo haré manualmente.
super_berny escribió:Eso si, a la hora de enviar PR de canales/servidores y añadirlas a develop debemos ser muy escrupulosos. Deberian especificarse claramente si los cambios solo afectan aun determinado canal (por cambios en la web por ejemplo) o si ademas hemos modificado alguna otra cosa para añadir una nueva funcionalidad al canal y este deja de ser compatible con versiones anteriores. Me explico: Imaginaros q añado una nueva funcionalidad a pelisalacarta, por ejemplo añadir la BSO de las peliculas en los listados de peliculas y sus enlaces. Para demostrar q funciona modifico el canal ZZZZ, pero ahora esa nueva version del canal ya no funcionaria si lo copiamos en una version de pelisalacarta q no tubiese mis cambios. Pues bien, esta version del canal ZZZZ no deberia ir en el zip de actualizacion de canales.
Esto es fácil de resolver. Añadiremos en el xml del canal la versión mínima necesaria para que funcione, y si la versión que tienes es inferior ese canal no se actualizará ni podrás instalarlo ni te saldrá en el listado :)
super_berny escribió:
jesus escribió:- Sólo pasaremos a "master" aquello que se vaya a incluir en la beta o en la versión final.
¿Que te parece si las betas tiran de la rama develop y las versiones finales de master? De este modo master SOLO se ha de actualizar (trayendo los cambios de develop) cuando se quiera publicar una version final.
Esa era mi idea hasta que me di cuenta de que en realidad no hay ninguna diferencia entre una beta o una final, excepto que no tenemos mucha confianza en que esté libre de fallos. De ahí que salgan de "master", y que no tengan un id de plugin diferente.

Podríamos perfectamente seguir publicando como hasta ahora, incrementando en +1 la versión y diciéndole a la gente que son versiones en continua evolución para que se atengan a las consecuencias.

Pero haciéndolo de este modo permitimos que sepan el grado de "estabilidad" que le concedemos a una versión (los usuarios cautos sólo instalarán la versión final, o las betas a partir de la 2) y además les dejaremos volver atrás.

Desde el punto de vista del GIT es lo mismo que hasta ahora.
Cmos escribió:Creo que lo suyo es que además, en el foro, se habilitara un tema único o un subforo para tratar específicamente los fallos o mejoras que se vayan viendo en las betas, porque sino puede ser un lío cada vez que nos pongamos a resolver una duda o un reporte de error.
Totalmente de acuerdo, y también tendríamos que abrir uno para las cosas que vayan a ir en cada versión y así coordinar esfuerzos como proponía Robalo.
Cmos escribió:Para el tema de los ZIP de canales y servers, yo planteo otra propuesta teniendo en cuenta, como bien ha dicho super_berny, que pueden llegar a haber canales que funcionen en una versión y no en otra porque modifiquen otros archivos del addon. La idea sería, como dice super, tener la rama develop para betas, y la master para la final y para las actualizaciones de canales y conectores que no dependan de otros cambios.

Cuando se abra un PR con algun update, indicar si no es compatible con cualquier versión, si es así solo se mergea en develop, y si no se dice nada, se hace en develop y master. Luego, para la actualización de los canales y servers en el addon, se puede hacer un script que compruebe al entrar si hay un nuevo commit en las carpetas correspondientes de la rama master, y si es así, se lanza el método addchannel del canal configuración pasándole la url de master (habría que hacerle una pequeña modificación para que no abriese el teclado). De esta forma no sería necesario tener que estar creando zips y además ese método realiza backups de los archivos, así que no sería dificil de reparar en caso de fallo.
Pensé mucho en esto y creo que es mejor mi opción de indicar la versión mínima en el XML del canal. Esto será algo excepcional, y por el flujo normal de uso poca gente tendrá problemas con esto.

Tú te instalas la 4.2.0, con un paquete de canales que funciona. Hasta que no salga la siguiente versión no recibirás nuevos canales (a menos que los añadas tú manualmente), y recibirás actualizaciones de tus canales hasta que el responsable del canal decida incrementar el número de versión mínima de su canal a la "4.2.1 beta 1" (por ejemplo).

El canal seguirá funcionándote, simplemente no se actualizará hasta que no subas la versión. El control de versiones de cada canal individual lo llevará cada usuario en su instalación :)

Aparte de que el usuario se pueda instalar versiones anteriores, y cosas por el estilo, ¿se os ocurre algún caso donde esto no resuelva el problema sin necesidad de basarlo en ramas de git?

Re: Versionado de pelisalacarta (betas y finales)

Publicado: 05 Nov 2016, 20:29
por super_berny
jesus escribió:Añadiremos en el xml del canal la versión mínima
Teoricamente es cojonudo, en la practica ya veremos. En primer lugar debemos acostumbrar nos a actualizar el xml q muchas veces se nos olvida :roll: y en segundo lugar como puedo saber yo en q numero de version se va a aceptar mi PR?
jesus escribió:Esa era mi idea hasta que me di cuenta de que en realidad no hay ninguna diferencia entre una beta o una final, excepto que no tenemos mucha confianza en que esté libre de fallos. De ahí que salgan de "master", y que no tengan un id de plugin diferente.
Vamos a ver, segun yo lo veo la finalidad de las betas son 2:
  • De cara al desarrollo poder probar nuevas funcionalidades en un grupo de voluntarios q aceptan la posibilidad d tener errores. Hasta ahora realmente muy poca gente prueba lo q se mergea en develop hasta q se publica una nueva version. Y si hemos cometido un error grave (los cuadros de configuracion por canales + skins por ejemplo) nos damos cuenta cuando todo el mundo empieza a quejarse.
  • De cara al usuario q acepta el 'riesgo', tendra las nuevas funcionalidades antes (y por q no mayor soporte)
La rama Master deberia tener SIEMPRE codigo final, mientras q las betas deberian ser copia del codigo de develop.
  • Si alguna beta provoca un cataclismo se hace un reset de la rama develop (No hay q tocar nada en Master) y de nuevo hacia adelante.
  • Cuando llevemos unas cuantas betas por delante de Master y sus funcionalidades esten comprobadas se puede pasar a Master y publicar nueva version estable (no hace falta q sea la ultima beta N, podemos hacer version final la beta N-1 o N-3 por ejemplo)
  • ¿Cada cuanto habria q publicar una beta? Evidentemente todo depende de las PRs q se envien. ¿Es conveniente mergear todas las PR tal y como se reciben? Pues a veces si, a veces no. Las actualizaciones de canales/servidores por ejemplo, si deberian ser diarias, pero el resto de PR en ocasiones las creamos y despues descubrimos q nos hemos dejado algo o alguien puede mirarla y proponernos algun cambio. En estos casos creo q con mergear en el plazo de una semana podria estar bien. Con esta planificacion (y contando q haya cosas nuevas q probar claro :lol: ) yo propondria una beta cada 15 dias o cada mes por ejemplo. Betas mas constantes no van a dar tiempo a q los usuarios prueben y reporten.
  • La persona q no quiera correr riesgos solo actualizara versiones finales (Master) q habran tenido un recorrido previo como beta para garantizar unos fallos minimos (el fallo 0 es imposible)
Si no haces esa diferencia ¿q sentido tiene tener dos ramas en github?


La actualizacion de canales (con la version minima incluida) se pueden mergear igualmente en la rama develop y en la url de actualizacion tirar de esa rama.
Cuando alguien instale de cero una version final se instalaran los canales q en el momento de empaquetarla hubiesen en Master, pero al entrar en el canal (o con el ZIP ese q comentas) se actualizaran a la ultima version.

Re: Versionado de pelisalacarta (betas y finales)

Publicado: 05 Nov 2016, 22:40
por jesus
super_berny escribió:
jesus escribió:Añadiremos en el xml del canal la versión mínima
Teoricamente es cojonudo, en la practica ya veremos. En primer lugar debemos acostumbrar nos a actualizar el xml q muchas veces se nos olvida :roll: y en segundo lugar como puedo saber yo en q numero de version se va a aceptar mi PR?
Bueno, si no actualizas el XML el usuario no verá la actualización ja ja ja

En cuanto a lo de la versión mínima, es excepcional que un canal no funcione en una versión cualquiera de pelisalacarta.

Pero si se da el caso, está claro que si el canal que vas a enviar en forma de PR no funciona en la versión actual funcionará en la próxima. Que será la actual +1.

Y si no es así quizá hablamos de algo tan excepcional que podríamos comentarlo expresamente porque yo no lo veo ja ja ja
jesus escribió:Esa era mi idea hasta que me di cuenta de que en realidad no hay ninguna diferencia entre una beta o una final, excepto que no tenemos mucha confianza en que esté libre de fallos. De ahí que salgan de "master", y que no tengan un id de plugin diferente.
Vamos a ver, segun yo lo veo la finalidad de las betas son 2:
  • De cara al desarrollo poder probar nuevas funcionalidades en un grupo de voluntarios q aceptan la posibilidad d tener errores. Hasta ahora realmente muy poca gente prueba lo q se mergea en develop hasta q se publica una nueva version. Y si hemos cometido un error grave (los cuadros de configuracion por canales + skins por ejemplo) nos damos cuenta cuando todo el mundo empieza a quejarse.
  • De cara al usuario q acepta el 'riesgo', tendra las nuevas funcionalidades antes (y por q no mayor soporte)
Hasta aquí no se contradice lo que yo propongo. La diferencia es cómo lo llevas en Git.
La rama Master deberia tener SIEMPRE codigo final, mientras q las betas deberian ser copia del codigo de develop.
  • Si alguna beta provoca un cataclismo se hace un reset de la rama develop (No hay q tocar nada en Master) y de nuevo hacia adelante.
  • Cuando llevemos unas cuantas betas por delante de Master y sus funcionalidades esten comprobadas se puede pasar a Master y publicar nueva version estable (no hace falta q sea la ultima beta N, podemos hacer version final la beta N-1 o N-3 por ejemplo)
  • ¿Cada cuanto habria q publicar una beta? Evidentemente todo depende de las PRs q se envien. ¿Es conveniente mergear todas las PR tal y como se reciben? Pues a veces si, a veces no. Las actualizaciones de canales/servidores por ejemplo, si deberian ser diarias, pero el resto de PR en ocasiones las creamos y despues descubrimos q nos hemos dejado algo o alguien puede mirarla y proponernos algun cambio. En estos casos creo q con mergear en el plazo de una semana podria estar bien. Con esta planificacion (y contando q haya cosas nuevas q probar claro :lol: ) yo propondria una beta cada 15 dias o cada mes por ejemplo. Betas mas constantes no van a dar tiempo a q los usuarios prueben y reporten.
  • La persona q no quiera correr riesgos solo actualizara versiones finales (Master) q habran tenido un recorrido previo como beta para garantizar unos fallos minimos (el fallo 0 es imposible)
Si alguna beta provoca un cataclismo le dices al usuario que se instale la anterior y punto :)

Y si el cataclismo está en el propio updater estamos jodidos, claro, así que tendremos que probar expresamente antes de cada versión que al menos el usuario puede volver atrás en caso de problemas.

Luego en Git lo resuelves como quieras, pero ten en cuenta que no hablamos de un producto en desarrollo sino de uno terminado y en evolución.

Lo de "código final" es relativo... de hecho la frase "la rama Master deberia tener SIEMPRE codigo final" es tan jodida que sólo la salva el condicional "debería" ja ja ja
Si no haces esa diferencia ¿q sentido tiene tener dos ramas en github?
Master es la versión publicada, develop es la próxima en la que estamos trabajando.

Tan fácil de entender como de explicar.
La actualizacion de canales (con la version minima incluida) se pueden mergear igualmente en la rama develop y en la url de actualizacion tirar de esa rama.
Eso es lo que yo propongo (si no me he liado), la actualización de canales sale de develop.
Cuando alguien instale de cero una version final se instalaran los canales q en el momento de empaquetarla hubiesen en Master, pero al entrar en el canal (o con el ZIP ese q comentas) se actualizaran a la ultima version.
Eso es, creo que es lo que yo propongo también.

La diferencia es que mi idea es depender menos de Git, y creo que está justificado tanto por simplicidad para los PR como por gestión posterior.

La gente que quiera hacer una aportación la hace contra develop, siempre contra develop, ya sea del core o de canales. Es lo que habrá que explicar el 99% de las veces.

Si lo que has hecho es de canales (o servers) se actualizará por arte de magia en los dispositivos de los usuarios.

Y si lo que has hecho es de core tendrás que esperar a la próxima versión.

El responsable de publicar versiones pasa a master lo que vaya a publicar, y deja en develop lo que no.

Y si alguien quiere hacer algo que requiera una gestión más compleja, se hace un branch de develop y que trabaje sobre él.

Probablemente sea por mi desconocimiento del uso de Git, pero yo lo veo tan claro que no entiendo la necesidad de complicarme más con flujos y ramas adicionales.

Re: Versionado de pelisalacarta (betas y finales)

Publicado: 14 Nov 2016, 14:41
por SeiTaN
Jesús ¿se te puede echar una mano con el sistema de actualización? Yo ahora mismo he terminado lo que tenía pendiente y ando algo ocioso xD

Re: Versionado de pelisalacarta (betas y finales)

Publicado: 27 Nov 2016, 12:54
por Lortropic
Acordaros también de que tenéis una magnifica versión "mediaserver", que no sería la primera vez que lanzáis una nueva versión que va todo menos la mediaserver :lol:

No lo digo para que implementéis o no un sistema de actualización para la mediaserver, si no para que al menos saquéis una beta o algo que sea manualmente instalabe y se pueda comprobar que sigue funcionando.

Por ejemplo, el que hizo la versión mediaserver le funcionan los Favoritos (comentó) pero en ninguna versión liberada funcionan realmente. O cuando seitan metió los filtros, los canales que lo integraban se jodieron en la mediaser (pero esto lo arreglaron en la siguiente versión, aunque se podría haber visto con una simple beta o una prueba ejecutando la versión que se va a liberar como final).