jueves, 24 de septiembre de 2009

Enlaces recomendados

En esta sección os incluyo información sobre empresas relacionadas del sector con las que alguna vez he mantenido algún contacto por motivos diversos y que, en mi opinión, podrían ayudaros dependiendo de qué sea lo que busquéis.

Samoo

Ofrece servicios tecnológicos y asesoramiento a cualquier compañía u organización de cualquier sector en soluciones E-Learning.

  • Asesoramiento tecnológico en materia de sistemas de formación LMS.
  • Implantación de sistemas según las necesidades del cliente.
  • Desarrollos sobre sistemas LMS Open Source a medida.
  • Integraciones de herramientas sobre sistemas de formación LMS open source.
  • Vigilancia tecnológica constante sobre comunidades E-Learning.
  • Diseño e implantación de contenidos docentes.
  • Repositorios docentes para empresas y organizaciones.
  • Soporte y atención personalizada para administradores de sistemas de formación LMS.


Creaciones Copyright

Creaciones Copyright es una empresa joven, pero con mucha experiencia en el mundo de la creación, edición y producción de documentación científico técnica (libros, manuales, etc... en cualquier soporte). Miman y cuidan a sus autores y a su público como si de una madre se tratara. Os recomiendo que os deis un paseo por su catálogo editorial en donde, dicho sea de paso, encontraréis unos cuantos libros míos.

Grupo GIOUPM
El Grupo de Ingeniería de Organización de la Universidad Politécnica de Madrid, GIOUPM, lleva más de 18 años dedicándose a la formación de posgrado de alto nivel. La oferta formativa va dirigida a titulados universitarios y/o profesionales con o sin experiencia que deseen dar el salto a tareas de Dirección de Empresas, de Responsabilidad en Sistemas de Información y en la Gestión de las Telecomunicaciones en la Empresa. Además, existe la posibilidad de recibir soporte en la búsqueda y mejora de empleo, así como de prácticas remuneradas en empresas mientras se realiza el programa.

miércoles, 23 de septiembre de 2009

Internacionalización (y III). Moodle.

En Moodle la corrección de los errores de internacionalización es mucho más sencilla, ya que se puede hacer directamente desde Moodle como administrador y que, además, habitualmente se trata de literales que no se encuentran en los ficheros de recursos (o, como se prefiere en la terminología Moodle, paquetes de idioma).
El primer paso es instalar el o los paquetes de idiomas que nos interesen y, desde la administración del sitio, seleccionar la opción de edición del idioma, indicando con el que vamos a trabajar. La figura muestra un ejemplo para el idioma Español:

Una vez aquí, nos interesará saber qué literales están sin traducir. Para ello, seleccionaremos la opción de Revisar las cadenas (strings) perdidas, lo que nos llevará a la siguiente pantalla:

Y ahora viene en donde, en mi opinión, Moodle es superior a Sakai. Llega la hora de poner solución a las cadenas perdidas. Para ello, hay que ir a la opción de Editar palabras o frases y seleccionar, para los idiomas de interés, el módulo/bloque/actividad de Moodle que se quiera revisar. Automáticamente, aparece en pantalla un formulario en el que se muestran la frase original (en inglés) y una caja de texto en donde se nos pida que introduzcamos la traducción en el idioma deseado. La figura aclara estos conceptos:

Con los ficheros de ayuda, ocurre exactamente lo mismo. Desde el propio Moodle, el administrador puede traducir los ficheros para cada bloque/actividad y para cada idioma:

Como vemos, cuando el problema es que faltan literales en los paquetes de idiomas, en Moodle resulta mucho más sencillo cambiarlos que en Sakai. Sin embargo, si el error fuera que el texto está fijo en el código fuente, habría que parametrizarlo de manera muy similar.
En primer lugar, tendríamos que incluir el literal en los ficheros de los paquetes de idiomas. Para ello, abrimos el fichero de un módulo correspondiente al idioma por defecto (el inglés) e incluimos una nueva entrada. Por ejemplo, supongamos que hemos creado un bloque propio de nombre mibloque. Tendríamos que tener un fichero {moodle.root}/blocks/mibloque/lang/en_utf8/block_mibloque.php en el que incluyeran todas las cadenas que se muestran al usuario con el formato

