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.
- Timestamp:
-
Jun 17, 2010, 6:23:58 PM (15 years ago)
- Author:
-
Víctor de Buen Remiro
- Comment:
-
--
Legend:
- Unmodified
- Added
- Removed
- Modified
-
|
v5
|
v6
|
|
| | 1 | [[PageOutline]] |
| | 2 | |
| 1 | 3 | = !TolPackage: Un sistema de desarrollo modular en red = |
| 2 | 4 | |
| … |
… |
|
| 18 | 20 | sino que son ellos mismos quienes se autogestionan. |
| 19 | 21 | |
| 20 | | Por último, hay que permitir que cada paquete evolucione sin excesivas |
| 21 | | ataduras de compatibilidad hacia atrás para que pueda progresar pero sin |
| 22 | | dejar tirados a los usuarios que por motivos de seguridad no pueden |
| 23 | | arriesgarse a actualizarse cada poco tiempo. |
| | 22 | También resulta de vital importancia permitir que cada paquete evolucione |
| | 23 | sin excesivas ataduras de compatibilidad hacia atrás para que pueda |
| | 24 | progresar pero sin dejar tirados a los usuarios que por motivos de seguridad |
| | 25 | no pueden arriesgarse a actualizarse cada poco tiempo. |
| | 26 | |
| | 27 | Por último, debe ser muy fácil de usar. Una vez cargado, el paquete es |
| | 28 | siempre global aunque se haya llamado desde un ámbito local puesto que |
| | 29 | tratándose de herramientas de uso general no tiene sentido tener tantos |
| | 30 | miramientos. Como contrapartida, un paquete no se puede descargar de |
| | 31 | la memoria una vez que ha sido cargado, pero eso tampoco es problema |
| | 32 | puesto que no ocupan un espacio significativo en comparación con los datos |
| | 33 | de los problemas que pueden resolver. |
| 24 | 34 | |
| 25 | 35 | == Arquitectura == |
| … |
… |
|
| 48 | 58 | == Creación de paquetes == |
| 49 | 59 | |
| 50 | | * Un paquete se crea como un NameBlock en un fichero principal del mismo |
| 51 | | nombre con extensión .tol y dentro de un directorio raíz llamado igual. El |
| 52 | | fichero principal puede cargar con #Embed los archivos auxiliares que |
| 53 | | necesite con nombre libre pero ubicación paralela o en subdirectorios del |
| 54 | | raíz. |
| 55 | | * En [source:/tolp/OfficialTolArchiveNetwork] pueden verse ejemplos de |
| 56 | | paquetes. Cada subdirectorio es un paquete. |
| 57 | | * Los nombres de los paquetes deben seguir el estilo CamelCase |
| 58 | | * Cuando un paquete requiere de otros se debe incluir las correspondientes |
| 59 | | sentencias #Require antes de la declaración del primer miembro. |
| | 60 | Un paquete se crea como un NameBlock pero con una serie de restricciones de |
| | 61 | obligado cumplimiento |
| | 62 | |
| | 63 | === Estructura === |
| | 64 | |
| | 65 | * Debe crearse en un fichero principal del mismo nombre con extensión .tol |
| | 66 | y dentro de un directorio raíz llamado igual. El fichero principal puede cargar |
| | 67 | con #Embed los archivos auxiliares que necesite con nombre libre pero ubicación |
| | 68 | paralela o en subdirectorios del raíz. |
| 60 | 69 | * Los miembros obligatorios del NameBlock de un paquete son: |
| 61 | 70 | * Text _.autodoc.brief = "Descripción cortísima en una línea". |
| … |
… |
|
| 68 | 77 | * Real _.autodoc.version.low = 1; |
| 69 | 78 | * Set _.autodoc.dependencies = [["paquete1","paquete2", ...]]; |
| | 79 | |
| | 80 | === Nomenclatura === |
| | 81 | |
| | 82 | * Los nombres de los paquetes deben seguir el estilo CamelCase |
| | 83 | * El nombre del archivo de una versión concreta de un paquete se obtiene |
| | 84 | como la concatenación del nombre del paquete seguido de un punto, el número |
| | 85 | _.autodoc.version.high, otro punto y el número _.autodoc.version.low |
| | 86 | * El nombre del NameBlock sin embargo es el mismo siempre por lo que se invocará |
| | 87 | sin usar los número de versión. |
| | 88 | * No es posible por tanto cargar dos versiones distintas de un mismo paquete en |
| | 89 | la misma sesión TOL. |
| | 90 | * Sí es posible cargar diferentes versiones de un mismo NameBlock en una misma |
| | 91 | máquina en sesiones de TOL distintas, coincidentes o no en el tiempo. |
| | 92 | |
| | 93 | === Código declarativo === |
| | 94 | |
| 70 | 95 | * Puesto que un paquete se almacena como un módulo OZA, está terminantemente |
| 71 | 96 | prohibido que un NameBlock ejecute acciones de ningún tipo durante su creación. |
| … |
… |
|
| 79 | 104 | tener un método [[BR]] {{{ Real StartActions(Real void) { ... }; }}} [[BR]] el |
| 80 | 105 | cual será llamado justo después de ser cargado por el #Require por vez primera. |
| 81 | | * El nombre del archivo de una versión concreta de un paquete se obtiene |
| 82 | | como la concatenación del nombre del paquete seguido de un punto, el número |
| 83 | | _.autodoc.version.high, otro punto y el número _.autodoc.version.low |
| | 106 | |
| | 107 | === Dependencias === |
| | 108 | |
| | 109 | * Cuando un paquete requiere de otros se debe incluir las correspondientes |
| | 110 | sentencias #Require antes de la declaración del primer miembro. |
| 84 | 111 | * Si no se especifica números de versión el #Require cargará la versión más |
| 85 | 112 | actual que corresponderá siempre al archivo con el nombre del paquete nada |
| … |
… |
|
| 102 | 129 | caería en un ciclo infinito y no hay forma de detectarlo luego es |
| 103 | 130 | responsabilidad de los desarrollodares del repositorio el evitarlo. |
| | 131 | |
| | 132 | === Documentación y chequeo de calidad === |
| | 133 | |
| 104 | 134 | * Cada paquete debe estar dotado de documentación autocontenida de manera |
| 105 | 135 | que cualquier usuario pueda aprender a usarlo por sí mismo. Queda por ver si |
| … |
… |
|
| 110 | 140 | colgando directamente de la raíz del paquete. |
| 111 | 141 | |
| | 142 | En [source:/tolp/OfficialTolArchiveNetwork] pueden verse ejemplos de paquetes. |
| | 143 | Cada subdirectorio es un paquete. |
| | 144 | |
| 112 | 145 | == Creación de repositorios == |
| | 146 | |
| | 147 | En el archivo [source:/tolp/OfficialTolArchiveNetwork/_upload.tol] |
| | 148 | puede verse como ejemplo el programa de creación y subida de |
| | 149 | [http://packages.tol-project.org/OfficialTolArchiveNetwork/ |
| | 150 | OfficialTolArchiveNetwork], el repositorio oficial de paquetes del equipo de |
| | 151 | desarrollo de TOL. |
| 113 | 152 | |
| 114 | 153 | * El repositorio es un directorio plano con unos archivos obligatorios: |
| … |
… |
|
| 117 | 156 | * index.csv: Listado de los paquetes y su información asociada: fecha, |
| 118 | 157 | versión, dependencias, etc. |
| 119 | | * En el archivo [source:/tolp/OfficialTolArchiveNetwork/_upload.tol] |
| 120 | | puede verse como ejemplo el programa de creación y subida de [http://packages.tol-project.org/OfficialTolArchiveNetwork/ OfficialTolArchiveNetwork], el repositorio |
| 121 | | oficial de paquetes del equipo de desarrollo de TOL. |
| 122 | 158 | * Debe haber un comité o alguien responsable de probar todos los paquetes de |
| 123 | 159 | un repositorio antes de publicar las actualizaciones de los paquetes para |