Archive
Funcionamiento de sesiones en Chamilo LMS 1.10
“Sesiones” es un término ambiguo, el problema siendo encontrarles un nombre adecuado para todos los usos. Algunos otros nombres son:
- Programas
- Programas académicos
- Periodos (aunque esta denominación es algo equivocada – existe otra noción que conviene más, que es la categoría de sesiones)
- Ciclo (de aprendizaje)
- Sección
- …
En realidad, las sesiones representan un periodo (generalmente limitado) de tiempo durante el cual un grupo de alumnos sigue uno o más cursos con el acompañamiento de un profesor designado para este curso durante este periodo. Por ello, en muchas ocasiones usamos en el pasado la representación siguiente

Sesiones
A la izquierda del diagrama, reconocemos el tríangulo clásico Profesor – Curso – Alumnos, y al centro del diágrama vemos que el mismo curso se encuentra con otro curso al mismo nivel, y con un responsable distinto del profesor quien elaboró el curso inicialmente.
En las versiones de Chamilo anteriores a la 1.10, disponíamos de 4 fechas para cada sesión:
- Inicio de acceso para los docentes
- Inicio de acceso para los alumnos
- Fin de acceso para los alumnos
- Fin de acceso para los docentes
La lógica de la diferencia de fin de acceso entre docentes y alumnos, es que el docente pueda preparar su curso (previamente a la apertura a los alumnos) y recuperar datos importantes (después delcierre para los alumnos), y que la sesión pueda “vencerse” y disaparecer del listado del docente, para que este pueda concentrarse sobre las sesiones más recientes.
En Chamilo LMS 1.10, agregamos dos fechas más, que son únicamente informativas. Así, tenemos las 6 fechas siguientes:

