close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Changes between Version 19 and Version 20 of TolPackageRulesAndComments


Ignore:
Timestamp:
Oct 13, 2010, 10:42:00 AM (14 years ago)
Author:
Víctor de Buen Remiro
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TolPackageRulesAndComments

    v19 v20  
    108108  ]] };
    109109   }}}
    110 === Nomenclatura y versionado ===
    111 
    112  * Los nombres de los paquetes deben seguir el estilo CamelCase
    113  * No puede haber paquetes con el mismo nombre de NameBlock ni en el mismo ni
    114    en distinto repositorio, pues todos los paquetes compartirán un mismo
    115    almacén de cliente vengan del repositorio que vengan.
    116  * El nombre del archivo de una versión concreta de un paquete se obtiene
    117    como la concatenación del nombre del paquete seguido de un punto, el número
    118    _.autodoc.version.high, otro punto y el número _.autodoc.version.low
    119  * El nombre del NameBlock sin embargo es el mismo siempre, por lo que se invocará
    120    sin usar los números de versión.
    121  * No es posible por tanto cargar dos versiones distintas de un mismo paquete en
    122    la misma sesión TOL.
    123  * Sí es posible cargar diferentes versiones de un mismo NameBlock en una misma
    124    máquina en sesiones de TOL distintas, coincidentes o no en el tiempo.
     110=== Control de versiones ===
     111
     112El objetivo del control de versiones es que en el repositorio se puedan almacenar todas las
     113versiones binarias de cada paquete que hayan sido publicadas de forma histórica, pues sólo de
     114esta forma se puede asegurar que cada usuario pueda utilizar la versión compatible con todo
     115su sistema, y que pueda a lo largo del tiempo, y accediendo a las novedades que le interesen
     116fijando su propio ritmo de actualización, sin tener que estar siempre a la última, lo cual
     117puede ser peligroso en sistemas de mantenimiento de producción en tiempo real, ni tampoco
     118atándose a una versión congelada que no admite mejora ninguna.
     119
     120 * El nombre del archivo en el que se almacena una versión concreta de un paquete se obtiene
     121   como la concatenación del nombre del paquete, que debe coincidir con el miembro redundante
     122   {{{_.autodoc.name}}}, seguido de un punto, el número {{{_.autodoc.version.high}}}, otro
     123   punto y el número {{{_.autodoc.version.low}}}.
     124 * El nombre del NameBlock sin embargo es el mismo siempre, a lo largo de toda la evolución
     125   del paquete, por lo que se invocará sin usar los números de versión, salvo en la orden
     126   {{{#Require}}}, si se desea cargar una versión concreta.
     127 * No es posible por tanto cargar dos versiones distintas de un mismo paquete en la misma
     128   sesión TOL.
     129 * Sí que es posible cargar diferentes versiones de un mismo NameBlock en una misma máquina
     130   en sesiones de TOL distintas, coincidentes o no en el tiempo.
     131 * No puede haber paquetes con el mismo nombre de NameBlock ni en el mismo ni en distinto
     132   repositorio, pues todos los paquetes compartirán un mismo  almacén de cliente vengan
     133   del repositorio que vengan. El sistema de instalación y mantenimiento de paquetes debe
     134   avisar si existen conflictos entre distintos repositorios.
     135 * De forma opcional el paquete puede incorporar en _.autodoc.versionControl información
     136   adicional sobre el mecanismo de control de versiones utilizado en su desarrollo
     137   (SVN, CVS, ...) que indique cómo recuperar el código fuente exacto con el que fue
     138   construido el paquete. Esta información podría usarse de forma manual y sólo en caso de
     139   tener que rehacer un paquete antiguo que se hubiera perdido o que se quisiera modificar
     140   por un problema grave, y que fuera requerido en algún proceso de vital importancia.
     141   Llegados a este caso habría que plantearse si el paquete modificado debe sobreescribir el
     142   existente en el repositorio o se debe usar sólo de forma local donde se precise.
     143
     144==== Nomenclatura ====
     145
     146 Aunque no hay ninguna normativa general al respecto, salvo en el caso del repositorio
     147 público oficial de TOL en el que serán de obligado cumplimiento, se aconseja tomar las
     148 siguientes medidas con respecto a la nomenclatura de los paquetes:
     149 
     150 * Los nombres de los paquetes deberían seguir el estilo CamelCase que permite una mayor
     151   claridad y una mejor organización de los mismos si se reservan partículas con
     152   significado preestablecido.
     153 * Aumentar el primer número de forma secuencial progresiva de uno en uno, empezando
     154   desde el 1, reservando el 0 para versiones de pruebas no publicadas. Sólo se debería
     155   modificar si se da un cambio, o una acumulación de cambios, que suponga alteraciones
     156   importantes en el modo de uso o las capacidades del paquete.
     157 * Aumentar el segundo número cada vez que se modifica el paquete en cualquier cosa que
     158   pueda ser incompatible con lo anterior en cualquier aspecto por pequeño que sea. Si
     159   no se modificara al publicarlo sobreescribirá el anterior y será imposible que los
     160   usuarios utilicen la versión eliminada si por cualquier motivo la nueva no les sirve.
     161 * Cuando se aumenta el primer número se debería reiniciar el segundo.
     162 * Al segundo dígito se le puede intentar dotar de cierta semántica propia del paquete
     163   o de u proyecto o departamento, obligando a que tengan más o menos cifras. Por ejemplo,
     164   podrían ser de la forma XxYy, con X,Y=1..9; x,y=0..9; significando Yy para cierto
     165   tipo de cambios menores o más frecuentes y Xx para otros de mayor calado.
     166 * Si se produce un cambio meramente ornamental, de documentación, o que resuelva un
     167   problema menor que no pueda tener ningún tipo de efecto secundario se puede
     168   sobreescribir el paquete publicado, aunque esto debería hacerse sólo como último
     169   recurso, lo más aconsejable es acumular esos pequeños cambios para la siguiente
     170   versión.
     171
     172==== Dependencias ====
     173
     174 * Cada versión de un paquete requiere de una versión mínima de TOL dada por el
     175   miembro _.autodoc.minTolVersion que asegura su funcionamiento, aunque podría ser
     176   que funcionara con versiones anteriores, sin que sea fácil asegurarlo a ciencia
     177   cierta. Es de vital importancia revisar este campo antes de publicar una nueva
     178   versión de un paquete si ha habido cambios en la versión de TOL que pudieran
     179   afectarle y que hubieran ocurrido desde la publicación de la última versión del
     180   paquete. En principio sólo es preciso actualizar {{{_.autodoc.minTolVersion}}}
     181   si se hace uso de alguna nueva capacidad de TOL, lo cual no siempre es trivial
     182   conocer. En caso de duda es mejor actualizar de más que de menos.
     183 * Cuando un paquete requiere de otros se debe incluir las correspondientes
     184   sentencias #Require antes de la declaración del primer miembro.
     185 * Cuando el {{{#Require}}} no menciona la versión concreta del paquete que se
     186   desea cargar entonces se utilizará la versión más moderna existente localmente
     187   que sea compatible con la versión del TOL con el que se esté trabajando.
     188 * Si se solicita una versión concreta, entonces se debe cargar previamente cada
     189   uno de los paquetes requeridos directa o indirectamente.
     190 * Téngase en cuenta que no es posible cargar versiones concretas de paquetes que
     191   tengan requerimientos de diferentes versiones de un mismo paquete.
     192 * La definición del paquete siempre debe usar #Require sin especificar una
     193   versión concreta.
     194 * Obsérvese que los paquetes requeridos se deben especificar por duplicado:
     195   primero en los #Require sin comillas y luego en Set _.autodoc.dependencies
     196   entre comillas pues esta información la necesita el gestor de repositorios.
     197 * No está permitido el requerimiento cíclico directo ni indirecto entre
     198   paquetes, es decir, si A requiere a B directa o indirectamente B no puede
     199   requerir a A ni directa ni indirectamente. El sistema gestor de repositorios
     200   caería en un ciclo infinito y no hay forma de detectarlo luego es
     201   responsabilidad de los desarrolladores del repositorio el evitarlo.
    125202
    126203=== Código declarativo ===
     
    182259   }}}
    183260
    184 === Dependencias ===
    185 
    186  * Cuando un paquete requiere de otros se debe incluir las correspondientes
    187    sentencias #Require antes de la declaración del primer miembro.
    188  * Si no se especifican números de versión el #Require cargará la versión más
    189    actual compatible con la versión de TOL que se esté ejecutando. En el
    190    caso de la última versión de TOL, corresponderá al archivo con el nombre del
    191    paquete nada más. En este caso, los paquetes que requiera directa o
    192    indirectamente serán también las últimas versiones compatibles con TOL.
    193  * Si se solicita una versión concreta, entonces se debe cargar previamente cada
    194    uno de los paquetes requeridos directa o indirectamente. El propio
    195    {{{#Require}}} se encargará de buscar las versiones adecuadas en el
    196    repositorio local, de instalarlas si no las encuentra, y de dar un mensaje
    197    de error si no lo consigue para que se haga manualmente.
    198  * Téngase en cuenta que no es posible cargar versiones concretas de paquetes que
    199    tengan requerimientos de diferentes versiones de un mismo paquete.
    200  * La definición del paquete siempre debe usar #Require sin especificar una
    201    versión concreta.
    202  * Obsérvese que los paquetes requeridos se deben especificar por duplicado:
    203    primero en los #Require sin comillas y luego en Set _.autodoc.dependencies
    204    entre comillas pues esta información la necesita el gestor de repositorios.
    205  * No está permitido el requerimiento cíclico directo ni indirecto entre
    206    paquetes, es decir, si A requiere a B directa o indirectamente B no puede
    207    requerir a A ni directa ni indirectamente. El sistema gestor de repositorios
    208    caería en un ciclo infinito y no hay forma de detectarlo luego es
    209    responsabilidad de los desarrolladores del repositorio el evitarlo.
     261
    210262
    211263=== Documentación y chequeo de calidad ===
     
    266318   un repositorio antes de publicar las actualizaciones de los paquetes para
    267319   asegurar la compatibilidad conjunta de todos ellos.
    268