Participando en el programa Enredando de EuskaDigital – Swapping

A raíz de mi estancia en Ecuador había dejado de lado el podcast de Enredando, hasta entonces había estado al día pero como en Ecuador no tenía mucho tiempo para salir a dar mi caminata diaria y yo suelo escuchar el podcast en esos momentos pues llevaba un retraso importante. Ahora mientras me ponía al día escuché un episodio en el que hablaban de Swapping y me llamaron la atención algunas de las cosas que se dijeron como por ejemplo que ya no es necesaria una partición Swap, así  que decidí grabar un audio y enviárselo a los chicos de Enredando. Hoy me han confirmado que el próximo viernes lo emiten en la sección de Software Libre.

Aunque ya son varias las veces que he participado me sigue haciendo la misma ilusión escucharme en la radio que la primera vez que colaboré con ellos :).

 

 

Espero que os guste.

Corregir «SIGSEGV» del Eclipse que viene en el Android Bundle

¿Qué podemos hacer cuando se produce este error?:

 

#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007fada5b66718, pid=5708, tid=140384133080832
#
# JRE version: OpenJDK Runtime Environment (7.0_55-b14) (build 1.7.0_55-b14)
# Java VM: OpenJDK 64-Bit Server VM (24.51-b03 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C [libgobject-2.0.so.0+0x19718] g_object_get_qdata+0x18
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try «ulimit -c unlimited» before starting Java again
#
# An error report file with more information is saved as:
# /home/cheli/adt-bundle-linux-x86_64-20140702/eclipse/hs_err_pid5708.log
Compiled method (nm) 103325 1324 n org.eclipse.swt.internal.gtk.OS::_g_object_get_qdata (native)
total in heap [0x00007fadb0394a90,0x00007fadb0394e10] = 896
relocation [0x00007fadb0394bb0,0x00007fadb0394c10] = 96
main code [0x00007fadb0394c20,0x00007fadb0394e10] = 496
#
# If you would like to submit a bug report, please include
# instructions on how to reproduce the bug and visit:
# http://icedtea.classpath.org/bugzilla
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

Un Core Dump es un volcado de la pila para trazar el fallo que se ha producido, en el siguiente vídeo comento que aunque falla al escribir el core dump ya podemos deducir con los datos que nos da que el error realmente está en la librería gtk 2 y es consecuencia de un bug en el oxigen-gtk theme. Para solucionar el problema podemos cambiar el tema y listo.

 

https://www.youtube.com/watch?v=_mzxwqVCuBs

 

Cheli

Openbravo ERP vs Odoo, Actualizaciones

Estaba viendo los vídeos de las Jornadas de Odoo (Antiguo OpenERP) en Granada y en algún momento tocaron el tema de las actualizaciones, lo cual me ha recordado que tenía este punto pendiente en la comparativa entre Openbravo vs OpenERP 2014.

 

A día de hoy hay una diferencia fundamental en cuanto actualizaciones entre estos dos sistemas, Openbravo desde la versión 3.0 utiliza una especie de rolling release y Odoo sigue sacando una versión completamente nueva y disruptiva respecto a la anterior más o menos cada año y medio. En Openbravo la situación era similar a la de Odoo hasta la versión 3.0 pero a partir de ahí armaron una buena base y decidieron que en lugar de planificar grandes cambios a medio o largo plazo iban a ir mejorando paulatinamente esta versión y empezaron a sacar una nueva revisión cada mes con corrección de errores y si se daba el caso con algunas nuevas funcionalidades. Digo empezaron porque desde el segundo trimestre de este año ha cambiado la política y, aunque sigue siendo de rolling release,  han decidido actualizar el mapa de ruta y ahora las publicaciones pasan a ser trimestrales.

En Odoo hasta donde yo se no ha cambiado sustancialmente el proceso de actualización. Saben que tienen un problema porque tener versiones completamente diferentes y en las que se rediseña y reescribe parte del código de módulos enteros crea graves problemas de compatibilidad ya que rompe mucho del código propio que escriben los implantadores. Una de las soluciones propuestas es OCA, ¿y qué es OCA? es una asociación para que los proyectos de la comunidad estén por una parte mejor integrados con el núcleo del producto y por otra parte para repartir los esfuerzo tanto económicos como de talento entre los diferentes socios interesados, con esto consiguen convertir módulos que inicialmente serían propios de un implantador en semioficiales y como consecuencias tanto su diseño como código estarían auspiciados por la propia Odoo y soportados en el proceso de actualización. Como veis en realidad no solventa el problema, lo suaviza un poco.

 