Fechas de sesiones
- Inicio de acceso para los docentes
- Inicio de acceso para los alumnos
- Inicio oficial del ciclo/programa/sesión
- Fin oficial del ciclo/programa/sesión
- Fin de acceso para los alumnos
- Fin de acceso para los docentes
En la imagen lateral, podemos ver, por ejemplo, la selección de las fechas siguientes:
- Inicio de acceso para los docentes: 2012-11-01 (un mes antes)
- Inicio de acceso para los alumnos: 2012-11-26 (unos días antes)
- Inicio oficial del ciclo/programa/sesión: 2012-12-01 (el día de lanzamiento, como visto en la lista de cursos)
- Fin oficial del ciclo/programa/sesión: 2012-12-31 (el día de cierre, como visto en la lista de cursos)
- Fin de acceso para los alumnos: 2013-01-04 (unos días después)
- Fin de acceso para los docentes: 2013-01-31 (un mes después)
Como si esto no fuera suficiente a nivel de flexibilidad, también es posible cambiar el comportamiento de las sesiones cuando pasó la fecha de cierre (para alumnos o para docentes).
Los tipos de acceso son:
- Acceso completo
- Acceso en lectura sola
- Sin acceso
El caso “Acceso completo” sirve para *ignorar* las fechas definidas. Por ejemplo, por un tiempo limitado, se reabre la sesión para el acceso de todos.
El caso “Acceso en lectura sola” permite acceder pasada la fecha de cierre. En este caso, la sesión aparece en la página “historial de cursos” y el acceso para consultas es posible pero no se puede participar más en ninguna herramienta de participación (foro, ejercicios, wiki, etc).
El caso “Sin acceso” cierra por completo el acceso a la sesión a partir de la fecha de cierre para el rol correspondiente. Por ejemplo, si soy alumno y estoy inscrito en la sesión que tiene como fecha de fin de acceso para alumnos el 04/01/2013, al pasar al 05/01/2013, disaparece esta sesión de mi lista. Tampoco se puede ver en mi historial de curso. El docente, no obstante, seguirá viéndola en su lista de cursos hasta el 31/01/2013.
Porque cobramos por media hora?
Para las empresas que recién se lanzan en temas de sopoprte en el mundo del software, y para nuestros clientes que quizás se preguntan porqué cobramos un mínimo de media hora por intervención, me gustaría explicar un poco mejor lo que hacemos.
Nuestro negocio, básicamente, es desarrollar sistemas de información (en particular Chamilo, Drupal y Dolibarr) y dar soporte sobre ellos (esto incluye también cuidar los servidores que los alojan). Toda esta actividad radica en los servicios “humanos” de personas altamente calificadas para brindar estos servicios a quien los necesiten.
Para definirlo de forma simplística, alquilamos actividad cerebral, es decir que damos acceso a nuestros clientes a mentes brillantes para que resuelvan problemas para ellos, y les permitimos alquilar estas mentes brillantes solo cuando las necesiten.
Por lo tanto, también estamos tomando una gran cantidad de riesgo al poner estas mentes brillantes a su disposición (si nadie las quiere por un tiempo, tenemos que seguir asgurando sus ingresos).
También pueden haber cantidades de discusiones sobre la manera en la cual un cierto problema es considerado resuelto o no, pues los problemas de software muchas veces se indican de forma interpretada, dando las impresiones personales de cada uno porque cada uno tiene circonstancias particulares y vive sus problemas de maneras distintas. Mucho de este trabajo no puede ser contabilizado sin generar frustraciones. Por lo tanto, el trabajo de nuestros responsables de soporte, responsables del diálogo con los clientes y de ser más explícitos para facilitar este diálogo, está contabilizado como parte del tiempo de resolución del problema.
Analizando el tiempo necesario para un ingeniero para resolver un problema, aparecen de forma más clara las razones por las cuales se considera un tiempo mínimo de atención. Estos son tiempos mínimos aproximados basados en la realidad de la mayoría de los casos que atendemos. Se considera (en este caso) que la ficha del cliente, indicando los accesos comunes al sistema del cliente ya fueron registrados:
- 60s: Lectura del correo/mensaje del cliente
- 240s: Registro de la incidencia (incluye: clasificación, designación de título claro que permitirá luego apoyarse en esta incidencia para cortar el tiempo de tratamiento de otras, indicación copiado-pegado del detalle del reporte por el cliente, asignación de las personas que deben estar al tanto de esta incidencia, asignación de un tiempo aproximado de resolución, asignación de un momento aproximado de entrega, definición de dependencias con otras incidencias, etc)
- 60s: Conexión al sistema del cliente (o a una copia local) y reproducción del problema
- 60s: Creación de nuevo contexto de prueba que permita reproducir la incidencia en un sistema que no afecte al cliente (para el tiempo de trabajo en este)
- 300s: Investigación y, quizás, resolución del problema (se trata de un tiempo mínimo, en caso de poder aprovechar a su máximo la experiencia de nuestros ingenieros, pero no son raros los casos en los cuales esta resolución pueda tomar más de 2h)
- 120s: Verificar, una última vez, que la corrección resolvió el problema
- 60s: Registrar el cambio en nuestros repositorios de historial para cada cliente – esto implica también vincularlo con el código de la incidencia y darle un comentario adecuado
- 180s: Reportar al cliente (y en la incidencia) sobre la resolución (o no) de la incidencia
- 120s: Terminar, reportar su tiempo consumido, tomar 1 minuto de relajación para pasar a otra tarea
En total, el tratamiento de una sola incidencia representa un trabajo mínimo de 20 minutos, y en promedio (con la resolución de temas más complejos) más de media hora.
Por esta razón, nos es imposible asegurar, en buenas condiciones de seriedad y concentración, asegurar un tiempo de intervención menor a 20 minutos.
Tunel SSH revertido
Si tienes la suerte de tener un servidor al cual te puedes conectar en SSH, y tienes que conectarte (en terminal, en SSH) a la compu de un amigo que está atrás de un router, este tutorial es para ti!
Un tunel SSH es un especie de “canal” virtual dentro del cual los datos pueden pasar de una compu a otra. Como SSH es un protocolo seguro, se asume que estos datos, pasando ahí, son tan seguros que SSH mismo.
Cuando una compu está a trás de un router, el problema es que uno puede acceder al router pero no a la compu misma. Se puede arreglar configurando un firewall con redirección de puertos en el router, pero ya es algo avanzado, y si no tienes la mano sobre el router y tu amigo no sabe como configurarlo… estás frito.
La solución entonces es:
- que el amigo se conecte a tu servidor en SSH (le puedes habilitar una cuenta o dar tu cuenta con otra contraseña)
- que te conectes también al mismo sevidor
- en el servidor mismo, que te conectes al puerto en el cual tu amigo se conectó
Por ejemplo…
Tu amigo:
ssh -R 54321:localhost:22 usuariocompartido@138.47.99.99
Tu:
ssh usuariocompartido@138.47.99.99 ssh localhost -p 54321
Y ya está! Estas en el servidor de tu amigo, conectado en SSH!
Problemas al crear cursos en chamilo despues de una instalación – ERROR 500
Hola a todos,
Me acaban de llamar y escribir para reportarme un error que es común cuando se hace una instalación de la plataforma Chamilo 1.8.4.2 en un hosting y para no volverlo a repetir o tener problemas, por que no estoy disponible. Informo y detallo el error y la solución:
ERROR 500
Este usuario ha instalado su plataforma, pero al crear un curso le muestra este error:
SOLUCIÓN:
Paso 1: Ingresar como administrador al portal
Paso 2: Ingresar a la pestaña de: Administrador > Parámetros de Configuración de la Plataforma > Seguridad
Paso 3: Buscar dentro de la configuración “Seguridad”
- Permisos para los nuevos directorios (0777)
- Permisos para los nuevos archivos (0666)
Paso 4 :Cambiar los permisos de seguridad:
- Permisos para los nuevos directorios (0755)
- Permisos para los nuevos archivos (0644)
Guardar configuración y Listo! :)
Nota: Este arreglo sera visible solo para los nuevos cursos (cursos creados después del arreglo), cursos (antes del arreglo) tienen que ser eliminados y creados otra vez.
Fuente de datos para tesis sobre Chamilo
Esto siendo un pedido recurrente, si estás buscando información acerca de Chamilo para hacer una tesis, aquí van unos enlaces interesantes.
- http://t.co/kFtltNHN
- http://t.co/zV1rQHvI
- http://t.co/YflTSbHw
- http://t.co/BDL4OCVF
- http://t.co/gX5ShIl0
- http://t.co/6MiCAMfg
- http://t.co/zNMhitaK
- http://t.co/xfslY3yV
Ojo que la asociación Chamilo aceptará con gusto de publicar tu tesis en su sitio web, y esto será considerado como una aportación al proyecto, ya que facilita la toma de decisión por otras personas. Envíanos un correo a communication -at- chamilo.org
Instalar Chamilo en una XO 1.0
Revolucionando el modelo de distribución de contenido pedagógico en zonas rurales de paises en desarrollo…
Este artículo sigue mi previo artículo sobre la XO y un intento para instalar Chamilo como servidor, intento que falló por falta de RAM. El objetivo aquí es de permitir a otros, a partir de este procedimiento, de instalar por completo un servidor de Chamilo (a la excepción de la videoconferencia y del convertidor de PowerPoint en lecciones) para permitir su uso con otras XO en un salón de clase sin conectividad a internet.
La idea es que el aporte en salón de clase permita introducir una noción de e-learning colaborativo y a distancia en un pueblo, y la acumulación de recursos educativos (y su posible re-uso a partir de cursos elaborados por el ministerio de educación, descargables desde una cabina internet e instalables en una versión local de Chamilo). Faltan unos pasos todavía en este procedimiento general, pero en la medida de lo posible esta guía debería eliminar unas barreras comunes en el montaje de la plataforma.
El cambio de modelo de distribución de contenido pedagógico que este pequeño paso implica tiene un impacto posiblemente gigantesco para los 2 próximos años.
Paso 0: Conectarse a internet
Para todo lo que sigue, se supone que la XO estará conectada a internet por un buen tiempo. Si no tiene la posibilidad de mantenerla conectada, aguarde este procedimiento hasta tener esta oportunidad, sino podría tener que dejar el procedimiento en el medio, lo que podría dañar su sistema.
Paso 1: actualizar la XO (opcional)
Si tiene una XO que fecha un poco, vale la pena actualizarla. Se puede actualizar la XO a partir del sitio de OLPC, siguiendo el procedimiento explicado aquí: http://wiki.laptop.org/go/Olpc-update#Simple_online_update y en particular para la versión de Julio de 2011, el procedimiento exacto aquí: http://wiki.laptop.org/go/Release_notes/11.2.0#XO-1_2 . Se planifica una nueva versión para Noviembre 2011. A este momento, será necesario consultar la página siguiente: http://wiki.laptop.org/go/Releases para saber cual es la última versión.
En esta explicación, me basaré en un sistema de Julio 2011.
Paso 2: actualizar la base de aplicaciones disponibles para el sistema operativo
Una vez instalada la actualización, será necesario actualizar la base de aplicativos disponibles en total libertad para instalar en su XO. Para esto, usaremos un comando propio al sistema operativo (en base a Linux RedHat), pero primero tenemos que conectarnos como se debe.
En la laptop, presione simultáneamente las teclas CTRL + ALT + F3 (o el tercer botón a partir de arriba a la izquierda en el teclado, el que normalmente da la vista de redes inalámbricas disponibles alrededor). Esto les dará una vista terminal. Se puede regresar a la vista gráfica en cualquier momento presionando CTRL + ALT + F5 (o el quinto botón a partir de la izquierda). Si en cualquier momento se siente perdido, puede apagar la laptop para después reiniciarla, presionando y manteniendo el podón de encendido/apagado por más de 5 segundos.
Una vez en el terminal, lanzar los comandos siguientes:
-bash-3.2# su
bash-3.2#
Note la diferencia entre las dos líneas… cuando no haya un prefijo “-”, significa que está en modo administrador. Por lo tanto, puede hacer cosas peligrosas para el sistema. Para salir de este modo, simplemente entrar el comando “exit” seguido de la tecla “enter”. Siga bien las instrucciones siguientes para no hacer nada daniño para su XO.
bash-3.2# yum update
Aparecerán progresivamente unas líneas como sigue:
updates-newkey | 3.4 kB 00:00
8b20a393f4caa93598f1148bc171d320b45c1814-primary.sqlite. | 4.4 MB 04:26
fedora | 2.4 kB 00:00
primary.sqlite.bz2 | 6.1 MB 01:40
olpc_development | 1.9 kB 00:00
primary.sqlite.bz2 | 565 kB 00:11
olpc-joyride | 951 B 00:00
primary.xml.gz | 82 kB 00:03
olpc-joyride 325/325
updates | 2.6 kB 00:00
primary.sqlite.bz2 | 9.1 kB 00:00
Excluding Packages from Fedora 9 – i386 – Updates Newkey
Finished
Excluding Packages from Fedora 9 – i386
Finished
Excluding Packages from OLPC Development repo based off of Fedora 9
Finished
Excluding Packages from Fedora 9 – i386 – Updates
Finished
Setting up Update Process
Resolving Dependencies
–> Running transaction check
–> Processing Dependency: NetworkManager >= 0.6.5 for package: olpc-update
—> Package NetworkManager-glib.i386 1:0.7.1-1.fc9 set to be updated
–> Processing Dependency: NetworkManager = 1:0.7.1-1.fc9 for package: NetworkManager-glib
–> Finished Dependency Resolution
1:NetworkManager-glib-0.7.1-1.fc9.i386 from updates-newkey has depsolving problems
–> Missing Dependency: NetworkManager = 1:0.7.1-1.fc9 is needed by package 1:NetworkManager-glib-0.7.1-1.fc9.i386 (updates-newkey)
olpc-update-2.18-1.noarch from installed has depsolving problems
–> Missing Dependency: NetworkManager >= 0.6.5 is needed by package olpc-update-2.18-1.noarch (installed)
Error: Missing Dependency: NetworkManager = 1:0.7.1-1.fc9 is needed by package 1:NetworkManager-glib-0.7.1-1.fc9.i386 (updates-newkey)
Error: Missing Dependency: NetworkManager >= 0.6.5 is needed by package olpc-update-2.18-1.noarch (installed)
Dejelo acabar tránquilamente (puede tomar un cierto tiempo).
Paso 3: Instalar el software necesario
Una vez recupere la mano (línea con cursor cuadrado cintillando), entre los comandos siguientes:
bash-3.2# yum install nginx mysql-server mysql php php-mysql php-common php-gd php-mbstring
Esto les dará un resultado largote como el siguiente, al fin del cual se les preguntará si están de acuerdo con descargar algo de 29M (les había dicho: es necesario tener una conexión internet por un rato). indicar que sí, presionando “y”.
Excluding Packages from Fedora 9 – i386 – Updates Newkey
Finished
Excluding Packages from Fedora 9 – i386
Finished
Excluding Packages from OLPC Development repo based off of Fedora 9
Finished
Excluding Packages from Fedora 9 – i386 – Updates
Finished
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
–> Running transaction check
—> Package mysql-server.i386 0:5.0.77-1.fc9 set to be updated
–> Processing Dependency: perl-DBD-MySQL for package: mysql-server
–> Processing Dependency: perl(POSIX) for package: mysql-server
–> Processing Dependency: libmysqlclient_r.so.15(libmysqlclient_15) for package: mysql-server
–> Processing Dependency: perl(warnings) for package: mysql-server
–> Processing Dependency: perl(Data::Dumper) for package: mysql-server
–> Processing Dependency: perl(strict) for package: mysql-server
–> Processing Dependency: perl(Sys::Hostname) for package: mysql-server
–> Processing Dependency: perl(File::Path) for package: mysql-server
–> Processing Dependency: libmysqlclient.so.15(libmysqlclient_15) for package: mysql-server
–> Processing Dependency: perl-DBI for package: mysql-server
–> Processing Dependency: perl(Getopt::Long) for package: mysql-server
–> Processing Dependency: perl(vars) for package: mysql-server
–> Processing Dependency: perl(File::Copy) for package: mysql-server
–> Processing Dependency: /usr/bin/perl for package: mysql-server
–> Processing Dependency: perl(File::Temp) for package: mysql-server
–> Processing Dependency: libmysqlclient.so.15 for package: mysql-server
–> Processing Dependency: perl(DBI) for package: mysql-server
–> Processing Dependency: perl(File::Basename) for package: mysql-server
–> Processing Dependency: libmysqlclient_r.so.15 for package: mysql-server
—> Package mysql.i386 0:5.0.77-1.fc9 set to be updated
—> Package nginx.i386 0:0.6.36-1.fc9 set to be updated
–> Processing Dependency: libperl.so for package: nginx
—> Package php-mysql.i386 0:5.2.9-2.fc9 set to be updated
–> Processing Dependency: php-pdo for package: php-mysql
—> Package php-common.i386 0:5.2.9-2.fc9 set to be updated
–> Running transaction check
—> Package perl.i386 4:5.10.0-68.fc9 set to be updated
–> Processing Dependency: perl(Module::Pluggable) for package: perl
–> Processing Dependency: perl(version) for package: perl
–> Processing Dependency: perl(Pod::Simple) for package: perl
—> Package perl-DBD-MySQL.i386 0:4.005-8.fc9 set to be updated
—> Package perl-libs.i386 4:5.10.0-68.fc9 set to be updated
—> Package php-pdo.i386 0:5.2.9-2.fc9 set to be updated
—> Package perl-DBI.i386 0:1.607-1.fc9 set to be updated
—> Package mysql-libs.i386 0:5.0.77-1.fc9 set to be updated
–> Running transaction check
—> Package perl-Pod-Simple.i386 1:3.07-68.fc9 set to be updated
–> Processing Dependency: perl(Pod::Escapes) >= 1.03 for package: perl-Pod-Simple
—> Package perl-Module-Pluggable.i386 1:3.60-68.fc9 set to be updated
—> Package perl-version.i386 3:0.74-68.fc9 set to be updated
–> Running transaction check
—> Package perl-Pod-Escapes.i386 1:1.04-68.fc9 set to be updated
–> Finished Dependency ResolutionDependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
mysql i386 5.0.77-1.fc9 updates-newkey 3.3 M
mysql-server i386 5.0.77-1.fc9 updates-newkey 9.8 M
nginx i386 0.6.36-1.fc9 updates-newkey 328 k
php-common i386 5.2.9-2.fc9 updates-newkey 238 k
php-mysql i386 5.2.9-2.fc9 updates-newkey 81 k
Installing for dependencies:
mysql-libs i386 5.0.77-1.fc9 updates-newkey 1.5 M
perl i386 4:5.10.0-68.fc9 updates-newkey 11 M
perl-DBD-MySQL i386 4.005-8.fc9 fedora 165 k
perl-DBI i386 1.607-1.fc9 updates-newkey 776 k
perl-Module-Pluggable i386 1:3.60-68.fc9 updates-newkey 29 k
perl-Pod-Escapes i386 1:1.04-68.fc9 updates-newkey 23 k
perl-Pod-Simple i386 1:3.07-68.fc9 updates-newkey 196 k
perl-libs i386 4:5.10.0-68.fc9 updates-newkey 904 k
perl-version i386 3:0.74-68.fc9 updates-newkey 33 k
php-pdo i386 5.2.9-2.fc9 updates-newkey 63 kTransaction Summary
================================================================================
Install 15 Package(s)
Update 0 Package(s)
Remove 0 Package(s)Total download size: 29 M
Is this ok [y/N]: y
Esto les dará ya otra pantalla de descarga como esta:
Downloading Packages:
(1/15): perl-Pod-Escapes-1.04-68.fc9.i386.rpm | 23 kB 00:03
(2/15): perl-Module-Pluggable-3.60-68.fc9.i386.rpm | 29 kB 00:02
(3/15): perl-version-0.74-68.fc9.i386.rpm | 33 kB 00:02
(4/15): php-pdo-5.2.9-2.fc9.i386.rpm | 63 kB 00:02
(5/15): php-mysql-5.2.9-2.fc9.i386.rpm | 81 kB 00:03
(6/15): perl-DBD-MySQL-4.005-8.fc9.i386.rpm | 165 kB 00:09
(7/15): perl-Pod-Simple-3.07-68.fc9.i386.rpm | 196 kB 00:30
(8/15): php-common-5.2.9-2.fc9.i386.rpm | 238 kB 00:52
Es probable que el sistema le pide confirmación varias veces. Es muy probable que no haya ningun riesgo mayor en validar esta pedidas de seguridad. En realidad, existe un riesgo pero es muy poco probable que alguien esté destinando algo malicioso para las XO, por lo tanto y por enfoque a la sencillez ante todo, ignoramos este paso.
Ahora queremos descargar Chamilo, pero no cualquier versión de Chamilo. Queremos una versión disminuida con solo los idiomas Inglés, Español, Francés, Brasilenio y Quechua. Por lo tanto podemos lanzar el comando siguiente:
wget http://chamilo.googlecode.com/files/chamilo-1.8.8.4-mini.tar.gz
Si la última versión de Chamilo es distinta de la 1.8.8.4, puede averiguar la URL correcta desde la lista de paquetes aquí: http://code.google.com/p/chamilo/downloads/list
Una vez todos estos elementos mencionados así como esta guía han sido descargados, ya puede desconectar la conección internet: no debería ser necesaria a partir de este punto.
Paso 4: Determinar el nombre de su portal
Para que sus alumnos luego puedan conectarse a Chamilo a través de la interconexión de las XO, necesitan tener un nombre específico al cual tendrán que apuntar sus navegadores (estamos viendo la posibilidad con Sebastián Silva de crear una “Aplicación Chamilo” que permita quitar este requerimiento, pero todavía no está).
Por lo tanto, tiene que decidir de un nombre parecido a una URL en el cual su Chamilo va a estar disponible. Recomendamos, si es que su institución tiene un nombre de dominio, de usar este. Por ejemplo, para un colegio imaginario “Las palomitas” que tendría como dominio “www.palomitas.edu.pe”, usaríamos “aula1.palomitas.edu.pe”. Por ahora no parece ser muy importante, pero si a futuro su portal se vuelve más usado, podría ser muy práctico haber pensado en algo así en el etapa de instalación.
Paso 5: Configurar la base de datos
MySQL es un sistema ligero si uno usa las mediciones comunes en sistemas, pero cuando se trata de instalarlo en una XO, suele ser una buena idea bajar sus requerimientos para que su uso de memoria no sea tan alto, porque la memoria en una XO 1.0 es realmente un recurso escaso.
Aquí debería aprender a usar VI para poder hacer un buen trabajo, pero tratemos de explicarlo en unos pasos simples:
bash-3.2# vi /etc/my.cnf
posicionar el cursos sobre la línea después de “old_passwords=1″
teclar la letra “i”
copiar las siguientes líneas hasta “skip networking”
query_cache_limit = 1M
query_cache_size = 4M
key_buffer = 1M
max_allowed_packet = 8M
thread_stack = 2K
thread_cache_size = 16
tmp_table_size = 2M
max_heap_table_size = 1M
sort_buffer_size = 2M
;The following two settings prevent MySQL from booting. Hence disabled.
;table_open_cache = 16
;table_definition_cache = 64
read_buffer_size = 128
max_connections = 64
key_buffer_size = 4M
skip-innodb
skip_networkingahora presionar succesivamente: “escape” (la tecla más arriba a la derecha), “:”, “wq”, “enter”.
Esto debería haberles devuelto al terminal
bash-3.2# /etc/init.d/mysql start
Ahora tenemos una base de datos MySQL funcionando. Es tiempo de definir nuestro portal de Chamilo.
Paso 6: Configurar el servidor web
Como hemos descargado Chamilo desde la carpeta actual, deberíamos ahora encontrarnos en /home/olpc/. Para verificarlo:
bash-3.2# pwd
Ahí debería tener la mini versión de Chamilo. Para verificarlo:
bash-3.2# ls
Esto debería darme una lista de ficheros. Uno de ellos se llama “chamilo-1.8.8.4-mini.tar.gz”. Es tiempo de descomprimirlo.
bash-3.2# tar zxf chamilo*
bash-3.2# mv chamilo-1.8.8.4-mini chamilo
bash-3.2# chmod -R 0777 chamilo
Si ya no va a necesitar el paquete de Chamilo para ninguna otra cosa, puede eliminarlo para recuperar el espacio usado.
bash-3.2# rm chamilo-1.8.8.4-mini.tar.gz
Ahora tenemos una carpeta que se llama “chamilo”, y se encuentra en /home/olpc/. Por lo tanto, sabemos (porque lo necesitaremos ahora) que la instalación de Chamilo se encuentra en /home/olpc/chamilo/.
Ahora pasemos a la configuración de nginx, nuestro servidor web. Esto se hace en dos pasos: (1) asegurar que el servidor web funcione con páginas HTML simples, y (2) hacerlo funcionar con el lenguaje PHP que permite a Chamilo funcionar.
bash-3.2# vi /etc/nginx/conf.d/virtual.conf
ponga lo siguiente, como contenido del ficher (puede insertarlo después de las 3 primeras líneas de comentario poniendo el curso en la 4ta línea y presionando “i”. Use el nombre de su colegio en lugar de “palomitas” en la línea que dice “server_name”.
server {
listen 80;
server_name localhost aula1.palomitas.edu.pe;
root /home/olpc/chamilo/;
index index.php index.html;
location / {
client_max_body_size 20M;
}
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
expires 5m;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/olpc/chamilo$fastcgi_script_name;
}
}ahora presionar succesivamente: “escape” (la tecla más arriba a la derecha), “:”, “wq”, “enter”.
En la línea de comando, entrar:
bash-3.2# /etc/init.d/nginx start
para iniciar al servidor web.
Desde ahora debería poder ver una página de Chamilo desde la aplicación de navegador de su XO. Presione CTRL + ALT + F5 (la quinta tecla arriba del teclado) para regresar en modo visual. Ahí, vaya a su aplicación de navegador (browser) e indique la URL siguiente: http://localhost/documentation/index.html. Debería ver la página de inicio de la documentación de instalación y versiones de Chamilo. Todo conforme? Pase al etapa siguiente…
Presione CTRL + ALT + F3 para regresar al modo terminal, donde lo habíamos dejado.
bash-3.# php-cgi -b 127.0.0.1:9000 -c /etc/php.ini &
Este método de inicio de php no es muy elegante, porque no sobrevivirá una alta carga ni un re-inicio de la máquina, pero hasta mejorar el proceso, será suficiente. Esta última línea tendrá que ser lanzada a cada vez que reinicie su XO, o si el servidor responde “Bad gateway” en algún momento.
Finalmente, y para simplificar todo lo que sigue, edita el fichero /etc/hosts y defina ahí el nombre que usará para su portal:
bash-3.2# vi /etc/hosts
añadir la línea siguiente cambiando el nombre por el que usará
127.0.0.1 aula1.palomitas.edu.pe
salga guardando (“escape” + “:wq” + “enter”)
Ya está para la infraestructura del sistema. Ahora pasemos a instalar Chamilo.
Paso 7: Instalar Chamilo
En los pasos anteriores, se tomó un atajo de simplificación: usaremos el usuario de base de datos “root”. Es fácil cambiar esto antes de instalar Chamilo, pero no *tan* fácil como para detallarlo aquí en unas líneas.
Regrese a la pantalla gráfica con CTRL + ALT + F5. En el navegador, entre: http://aula1.palomitas.edu.pe/ y Enter
Debería aparecer la página del instalador de Chamilo. Básicamente tiene que validar todo y seguir las instrucciones. Las únicas cosas que debe modificar (frente a lo propuesto por defecto en el paso 5 de 6) son:
- cambiar la dirección del portal (probablemente esté proponiendo http://localhost/, pongale http://aula1.palomitas.edu.pe/ o lo que corresponde para usted)
- cambiar la contraseña (pongale algo más fácil de recordar y más personal)
- cambiar la opción “Permitir que los propios usuarios puedan registrarse como creadores de cursos” a “No”
Todo lo demás solo tiene que leer y dar clic en “siguiente”.
Paso 8: Aprovechar
Desde ahora en adelante, el único paso que se tiene que repetir para iniciar el portal son los 2 comandos siguiente en el terminal:
bash-3.2# su
bash-3.2# php-cgi -b 127.0.0.1:9000 -c /etc/php.ini &
Para que sus alumnos puedan aprovechar del portal, tendrá (hasta que desarrollemos una “aplicación Chamilo”) que configurar cada una de las XO para que vinculen el nombre aula1.palomitas.edu.pe con su dirección IP. Para esto, tendrá que identificar su propia dirección en un terminal con el comando /sbin/ifconfig, y de ahí extraer la primera dirección de la línea “inet addr” en la sección “eth0″. Si su dirección es 10.42.43.81, tendrá que añadir la siguiente línea en la XO de los niños:
10.42.43.81 aula1.palominas.edu.pe
De ahí, solo necesitarán cargar http://aula1.palominas.edu.pe en su navegador para poder acceder al aula virtual.
Este artículo será continuado… para que podamos llegar algun día a esto pero con el aporte adicional de un Chamilo con recursos del ministerio de educación respectivo:
Actualización sobre proyecto Chamilo + OLPC
Hacen 26 meses, el proyecto OLPC (a través del apoyo de Sebastían Silva) me hizo el gran honor de aceptar el proyecto D0keos + OLPC oficialmente y de prestarnos 9 XO para un periodo de 24 meses. En esta época, yo era fundador y dueño de la empresa D0keos Latinoamérica. Los objetivos del proyecto eran:
- asegurar la compatibilidad del LMS con las XO
- implementar una manera de instalar el LMS en una de las XO como servidor
- difundir el proyecto OLPC en nuestros eventos
En este largo tiempo (que ha pasado muy rápidamente), han ocurrido muchas cosas, de las cuales les voy haciendo un resumen aquí de forma cronológica
- Junio 2009: recepción de 9 laptops (2 completamente rotas por DHL Perú) y presentación del proyecto OLPC durante el evento D0keos Users Days que organizamos en Lima, con asistencia de 180 profesionales de educación
- entre Junio 2009 y Diciembre 2009: adecuación de los estilos gráficos por defecto de D0keos a la medida de la pantalla de la XO. De viaje a Colombia, un grupo local de OLPC me invita a exponer en uno de los eventos a los cuales participan.
- Enero 2010: siguiendo una serie de eventos trágicos en la organización y comunicación en la comunidad de D0keos, lidero el esfuerzo de formación de un nuevo proyecto que no esté impedido de funcionar por barreras comerciales o por sentidos morales traviesos. Nace Chamilo, que colecta una gran mayoría (alrededor de 90%) de los integrantes activos de D0keos. Al mismo tiempo, la empresa cambia de nombre para BeezNest Latino, el nombre que sigue usando hoy día. Durante el año, escribo mis resultados de pruebas de hacer correr Chamilo como servidor en una XO 1.0. Éxito para esta parte, pero todavía es impráctico, por lo que una conversación con Kiko Mayorga (un actor discreto de la beneficiencia tecnológica en Perú) y Sebastían Silva, imaginamos una solución para entregar una tarjeta SD equipada con Chamilo pre-instalado. Este proyecto todavía no se concluye (mucha información que colectar) pero hay buenas esperanzas de que permita alcanzar el objetivo.
- Todo 2010: un esfuerzo incansable de difusión, de desarrollo y de comunicación dentro de la Asociación Chamilo nos permite lograr más de 300,000 usuarios en un año de existencia. En este transcurso, un evento cada 2 meses nos da la oportunidad de hablar del proyecto OLPC, tocando un público de alrededor de 2500 personas en el año. Vinculos se crean alrededor del proyecto OLPC y empiezo a conocer más de su comunidad.
- Octubre 2010: Hernan Pachas me pide si puedo entregar una versión de Chamilo que pueda correr en las XS: 6500 de estas tienen que ser distribuidas en escuelas peruanas antes de Junio del 2011. Para esto tendría que proponer esta versión antes del 3 de Noviembre. Después de unos problemas de disponibilidad y de comunicación, no alcanza el tiempo y tengo que abandonar. Nunca tendré respuesta de Hernan sobre si todavía vale la pena hacerlo o no… (lástima).
- Julio de 2011: invitado a una entrevista en TV online por el Colegio de Ingenieros de Perú y Marketeando.com, hablamos 10 minutos del proyecto y su implementación en Perú
- Agosto de 2011: el nivel de trabajo por fin comienza a estabilizarse.
Hoy: Chamilo ya se posiciona encima de D0keos en muchos aspectos y por lo tanto me da más tiempo para recordar el proyecto y mi compromiso.
No obstante, por ahora hemos cumplido con las 3 metas propuestas, lo que tengo entendido no es tan común en este tipo de proyectos. Pueden ver el procedimiento de instalación de Chamilo como servidor en la XO 1.0 aquí (falta simplificar un poco).
Ahora quedan los tres proyectos adicionales siguientes:
- proveer un imagen de tarjeta SD con un procedimiento para que las XO puedan usarla como sistema de arranque
- desarrollar una “aplicación Chamilo” que permita a las demás XO encontrarla en la red
- desarrollar una versión especial de Chamilo para XS
Diferencias Moodle-Chamilo
En nuestros correos de usuarios, recibimos la siguiente consulta que es frecuente entre nuestros futuros usuarios:
Hola Yanncik, una consulta.
La vez pasada me consultaron las diferencias entre moodle y chamilo. Por lo que he podido ver en moodle, ambos lms tienen los mismos módulos y las mismas funciones.
Qué tiene chamilo que lo diferencia de moodle?
Ahora… siempre es difícil responder a esta conulta porque varía bastante de una versión a la otra, pero en fecha de Junio del 2011 y comparando Chamilo 1.8.8.2 con Moodle 1.9 y Moodle 2.0, podemos decir lo siguiente (de forma muy resumida)
Mi respuesta va así:
Estimado usuario,
Los dos sistemas son valiosos, pero según el uso, podría querer usar/recomendar el uno o el otro. Es más fácil definir lo que hay en Chamilo, que de decir lo que no hay. La diferencia viene a la sencillez de instalación y de uso, y lo que está incluido (y soportado) desde un inicio. Siempre recalco la sencillez de uso. Ciertos usuarios nos reportan hasta un factor 5 de sencillez de uso frente a Moodle (8h de capacitación necesarias en Chamilo contra 40h en Moodle). Moodle 2.0 no arregla nada de usabilidad, según nuestros primeros reportes de usuarios.
En Chamilo, desde el inicio, encontrarás:
- hojas de asistencia
- un sistema de evaluación / objetivos pedagógicos / certificados (con generación de certificados a imprimir)
- un plugin para videoconferencia con BigBlueButton (solo falta instalar BigBlueButton o vincular Chamilo con una instalación existente a través de 3 parámetros)
- un panel de control para los administradores (seguimiento)
- una red social con creación de grupos de interés
- la gestión de sesiones/ciclos/periodos/promociones/carreras (toda la estructura de formación académica o, renombrada con otros términos, corporativa)
- sistema de escenarización de ejercicios
- indexación fulltext
- un excelente soporte del idioma español
- la posibilidad de redefinir los términos de interfaz a partir de la interfaz (web) de administración
y una serie de cositas más del nivel de herramientas prácticas:- text to speech (conversión de texto a voz)
- edición de imágenes tipo Photoshop(tm)
- edición de diagramas SVG tipo Inkscape
- grabación de voz (con Nanogong)
- soporte de Google Maps (previa instalación de una llave API de Google Maps)
- más sencillez en general en la manipulación de los objetosMoodle tiene de notable:
- más formatos de importación/exportación (para ejercicios y lecciones)
- una herramienta de ejercicios más detallada (en ciertos sentidos)Aparte de esto, la mayoría de lo que se puede tener en Moodle se obtiene únicamente a través de módulos/extensiones que la mayoría del tiempo (70%?) no están mantenidos de una versión de Moodle a la siguiente, y por lo tanto implican arreglos (si es que se pueden arreglar).
Saludos cordiales,
Yannick
Obviamente, esta lista cambiará a futuro. También llegará un momento en el cual Chamilo 2.0 aparecerá, accelerando el proceso de desarrollo.
Update 2012-05
A este artículo del año pasado se van sumando una serie de puntos que quizás puedan ser de algun uso para el lector.
Ante todo me gustaría regresar sobre el punto importante de la sencillez: disminuir por 5 el tiempo de capacitación de docentes tiene los siguientes impactos:
- reducción del costo de capacitación inicial
- reducción del impacto en la gestión del cambio (“sí, cambia, pero por algo que no es tan complicado“)
- reducción de la necesidad de soporte, pues los usuarios tienen la vida más fácil y por lo tanto molestan menos al equipo de soporte
- aumento de la motivación del staff docente, y en consecuencia mejora de la calidad de los cursos
Recientemente, en un correo en la lista del Linux Users Group de Perú, una persona con experiencia en Moodle 2 sugirió que este usa alrededor de 40MB de RAM por usuario conectado (por carga de página). Esto representa el uso total de memoria necesario para generar una sola página. Midiendo Chamilo 1.9 (todavía en desarrollo y sin optimización), llegamos a 22MB con el nuevo sistema de plantillas (Twig, de Symfony 2), lo que significa un uso de memoria dos veces menor.
De otro lado, Chamilo LMS usa poco de este paradigma de desarrollo llamado el orientado objeto, y que si bien en teoría mejora mucho la reusabilidad de componentes de software, en muchos casos está usado y abusado por los desarrolladores para poner orientado objeto de todos lados, aun cuando esto no tiene sentido. Pues no es nuestro caso, por lo que es muy probable que Chamilo también use considerablemente menos recursos de procesador.
Me llamaron la atención también una serie de reportes que traduzco aquí del reciente iMoot, en el cual el público se pone en admiración frente a una serie de funcionalidades anunciadas para Moodle 2.3… que existen en Chamilo desde hace más de un año (a veces dos) y nos parecen totalmente naturales:
- “2.3 usa [...]. Ajax ahora está activado por defecto [...]“
- “La ayuda [...] ha sido re-introducida para las actividades y los recursos[...]“
- “Las bocas se abren mientras [...] sube ficheros en un curso [...] con un simple drag and drop desde su escritorio” -> bueno, yo lo muestro en demo a cada rato y las bocas no se abren. No se si es que los hispano-hablantes somos menos impresionados con la tecnología o solo un poco menos enloquecidos por Moodle, pero por ahí tiene que haber una diferencia fundamental…
- “[...] jala un archivo zip [...] dentro de un curso. Se extrae mágicamente y crea una jerarquía de carpetas. Más bocas abiertas[...]” -> aquí para nosotros no se jala directo para los zips. Si se quiere extraer con estructura, se tiene que usar el modo de subida simple, porque sino como hacemos para subir un archivo ZIP sin querer descomprimirlo?
- “Subidas de imágenes [...] ahora generan sus propios thumbnails[...]“
- “Cuando se añade un fichero [...] se genera un tipo de fichero y un tamaño para los estudiantes[...]“
- “Ya no hay 5 tipos de tareas[...]” -> que mala idea fue tener 5 tipos de herramientas de tareas para empezar, no?
- “[...] las fechas de entrega ahora aparecen en el calendario[...]“
Y así sigue por 1 hora, que fue la duración de la presentación de la próxima versión. Obviamente de vez en cuando hay algo menor que realmente es distinto de Chamilo LMS en sus versiones anteriores pero… todas estas funcionalidades que recién aparecerán en una versión 2.3 que saldrá el 18 de Junio del 2012, *ya las tenemos hace mínimo 9 meses* y en muchos casos más de 2 años, así que es bueno mantenerse informado y no juzgar demasiado rápido.
Hoy he tenido una reunión con una institución bastante grande, que me plantea la probabilidad alta de tener 100,000 alumnos dentro de 5 años (ahora tienen 27,000). Pues conversamos un rato sobre este asunto, y ellos estuvieron bastante preocupados por la idea de alojar un solo campus con esta cantidad.
La verdad es que nosotros alojamos dos campus de referencia: uno de 142000 usuarios registrados pero solo hasta 600 simultáneos en un solo servidor (el campus gratuito de Chamilo) y otro de 11,000 alumnos registrados pero con hasta 3300 alumnos simultáneos. Este usa una infraestructura bastante más potente (que no está usada ni a un 10% por ahora), pero en fin de cuentas, lo que importa es que no hemos tenido que modificar casi nada de Chamilo (le agregué un poco de caché para la cantidad de usuarios conectados en simultáneo) y el servicio de alojamiento se resume literalmente a una intervención al año a menos que hayan actualizaciones importantes de seguridad.
En fin: lo que cuenta para tener una solución muy resistente de Chamilo no es solo la aplicación misma sino la gente que se va a encargar de ella. Con el mismo Chamilo LMS, se puede tener un éxito tremendo como se puede tener un fracaso total, dependiendo de las personas que se involucran en este y cómo se involucran en este.
Poner su logo en la cabecera de Chamilo classic
Cambiar el logo encima de su portal de Chamilo es muy fácil. Para ir al punto, no analizaré aquí los aspectos importantes del estilo visual global de su campus, pero es importante mencionar una sola cosa: si quiere usar su propio logo, es una buena idea hacer una copia del estilo que más les gusta.
Para este primer etapa, simplemente tiene que copiar la carpeta del estilo que más le gusta en una nueva carpeta. Por ejemplo, si su institución se llama AEB Consultores, hacer una copia de la carpeta main/css/chamilo como main/css/aeb.
A partir de ahí, puede empezar a trabajar su logo. La idea, para minimizar el esfuerzo (obviamente se pueden obtener resultados mucho mejores con más esfuerzo), es de usar el logo actual como base, y redimensionar su logo en base a esto.
En la carpeta main/css/aeb/images, encontrará un imagen llamado header-logo.png.
Este imagen es el que se usa actualmente como logo. Abralo con un editor de imagenes. Recomendamos la herramienta de software libre GIMP. Al abrir, se presentan datos importantes en el título de la ventana.
Vemos que:
- el tamaño de este logo es de 260×84 pixeles. Es decir 260 pixeles de ancho por 84 pixeles de alto.
- el fondo es transparente
- existe una parte superior vacía (no se aprovecha de los 84 pixeles)
Si queremos evitar esfuerzos, tenemos que cumplir con lo siguiente:
- nuestro logo tiene que estar en un marco de 84 pixeles de alto
- tiene que tener el mismo nmobre de fichero (header-logo.png)
- tiene que estar en una carpeta copia de main/css/chamilo
- tiene que usar un máximo de 70 pixeles de alto sobre los 84 pixeles del marco, y
- el fondo del imagen para los 14 pixeles superiores tiene que ser transparente (simplemente porque aparecerá un texto en este area y así evitamos jugadas de estilos para soporte de múltiples navegadores)
Abramos nuestro logo con Gimp (CTRL+O)
Cortemoslo (con la herramienta de corte o SHIFT+C, seleccionar zona y hacer clic en el medio) para evitar espacio blanco alrededor.
Guardemos esta primera versión (CTRL+SHIFT+S) con nombre “header-logo.png” ya que servirá para aplastar al logo por omisión de Chamilo que se llama así.
Ahora redimensionamos el imagen de forma proporcional para que tenga un alto máximo de 70 pixeles: Mení Imagen -> Escalar la imagen… -> Altura: 70 -> Tab -> Escalar.
Nuestro imagen (quizás de calidad un poco menor) tiene el buen tamaño. Ahora tenemos que ampliar el lienzo para que el lienzo total sea de 84 pixeles, con el logo en la parte inferior: Imagen -> Tamaño del lienzo -> Quitar el eslabón de relación e indicar 84 en Altura -> reubicar el logo hacia abajo. Redimensionar.
Guardar el imagen como header-logo.png (confirmar el mensaje de confirmación sobre los limitantes del formato PNG) y… ya tenemos nuestro logo.
Ahora remplazamos (via SFTP por ejemplo) el logo de Chamilo dentro de la carpeta main/css/aeb/images/
Dentro de su campus Chamilo, ir a Aministración -> Parámetros de configuración -> Hojas de estilo -> Seleccionar AEB y guardar.
Felicidades!
Como usar el módulo Features de Drupal para ahorrar tiempo
Introducción
Desarrollar un sitio web en Drupal puede ser muy simple (unas páginas dinámicas usando un tema existente), medio-complicado (juntar muchos módulos y generar con ellos páginas con vistas, que no tienen soporte en ningun tema) o increiblemente complejo (desarrollar módulos de interacción entre varias fuentes de datos, con un diseño propio, con un cliente que no tiene claro lo que quiere, colaborando con 4 otras personas para hacer el trabajo más rápido).
En el último caso, cuando acaba el trabajo (si algun día se acaba), no tendrá muchas ganas de volver a hacer la misma cosa. Si es cierto que la ciencia informática permite automatizar las cosas eficientemente, nunca lo permite sin esfuerzos. La pregunta entonces es: a partir de cuando empezamos a poner en marcha un sistema que permita reusar un trabajo anterior con considerables modificaciones para entregar a otro cliente más rápido. En el mundo del software libre, a veces, se juntan las piezas de una forma tan exquisita que esta pregunta pueda ser fácil de contestar: alguién ya hizo el trabajo más importante, solo me falta estudiar un poco el tema y asegurarme que puedo reusar su trabajo de forma óptima.
Esto es lo que ocurre en la actualidad con el módulo Features de Drupal (desarrollado entre otros por los chicos de Development Seed, una empresa de Estados Unidos que tiene trás ella una serie de cumplimientos en el desarrollo y la entrega de módulos y distribuciones Drupal), que permite en resumen recuperar las acciones manuales del site builder, del themer y del desarrollador para la construcción de un sitio dentro de un archivo y exportarlo hacia otro sitio web para despliegue rápido.
Si bien existe el módulo, hay una serie de pasos que deberán conocer para poder usarlo de forma óptima, que se traducen en una serie de herramientas de las cuales deberá disponer.
Las herramientas
- Módulo Drush
- Módulo Diff
- Módulo Ctools
- Módulo Content (para exportar nodos)
- Módulo Boxes (para exportación de bloques de contenido)
- Módulo Strongarm (para exportar variables)
- Módulo Features
- Módulo Views (no es necesario, pero lo usaremos en esta explicación)
- Módulo Admin Menu (no es necesario, pero nos ayudará a ganar tiempo)
- Sistema de control de versiones (SVN, Git, Mercurial, …)
- Servidor de features (para tener un lugar donde almacenar estas funcionalidades y de donde compartirlas)
Como proceder
Lo mejor (y explicaremos porqué a continuación) es iniciar el desarrollo de su sitio *con* el módulo Features instalado. Esto permite tener un seguimiento de los cambios que se hacen en estas funcionalidades a medida que estemos avanzando. Si no lo tiene desde el inicio, todo este historial de cambios que hicimos para arreglar cosas según requerimientos del cliente estará perdido para siempre. En lugar de esto, queremos tener una estructura lista para el desarrollo “sostenible” de nuestro sitio cuando antes.
Paso 1: Instalación de Drupal
Instalar Drupal es un tema que ya debería conocer super bien para poder aprovechar de esta guía. Sino, mejor deje de leer de inmediato y vaya a la página de Drupal.org sobre el tema: http://drupal.org/documentation/install
La versión 6 que instalaremos, aunque no la última versión estable, es todavía la más adecuada en razón de los múltiples módulos que vamos a usar, los cuales no tienen todos una implementación estable en Drupal 7. Descargue la última versión estable de Drupal 6 aquí.
Paso 2: Instalar los módulos
El módulo Drush es una maravilla. Nos hace el trabajo de instalación de módulos mucho más simple si es que tenemos acceso a una línea de comandos. Si tiene, no dude en usarlo. Sino, pues faltará descargar cada uno de los módulos requeridos, subirlos al FTP y activarlos para su sitio. A continuación estamos asumiendo que tiene el módulo Drush y que no teme usarlo.
Descargue el módulo Drush y actívelo para su sitio. De ahí, vaya en la subcarpeta de “sites” que corresponde a su sitio y lanza los comandos siguientes para descargar e instalar los módulos:
$ php5 drush.php dl diff ctools content boxes strongarm features views $ php5 drush.php pm-enable diff ctools content boxes strongarm features views
De ahí podemos conectarnos al sitio nuevamente, y activar a mano (porque son muchos y así es más práctico en este caso) los módulos que faltan (para la demo puede activar todos los submódulos de los que acabamos de instalar y que no tengan dependencias insatisfechas).
Paso 3: Crear funcionalidades
Ahora vamos a tener que crear algo, para que el módulo Features pueda exportarlo. Una de las cosas más simples de hacer (ahora que tenemos el módulo Boxes) es crear un bloque (o mejor dicho una caja – “Box”). Vamos en el menú de administración a Administer -> Site building -> Blocks y le pinchamos “Add box”. Es importante aquí de conocer la diferencia entre un bloque y una caja: una caja se puede editar directamente en la página, y es simplemente una extensión del módulo block. Permite las mismas cosas, pero también permite la edición en línea y (la razón por la cual lo instalamos) exportarse desde el módulo Features.
En la creación de la caja, simplemente le llenamos unos datos y le damos un “nombre máquina”, que es un identificador único en el sistema para este bloque.
Es importante siempre usar la creación de cajas (“Add box”) y no de bloques (“Add block”) desde aquí en adelante, para que todos puedan ser exportados.
De una manera similar, podemos crear elementos de menú. Ellos estarán disponibles luego en la página de creación de Features.
Otro contenido que podemos crear es una vista (“Views”), pero el tema aquí es bien extenso. Asegurese de revisar la documentación de Views o algún tutorial, porque puede demorar bastante tomarlo en manos.
Paso 4: Exportar funcionalidades
En cualquier caso, una vez que tenga contenido creado, dirigese a la pantalla de Features (Administer -> Site building -> Features).
Tomemos un tiempo aquí para reflexionar sobre los Features para saber como llamar nuestra funcionalidad… Un “feature” es una funcionalidad que queremos exportar para reusarla en otro sitio. Si voy a usar Features de forma extensa, podría encontrarme rápidamente con una serie de paquetes “blog” o “galeria” que tendrían el mismo nombre pero montones de micro funcionalidades distintas. Una funcionalidad puede “incluir” varios módulos como dependencia, y estos módulos proveer tipos de contenidos, vistas y temas. Una funcionalidad también puede incluir variables del sistema (desde la tabla variables de Drupal), que definen ciertos parámetros (como por ejemplo una clave para activar un módulo).
Por lo tanto, es importante escoger bien su título. Si va a realizar una funcionalidad propia a un cliente en el sector agrícola, use un prefijo agri_ por ejemplo. Si esta funcionalidad es mayormente visual, use agri_display_ y, si se trata de una galeria de fotos siendo generalmente paisajes, agri_display_landscape_gallery. Si va a compartir estas funcionalidades con otros equipos (de otro idioma) o su empresa tiene sedes en el extranjero, siempre es una buena idea darle un nombre en ingles. La falta de acentos/tildes en el idioma Inglés y la imposibilidad de usarlos para nombres de Features también hace esta lógica más práctica.
Una vez seleccionado el nombre de su funcionalidad y su versión (use los ejemplos proveídos y las convenciones de numeración de los módulos Drupal para dar un número de versión), seleccione los componentes que quiere que incluya: Boxes, Dependencies, Menus, Menu links, Content types, Permissions y Roles son los tipos que se pueden extraer naturalmente para incluirlos en una funcionalidad. Pinchar “Download feature” le generará un archivo comprimido. Descarguelo.
Paso 5: Importar funcionalidades
El archivo comprimido (.tar, no .tar.gz) se encuentra ahora en su escritorio. Tiene que ponerlo en la carpeta sites/[su sitio]/modules/custom/ y descomprimirlo. De ahí, ir a “Administer -> Site building -> Features -> Manage” y aparecerá el módulo agri_display_landscape_gallery (en mi ejemplo). Lo activo con el checkbox y presionando “Save settings”.
Bueno, de ahí no cambia mucho. Es que ya tengo mi bloque y mis elementos de menu, vistas, etc. Al importar la funcionalidad, el sistema detectó que no había nada que hacer (gracias a los identificadores únicos de estas cositas) pero me deja el estado a “Disabled”. Para activarla, selecciono la cajita adelante y guard con “Save settings”.
Importar este Feature en un nuevo sitio me permite obtener directamente mi bloque de prueba, mis menús y otros objetos que exporté. Esta es la primera ventaja del módulo Features.
Paso 6: Seguimiento
Ahora vamos a hacer una cosa que debería hacerles entender de una vez a que sirve todo eso. Vaya editar el bloque (perdón, la caja) y refresque la página de Features. El estado se pone a “Overridden”… El sistema ha detectado que había ocurrido un cambio entre mi activación de la funcionalidad y mi cambio de bloque! Ahora puedo guardar este módulo nuevamente, pero con otra versión, usando la opción “Recreate”. La única cosa que tengo que cambiar ahí (para que se considere una nueva versión de la funcionalidad) es modificar el número de versión.
Si quiero revisar las modificaciones que se hicieron dentro de mi Feature, nada más simple: gracias al módulo Diff que hemos instalado, tengo una pestaña que indica “Review overrides”. Esto me especifica, en lenguaje informático, que cambios fueron registrados en mi sistema desde la última versión. Esto nos da la ventaja dos de Features: puedo ver claramente que cambios se han hecho (incluido los cambios visuales) entre dos versiones de mi sitio.
Si quiero reiniciar todo el contenido de mi sitio para ver que tan bien recrea toda mi estructura gracias a mi Feature, puedo usar el módulo Demo.
Pasos adicionales
En este episodio no cubriré la funcionalidad de actualización por Drush, porque necesitaremos un servidor de Features primero, lo que no tengo listo todavía.
Servidor de Features (incompleto)
Para instalar el servidor de Features, se requieren unos pasos más, pero es práctico reusar lo definido anteriormente porque una gran parte de los requerimientos de los pasos anteriores son requerimientos del servidor de Features:
- Módulo Context
- Módulo Features (instalado anteriormente)
- Módulo CCK (o “Content”)
- Módulo FileField (incluído en módulo CCK, o “Content”)
- Módulo Menu (core)
- Módulo Node (core)
- Módulo Node Reference (incluído en módulo CCK, o “Content”)
- Módulo Number (incluído en módulo CCK, o “Content”)
- Módulo Strongarm (instalado anteriormente)
- Módulo Views (instalado opcionalmente en los pasos anteriores)
- Módulo Chaos Tools (o CTools, instalado anteriormente)
- Módulo Text (incluído en módulo CCK, o “Content”)
- Módulo Option Widgets (incluído en módulo CCK, o “Content”)
Una vez estos y el módulo de Features Server instalados, verá que puede crear 3 nuevos tipos de contenido:
- Distribution (que es un paquete dedicado a hacer un uso específico de todo un sitio Drupal – se supone que contiene todas las funcionalidades necesarias)
- Project (que puede ser Installation profile, Module o Theme y que sirve para paquetes más pequeños de funcionalidades)
- Release (que es una versión específica de un Feature)
En la ausencia de integración con un servidor de versiones, este paso es suficiente para compartir sus Features con otras personas. El servidor tendrá que ser disponible para los demás (URL pública o dirección IP interna), y los demás usuarios podrán descargar actualizaciones de las funcionalidades (o usted podrá descargar actualizaciones desde el servidor de producción). Esto no incluye todavía el URL del servidor que permita quedar informado sobre las nuevas versiones disponibles, pero ya tenemos un paso.
Bibliografía
- http://sf2010.drupal.org/conference/sessions/managing-and-deploying-configuration-exportables-and-features-module es probablemente el vídeo (en Inglés) más completo que podrá encontrar sobre los orígenes del módulo Features, sus principios básicos y como usarlo
- http://drupal.org/node/580026 es un excelente manual (en Inglés) sobre el uso del módulo Features
- http://drupalcode.org/viewvc/drupal/contributions/modules/features/API.txt?revision=1.1.2.5&view=co&pathrev=DRUPAL-6–1 contiene especificaciones de cómo empaquetar una funcionalidad (“feature”) para que sea fácilmente intercambiable con otros
- http://mustardseedmedia.com/podcast/episode43 es un vídeo (en Inglés) que no consulté pero que explica también como usar el módulo Features
- http://developmentseed.org/blog/2009/sep/03/5-minute-feature-server es un excelente artículo en Inglés que me clarificó un poco el tema del Features server: más que nada para saber que URL usar para declarar un servidor de updates para mis Features