$string['micadenadetexto'] = 'Aquí va el texto';


Una vez incluida esta entrada, cuando queramos mostrar al usuario esa cadena, debemos utilizar el siguiente código:

<?php print_string('micadenadetexto', 'block_mibloque'); ?>

martes, 15 de septiembre de 2009

Internacionalización (II). Sakai

En esta entrada vamos a ver con cierto detalle cómo internacionalizar una herramienta en Sakai. Podréis encontrar más información en la web de i18n de Sakai o la de Spanish Sakai, cuya visita os recomiendo.

Antes de empezar
Java proporciona utilidades estándar empleadas para cambiar el formato de número, de las fechas, etc. Siempre que sea posible, se usarán estas clases. En el tutorial sobre i18n que hay la web de Sun encontramos se explican estos aspectos con cierto nivel de detalle.

Los ficheros de recursos
Como dijimos en la entrada anterior, entenderemos por ficheros de recursos de internacionalización (de ahora en adelantate, solamente recursos) como aquellos ficheros que contienen los mensajes que se muestran al usuario y cuyo contenido varía dinámicamente en función de la información de contexto (habitualmente, el idioma seleccionado por dicho usuario). En el caso de Sakai, estos ficheros reciben la denominación genérica de location bundles y físicamente se corresponden con ficheros de texto con el formato nombre_etiqueta=valor guardados con la extensión .properties.

Un aspecto importante es el del orden. Tan sólo en una herramienta de Sakai pueden llega a haber varios cientos de literales y si no los organizamos con cierto criterio, estos ficheros pueden llegar a hacerse verdaderamente inmanejables. Un ejemplo de organización es el de la figura siguiente:

page.message.key = This is a message will be shown in page "page"



Es decir, el nombre del literal ofrece una referencia de la página a la que pertenece (page), del contenido del mensaje (message) y, por ejemplo, de la acción para la que sirve (key).

Otro aspecto importante relacionado con los ficheros de recursos es que no es necesario (ni recomendable) dividir una sola frase en varios literales únicamente porque algunas partes de dicha frase es variable, bien porque contiene parámetros, o bien para adarpar su estructura a la construcción gramatical de sujeto/verbo/objeto en los diferentes idiomas. Puede y debe dejarse todo en el mismo literal y construir el mensaje apropiado en cada idioma utilizando el método getFormattedMessage de org.sakaiproject.util.ResourceLoader.

Aclararemos este último punto con un ejemplo. Supongamos que el mensaje que queremos mostrar por pantalla un saludo personalizado para cada usuario:

Bienvenido a Sakai, David. Esperamos que disfrutes la experiencia.



El modo erróneo de hacerlo, sería

page.statement.1 = Bienvenido a Sakai,
page.statement.2 = . Esperamos que disfrutes la experiencia



En su lugar, el literal correcto sería:

page.statement.1 = Bienvenido a Sakai, {0}. Esperamos que disfrutes la experiencia



La clase ResourceLoader
Sakai proporciona una clase, org.sakaiproject.util.java.ResourceLoader, que actúa de envoltorio (wrapper) de java.util.ResourceBundle y que selecciona el Locale (idioma) con el que se cargan los ficheros de recursos según la siguiente orden:

  1. Preferencias de idioma del usuario

  2. Sesión del usuario

  3. Configuración del sistema (JVM)


El ResourceLoader se ubica en kernel-util de Sakai. Por ello, todas las herramientas que lo utilicen deben incluir en el lugar adecuado de su pom.xml la siguiente dependencia:

<dependency>
<groupId>org.sakaiproject.kernel</groupId>
<artifactId>sakai-kernel-util</artifactId>
</dependency>


Una vez hecho esto, cualquier literal podrá ser obtenido del fichero de recursos con el siguiente código JAVA:

ResourceLoader rl = new ResourceLoader("ruta_al_fichero_de_recursos");
String foo = rb.getString("page.statement.1");