Vayamos a la parte técnica, Openbravo utiliza una librería llamada dbsourcemanager que consigue manejar los cambios en cuanto a diccionario y estructura de la base de datos, y la realidad es que a día de hoy esta herramienta funciona realmente bien. Si una actualización está bien diseñada y testeada el proceso de actualización es prácticamente transparente y de hecho nosotros siempre tenemos a todos nuestros clientes actualizados a la última versión sin grandes problemas.

En cuanto a Odoo, el diseño y estructura de la base de datos se maneja a través del ORM, esto significa que si cambiamos el modelo siempre lo tendremos que hacer mediante el ORM. La consecuencia es que no puedes aplicar la nueva estructura de la base de datos mediante este proceso cuando hay muchos cambios porque se empieza a romper todo, primero porque los módulos empiezan a ser incompatibles con el núcleo del sistema, segundo porque el ORM no es muy fino en como realizar esta actualización sin romper entre otras cosas la integridad referencial, etc. Lo que propone entonces Odoo es que contrates un servicio que consiste en que le envías tu base de datos, le dices de que versión a que versión quieres actualizar y ellos te migran la base de datos. Una vez tienes la nueva base de datos la tienes que probar y si encuentras errores vuelves a enviar repitiendo el proceso de forma iterativa hasta que la nueva base está depurada. Al parecer ya funciona también una herramienta de la comunidad que realiza la misma función, pero siempre tiene que tener mucho cuidado con los módulos no oficiales ya que para estos no suelen existir los scripts.

 

A parte del problema técnico tenemos otro problema que es el cambio y adaptación funcional al nuevo sistema. En Openbravo no hay trauma, como he dicho ellos utilizan la base de la 3.0 y la han ido mejorando con lo que no han habido grandes cambios funcionales y los que hay no requieren un gran esfuerzo en cuanto a formación para adaptarse. En cuanto a Odoo si lo ha habido, empezando porque por ejemplo en la versión 7.0 desapareció el cliente de escritorio y únicamente podías utilizar el web o que el cliente web se ha reescrito varias veces. La buena noticia es que desde la versión 6.1 el cliente web aunque ha sufrido bastantes cambios no han sido tan drásticos como los anteriores. Otra cosa que ha pasado es que han refactorizado algunos módulos y rediseñado otros a nivel funcional con la consecuencia que muchas cosas funcionan de forma completamente diferente o que para acceder a una opción seguramente ahora esté en otro sitio diferente. Desde mi punto de vista Odoo en este sentido ha metido bastante la pata y sigue sin haber una solución definitiva ya que su proceso de desarrollo al parecer va a seguir siendo el mismo.

 

En resumen, en cuanto a este apartado desde mi punto de vista Openbravo ERP lo tiene bastante mejor solventado que Odoo, ahora falta esperar como evoluciona OCA, que va a aportar realmente a este proceso y qué va a hacer Odoo a partir de la versión 8.0, si va a empezar a estabilizar el sistema base o va a seguir con sus ciclos tan agresivos de lanzar nuevas versiones disruptivas respecto a la anterior.

 

Cheli

Programar copias de seguridad de Postgresql (CRON + Shell Script + Dropbox)

Generalmente yo no administro los servidores de mis clientes, a pesar de ello a veces me toca hacer las veces de administrador o sugerir ciertas cosas. Una de las cosas que suelo hacer es planificar un script en CRON para que haga una copia de seguridad de la base de datos todos los días y a partir de ahí ya se encargan ellos de hacer lo que consideren oportuno.

Estaba dándole vueltas a este tema cuando se me ocurrió la idea de utilizar alguna nube para sacar las copias fuera del servidor, la cuestión es que había que hacerlo de forma que no tuvieramos problemas de seguridad y privacidad en el proceso. Hay que tener en cuenta que el hecho de  subir nuestros archivos a otro servidor en la nube inherentemente hace que perdamos el control de nuestros datos y eso no podía pasar, ¿la solución? cifrar los datos.

 

Primero  necesitamos programar un script para que vuelque la base de datos a disco y que posteriormente la cifre. El Shell Script que yo utilizo lo he subido a github en un repositorio llamado backupscript, si alguien lo quiere utilizar tiene licencia GPL 3. Una apreciación, yo cifro los datos con GnuPG así que tendréis que tenerlo instalado y generar las claves pública privada para poder utilizarlo. El siguiente paso es utilizar el Shell Script como una tarea de CRON,  esto es sencillo ya que simplemente habrá que copiarlo por ejemplo al cron.daily. Por último tendremos que utlizar alguna herramienta para poder subir las copias a la nube, en este caso yo he utilizado Dropbox por dos motivos, el primero porque el cliente de Dropbox es libre con licencia GPL y el segundo porque proporciona la función de sincronización automática sobre un directorio lo cual significa que inmediatamente después de copiarse el archivo a disco se empieza a sincronizar con la nube.

