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 |