Errores debidos a que faltan literales
En http://qa1-nl.sakaiproject.org/international/ está registrado cuál es el estado de traducción de ficheros de properties para distintas versiones de Sakai.
Generalmente, cuando nos encontramos un mensaje en inglés (el idioma por defecto), es porque el mensaje en cuestión no tiene literal asociado en el fichero de properties del idioma seleccionado. Cuando esto ocurre, Sakai carga el fichero en inglés y busca la clave en él.
Si éste es el caso, únicamente hay que copiar la línea del mensaje en inglés y traducir el mensaje al idioma deseado, dejando invariable eso sí, la clave.
Corrección de errores en una JSP/JSF
Una vez que está incluida la dependencia respecto de ResourceLoader, el paso siguiente es utilizar esta clase correctamente.
Una alternativa es cargar el fichero de recursos en el faces-config.xml de la herramienta como si se tratase de un bean más:

<managed-bean>
<description>
Dynamic Resource Bundle Loader
</description>
<managed-bean-name>msgs</managed-bean-name>
<managed-bean-class>org.sakaiproject.util.java.ResourceLoader</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<description>Bundle baseName</description>
<property-name>baseName</property-name>
<value>ruta_al_fichero_de_properties</value>
</managed-property>
</managed-bean>


Otra opción es incluir el bean directamente en la página JSP/JSF:

<jsp:useBean id="msgs" class="org.sakaiproject.util.ResourceLoader" scope="session">
<jsp:setProperty name="msgs" property="baseName" value="_org.sakaiproject.tool.foobar.bundle.Messages_"/>
</jsp:useBean>


Ahora supongamos que encontramos un error de internacionalización consistente en que siempre se muestra el mismo mensaje en pantalla, independientemente del idioma activo (es el más común). Seguramente, será porque en la página JSP/JSF que muestra el mensaje, encontraremos un fragmento de código similar a éste:

<h:outputText value="This is an English text">


Lo primero es detectar la JSP/JSF en la que está texto fijo y llevar este texto a los ficheros de properties, por ejemplo, paquete.de.mi.herramienta.Messages_xx:
  • Messages.properties -> sample_text = This is an English text

  • Messages_es.properties -> sample_text = Éste es un texto en inglés


Cuando lo hayamos hecho, solamente habrá que invocar al bean que haga referencia al ResourceLoader.
Corrección de errores en una VM
En las Velocity Templates, el proceso es muy similar alterior, salvo por el hecho de que ResourceLoader, en lugar de cargarlo en un fichero de configuración (faces-config.xml) o directamente en la página (con la directiva jsp:useBean), se carga en el contexto de la plantilla:

ResourceLoader rb = new ResourceLoader("ruta_al_fichero_de_properties");
context.put("tlang", rb );


Para, posteriormente, poder hacer referencia al mismo de las páginas vm:

$tlang.getString("page.sentence.1");


Corrección de errores en el código JAVA

Cuando el literal se encuentra inmerso en el código JAVA, el proceso es algo más complejo.
El primero paso será detectar en qué clase JAVA se encuentra el gazapo. Para ello, podemos utilizar cualquier herramienta que busque en el contenido de un fichero.
Seguidamente, habrá que incluir en el mensaje en los ficheros de recursos correspondientes.
Hecho esto, nos quedan dos cosas:
  1. Cargar dinámicamente el fichero de recursos en función de las preferencias de idioma del usuario. Esto se consigue importando la clase org.sakaiproject.util.ResourceLoader e indicando el fichero de recursos.

  2. Construir el mensaje con la cadena obtenida por el ResourceLoader.


Llegados a este punto, si desplegamos y volvemos a la herramienta veremos que se ha solucionado.
Os propongo que detectéis uno error de este tipo y lo intentéis solucionar. Yo estaré encantado de asistiros en el proceso. Tan sólo tenéis que preguntar. Eso sí, os pediría que, por favor, si encontráis algún error, lo indiquéis en el JIRA, el sistema de bugtracking de Sakai.

lunes, 14 de septiembre de 2009

Libros recomendados

Esta entrada pretende ofrecer libros relacionados con Sakai, Moodle o el e-learning en general que merece la pena tener al alcance de la mano.