Tutoriales sobre la instalación del cliente de Dropbox en Gnu/Linux hay muchos en internet así que no voy a explicar esta parte, lo que si quería comentar es que como Dropbox sincroniza sobre el directorio del mismo nombre «Dropbox» del $HOME del usuario y generalmente no vamos a querer dejar los archivos en esa ruta lo que podemos hacer es crear un enlace simbólico para solucionar este problema.

 

Yo lo tengo funcionando desde hace unos días en un servidor de un cliente y la verdad es que va de maravilla.

 

Cheli

Openbravo ERP vs OpenERP, lo que dice Google

Hace dos años y medio ya hablamos de las tendencias de google con respecto a Openbravo vs OpenERP, entonces ya adivinamos el crecimiento que estaba teniendo OpenERP y como Openbravo ERP empezaba a caer irremediablemente. Me he puesto a revisar esta tendencia y este ha sido el resultado:

 

Openbravo vs OpenERP

Como véis la tendencia se ha acentuado aún más, curiosamente el punto de inflexión ocurrió justo en el momento que Openbravo empezó a cerrar su código. Por lo que parece la gente prefiere lo libre a lo privativo.

Un saludo.

 

 

Fork de Openbravo ERP 2.50 para darle mantenimiento

He decidido crear un fork de Openbravo ERP 2.50 con la única finalidad de darle mantenimiento. A pesar que según el wiki Openbravo 2.50 sigue estando en estado de soporte preventivo, exáctamente el mismo que tiene Openbravo 3.0, lleva ya 7 meses sin actualizarse. Yo les envié algunos parches que tampoco han querido añadir a la versión y este es uno de los principales motivos para crear el fork.

El repositorio es público y por tanto cualquiera puede acceder a él. Si alguien no sabe como aplicar los parches y necesita ayuda para actualizar su instancia en producción puede acceder al servicio que ofrezco de actualización desde cualquier versión de Openbravo 2.50 hasta la última disponible en mi fork, el precio es de 100€. Los interesados podéis dejar un comentario.

 

Un saludo.

El WebPOS privativo de Openbravo oficialmente sólo funciona en navegadores privativos

Ya que no voy a desarrollar nada sobre el WebPOS privativo de Openbravo me he puesto a revisarlo funcionalmente. Lo primero que me ha llamado la atención es que al intentar abrirlo desde mi Iceweasel me ha salido este mensaje:

 

WebPos privativo de Openbravo

Como véis sólo soporta dos navegadores y los dos son privativos. Alguien entonces me dirá, pero si funciona en Chrome también va a funcionar en Chromium, pues debería. Lo primero que le dije a un compañero cuando estaba probándolo sobre una Ubuntu es que en lugar de instalar Chrome mejor instalara Chromium que ya viene en los repositorios de Ubuntu y a demás es libre. Al día siguiente me dijo que tuvo que instalar Chrome porque en Chromium no le había funcionado. Me extraña mucho que esto suceda así que voy a hacer mis propias pruebas y ya os pongo algún comentario al respecto.

En cualquier caso no entiendo como no soportan Firefox, supongo que es porque tiene más trabajo soportar dos motores html que sólo uno, pero aunque Chrome y Safari utilicen el mismo motor html (el mismo entre comillas ya que Google creó un fork de Webkit llamado Blink), tanto Chrome como Safari utilizan motores de javascript diferentes.

 

Al final no me queda más remedio que utilizar Chromium, y en ello estoy. Lo dicho, voy a seguir haciendo las pruebas y ya os diré si funciona bien en Chromium o tenía razón mi compañero.

 

Actualización 2: Después de probar el WebPOS durante unos días he de decir que no he tenido ningún problema con Chromium.

Actualización 1: Ya he encontrado en la documentación el motivo por el que no soportan Firefox.

 

Firefox and Internet Explorer are not supported because these browsers do not implement the Web SQL specification needed for offline capabilities. The alternative technology for offline capabilities is W3C Indexed DB that is currently supported by Firefox and Chrome but is not supported on Android and iPad tablets. This is why Web POS uses Web SQL. As a side note, Web SQL is a deprecated specification by the W3 Consortium but it is the only option today for implementing offline capabilities in desktop and tablets. In any case Openbravo’s solution for retail plans to move to Indexed DB after this specification is mature and broadly available in desktop and tablet browsers.