E-Learning. Marketing aplicado a la formación a distancia


Se trata de un libro que aborda el e-learning más que como una plataforma tecnológica, como una solución corporativa de negocio que sirve de herramienta para solucionar un problema concreto de la organización.
Entre los principales temas que aborda, están:planificación estratégica, el mercado del e-learning, formulación de estrategias de marketing, modelos de negocio, fidelización de clientes, etc. Claro está, sin olvidar las plataformas y los estándares de e-learning.


Yo lo recomiendo para aquellos a los que, sin profundizar en ningún aspecto concreto sobre tecnología, pedagogía o estrategia, sí quieran tener una vesión global de todo el proceso.


Sakai Courseware Management: The Official Guide

Recientemente, Alan Berg y Michael Korcuska, ambos sobradamente conocidos y reconocidos dentro del mundo Sakai han publicado con PACKT una guía sobre esta plataforma de e-learning.

Yo lo acabo de terminar de leer y la verdad es que me parece que tiene un enfoque muy acertado para todos aquellos que estén en el proceso de selección de una plataforma de e-learning o estén convencidos de que quieren instalar Sakai y busquen un pequeño manual de apoyo. Os advierto que no es un manual de usuario, ni de administrador ni de desarrollador. Si buscáis ese tipo de información os recomiendo http://bugs.sakaiproject.org/confluence.

Aquí podéis encontrar un capítulo de ejemplo sobre Web Services y en el siguiente enlace encontraréis una descripción completa del libro.



Moodle 1.9 Multimedia

En mi línea de ir propoorcionandoos bibliografía especializada, me gustaría recomendaros otro libro de PACKT Publishers pero esta vez sobre Moodle. La descripción completa la tenéis en el siguiente enlace. Trata de cómo crear cursos multimedia con esta plataforma.

Mi opinión es que, si bien habla de Moodle, se centra mucho más en describir herramientas multimedia de generación de contenidos, todas ellas gratuitas, de tal forma que con un poco de ingenio es posible generar un curso multimedia con un coste reducido. Esto, como podéis suponer, es independiente del LMS que se utilice, por lo que también es aplicable a Sakai.

De muestra, os sugiero el capítulo sobre exámenes multimedia.

viernes, 11 de septiembre de 2009

Internacionalización (I). Problemas.

La internacionalización, también llamada i18n, según la Wikipedia puede definirse como "el proceso de diseñar software de manera tal que pueda adaptarse a diferentes idiomas y regiones sin la necesidad de realizar cambios de ingeniería ni en el código". Se trata de un concepto muy amplio que abarca desde ser capaz de modificar dinámicamente los mensajes mostrados al usuario (por defecto, suelen estar en inglés) hasta mostrar la interfaz construida de derecha a izquierda como ocurre en los países árabes, pasando por tener en cuenta las costumbres regionales a la hora de presentar los iconos, por ejemplo.
Como dijimos al hablar de los criterios de selección de plataformas, la i18n es uno de los fundamentales sobre en todo países o regiones con diversidad lingüística en donde se dispone de varios idiomas oficiales. Si éste es el caso, una vez seleccionadas las herramientas que se pondrán a disposición de los usuarios, resulta imprescindible probarlas concienzudamente en los idiomas requeridos, haciendo especial hincapié en los problemas de internacionalización más comunes y que, a modo de resumen, son los siguientes:

  1. Mensajes de la interfaz de usuario: lo habitual es que los mensajes mostrados en la interfaz de usuario estén contenidos en ficheros de texto, tal y como ocurre en Moodle (paquetes de idiomas) y en Sakai (ficheros de properties). Sin embargo, puede ocurrir que nos encontremos con alguna herramienta en la que aparecen en inglés independientemente del idioma seleccionado. Esto, generalmente, se debe a alguno de los dos siguientes errores de i18n:
    • El mensaje en cuestión es incluido "tal cual" en el código fuente: en este caso, habrá que editar el código fuente y parametrizarlo adecuadamente, incluyendo el mensaje problemático y su correspondiente traducción en un paquete de idioma (caso de Moodle) o en un fichero de properties (caso de Sakai)

    • El mensaje está el fichero de recursos en inglés pero no en el del idioma seleccionado: la solución es muy sencilla y consiste en incluir la traducción del mensaje en el fichero del idioma seleccionado.


  2. Las listas de nombres (por ejemplo, alumnos) no se ordenan correctamente: desgraciadamente, éste es uno de los problemas más comunes. Se debe a las diferencias en el esquema de codificación esperado por la plataforma. Por este motivo, se recomienda utilizar UTF-8, juego de caracteres que contiene todos los símbolos de nuestro entorno.

  3. Formato de los calendarios: el día considerado como comienzo de la semana varía de unos países a otros. Por ejemplo, en España se considera que la semana comienza en Lunes mientras que en los países de habla sajona, convierten al domingo en su primer día semanal.
    En esta misma línea conviene revisar el formato de fechas, ya que algunas aplicaciones fallar con formatos de fechas diferentes del que tienen por defecto. La solución pasa por parametrizar el formato de las fechas y, en caso de no ser posible, por hacer una conversión del formato del usuario al formato con el que trabaja la herramienta.

  4. Formato de los números:hay que tener cuidado con la separación entre la parte entera y la parte decimal. Mientras que en España se emplea la coma como separador, en los países sajones se utiliza el punto. La solución es formatear los números en función del idioma seleccionado o bien incluyéndolo como un parámetro más de la instalación.

  5. Información de estado: este tipo de información debe ser independiente del idioma. Si no lo fuera, podría ocurrir, por ejemplo, que un mensaje de un foro apareciera en la carpeta de mensajes "Received" cuando se está visualizando en inglés pero no lo hiciera en la carpeta "Recibidos" al verlo en español. La solución suele ser almacenar en base de datos un código de estado y mostrar por pantalla una descripción del mismo consultando los ficheros de properties o los paquetes de idiomas correspondientes.

  6. Aplicaciones que están internacionalizadas pero toman el idioma del navegador o del servidor de aplicaciones y no permiten al usuario modificarlo dinámicamente: como ejemplo, algunas aplicaciones de Sakai basadas en Spring (algunas páginas de Samigo, por ejemplo) usan el idioma del Tomcat. E internet está lleno de formularios web que toman el del navegador (contribución de Daniel Merino Echeverría).


En la próxima entrada aprenderemos a comprobar el estado de la internacionalización en Sakai y en Moodle. Nos vemos la semana que viene.

viernes, 4 de septiembre de 2009

Presentación

No es ningún secreto que el e-learning está creciendo en adeptos y que en la actualidad existen gran cantidad de posibilidades a alcance de nuestras manos si queremos poner en marcha alguna iniciativa de este tipo. Esto que, por supuesto y sin ninguna duda, es una ventaja se convierte para algunos en un verdadero quebradero de cabeza cuando se ve en brete de tener que escoger qué herramienta utilizar. Es, precisamente, aquí dónde este blog pretender se útil.

El blog que hoy se abre nace con vocación de servicio y ayuda a aquellos que, como yo, un día se han encontrado con la necesidad de tomar una decisión que resultará estratégica en el devenir de la gestión del proyecto de e-learning de la organización: ¿qué plataforma utilizo? Este blog es una recopilación de experiencias, una concentración del know-how que humildemente he recopilado a lo largo de mi trayectoria profesional y que deseo compartir con vosotros, tanto a través de este blog como en el libro "Moodle vs Sakai: integración de servicios y aplicaciones", que publicará Creaciones Copyright a principios del año que viene.

Es cierto que existe gran cantidad de información acerca de Sakai y de Moodle y que son muchos los foros y blogs que tratan este tema. No obstante, mucho de ellos lo hacen defendiendo encarecidamente una u otra plataforma y relevando al olvido a la otra. Esto, amigos, es un error. No hay ninguna plataforma mejor que otra categóricamente hablando y hay que analizar cada caso por separado: cada organización es un mundo, un entorno complejo con sus propios condicionantes y como tal hay que abordar el problema. Por ello, el blog, al igual que el libro, no toma partido por ninguna de las dos plataformas sino que las compara de manera objetiva y aséptica, incidiendo en los aspectos más destacados de una o de la otra cuando es necesario y, a mi entender, merece la pena.