Firefox y Internet Explorer no están soportados porque estos navegadores no implementan la especificación Web SQL necesaria para las capacidades fuera de linea. La tecnología alternativa para las capacidades de fuera de linea es W3C Indexed DB que está actualmente soportada por firefox y Chrome pero no está soportada en las tabletas Android y iPad. Este es el motivo por el que el Web POS usa Web SQL. Como nota adicional, Web SQL es una especificación desaprobada   por el Consorcio W3 pero es la única opción hoy en día para implementar las capacidades fuera de linea tanto en el escritorio como en las tabletas. En cualquier caso la solución de Openbravo para minoristas tiene planeado cambiar a Indexed DB cuando esta especificación esté madura y disponible en los navegadores de escritorio y de las tabletas.

Un saludo.

Calidad del Soporte de Openbravo 2

Tenía mucha curiosidad por saber cual era la tabla de nivel de soporte de Openbravo y finalmente he tenido acceso a ella. Cómo a Openbravo le gusta mucho compararse con Red Hat me he puesto a mirar una y otra a ver que diferencias había.

 

Red Hat SLA

 

Openbravo SLA

 

A simple vista se ve la influencia de Red Hat, Openbravo copia el mismo esquema pero lamentablemente ahí terminan las similitudes. Mientras que los tiempos de respuesta de Red Hat se miden en horas o días los de Openbravo se miden en días o semanas, y yo puedo dar fe de ello. Y no creais que es porque el soporte de Openbravo es más barato, más bien lo contrario. Por poner un ejemplo, la suscripción de Red Hat Enterprise Linux Server para 2 sockets, 1 nodo físico o 2 virtuales en la modalidad de suscripción estándar cuesta $799 al año. Una suscripción de Openbravo estándar para el back-office cuesta $500 al año por usuario concurrente, si le añades el WebPos privativo entonces son $175 más por terminal y año.

A ver si en una próxima ocasión comparamos los precios de Openbravo con los de OpenERP. Ya os adelanto que en este sentido los dos van muy parejos, eso sí, las propuestas son diferentes, OpenERP ofrece soporte sobre su sistema tanto alojado en su nube como en una instalación en nuestras dependencias mientras que Openbravo sólo ofrece la segunda opción, almenos hasta donde yo se.

 

Cheli

El WebPos privativo de Openbravo

Openbravo tiene una solución de Punto de Venta o POS por sus siglas en ingles, este tipo de software en España se suele conocer como un TPV (Terminal Punto de Venta).

La versión antigua del TPV de Openbravo estaba desarrollada en Java para escritorio y tenía licencia GPL, ahora la nueva versión que utiliza tecnología web tiene la licencia privativa de Openbravo. Hasta ahora no le había hecho mucho caso porque no había tenido la necesidad, pero hace unas semanas me ofrecieron participar en otro proyecto aquí en Ecuador y necesitan el TPV. Lo primero que hice fué releerme la licencia para ver si cabía la posibilidad de poder almenos desarrollar módulos propios bajo una licencia libre de nuestra elección, de hecho es lo que podemos hacer sobre el core de Openbravo ERP gracias a que este está bajo la MPL (Mozilla Public License 1.1). Cuál ha sido mi sorpresa al comprobar que esta licencia especifica que se puede usar, reproducir y modificar el trabajo original, y hacer derivados pero siempre limitado al propósito de tu propio negocio. Por si acaso en otro punto especifican que no se puede redistribuir, sólo en caso de que sea para el propósito del negocio y ponen algunos ejemplos como demos, presentaciones, etc y simpre que tengas bien controlado a quíen se lo cedes.

Una de las premisas que pongo siempre para participar en cualquier proyecto es justamente que todo mi código debe publicarse bajo una licencia libre y con la licencia que tiene el TPV privativo de Openbravo me quedo fuera del proyecto, bueno podré participar en la parte de la trastienda (backoffice) que funciona con Openbravo ERP pero no en la de TPV. En cualquier caso hubiera sido como cuando no existía una implementación de Java libre y usable, tu podías desarrollar tu software en Java y ponerle una licencia libre pero al final tenías que ejecutarlo en la máquina virtual privativa.

 

Es una pena, era un proyecto muy interesante, de hecho aquí en la oficina no paran de preguntarme todos los días si he cambiado de opinión y voy a participar pero ya les he dejado claro que no lo haré mientras Openbravo no cambie su licencia y mi código pueda ser libre. Cómo véis a esto me refería cuando hablaba del caramelo envenenado de Openbravo, mejor prueba que esta no váis a encontrar.

 

Un saludo.