Mi objetivo no es ni repetir ni recopilar información obtenida de las webs de Moodle y Sakai, si no proporcionar un medio de debate que permita tomar decisiones de manera formada e informada, algo que me parece fundamental en la gestión de cualquier proyecto, tanto más si se trata de uno de índole estratégico como lo es el de e-learning.

Ya solamente me queda daros las gracias por vuestro tiempo y animaros a que participéis en él.

Un saludo,
David Roldán Martínez

Selección de plataformas

Una vez que ya está claro que la organización quiere instalar una plataformas de e-learning, el paso siguiente es encontrar cuál y, a ser posible no equivocarse. :)

La gama de plataformas que tenemos es enorme pero, no nos engañemos, solo podemos evaluar, con suerte, unas pocas. Para seleccionarlas conviene seguir un proceso ordenado que, a grandes rasgos, está esquematizado en la figura siguiente:

Obviamente, probarlas todas resulta inviable por lo que es necesario realizar una criba inicial resultado de una selección gruesa. Los criterios empleados en esta selección gruesa tienen un carácter general, como la documentación existente sobre la misma (aspecto éste muy importante, sobre todo si se trata de una plataforma open source), si está funcionando en alguna institución del entorno, información obtenida de revistas (A-HEC) o páginas web especializadas (GATE o Edutools), etc. En cualquier caso, el resultado será un número reducido de plataformas (2 o 3, como mucho) que se someterán a una selección fina que reducirá, todavía más, este conjunto. En este caso, los criterios de selección son mucho más específicos de la institución: arquitectura tecnológica, bases de datos, crierios pedagógicos, etc. El objetivo es quedarse con una o dos plataformas que serán las que se instalará y probarán y de entre las cuales se seleccionará la plataforma elegida.

En cuanto a los criterios de selección fina, en mi opinión, no hay que olvidar:

  • Internacionalización: es la capacidad de la plataforma para "hablar" varios idiomas de manera indistinta. Hay que comprobar que el LMS que se seleccione incluya soporte total para los idiomas que nos interesa en las herramientas que nos interesa. No hay que dejarse guiar por frases como "Moodle (o Sakai) soportan más de N idiomas". Eso es falso, porque el soporte no es completo. Sería un error escoger una solamente porque el valor añadido que ofrece es que tiene un módulo que no utilizo en un idioma que no me interesa. Por ello, resulta crítico probar las plataformas en los idiomas que se vayan a utilizar y probarlas a fondo.

  • Integración con otras aplicaciones: a menudo, sobre todo si trata de una organización relativamente grande (como es el caso de una universidad), la plataforma de e-learning debe integrarse con otras aplicaciones (intranet, matriculación, ERP, etc.). Este punto es crítico puesto que una mala decisión puede complicarnos la vidad en un futuro.

  • Operación y mantenimiento: las plataformas de e-learning, para que funcionen correcdtamente, hay que mantenerlas esto es, habrá que diseñar mecanismos de back-up, de seguridad, etc.

  • Formación del personal: si el personal técnico de la organización no sabe JAVA, conviene seleccionar Moodle o importir formación sobre JAVA EE avanzado a dicho personal. Igualmente, si nuestros técnicos no saben PHP, Sakai es la mejor solución en este aspecto.

  • Evolución de las plataformas: no todas evolucionan a la misma velocidad y con el mismo cuidado. No hemos de olvidar que el mercado del e-learnig está floreciendo y por ello, cada día aparecen nuevas herramientas que se presentan como útiles para el proceso de formación (podcast, videoconferencia, blogs, wikis, etc.). De igual modo, resulta interesante saber cómo de activa es la comunidad de usuarios de cada una de las plataformas, especialmente si se trata de aplicaciones de código abierto, como es el caso de Sakai y Moodle (contribución de J. Cristóbal Barrios).



Una vez que ya se dispone de las plataformas candidatas, el paso siguiente es montar un piloto, lo más parecido posible al entorno real y hacer pruebas de todo tipo para evitar llevarnos sorpresas desagradables.