Me estreno como podcaster – Devirtualize: un podcast sobre tecnología y programación

Llevaba bastante tiempo hablando con mi amigo Pablo Baenas Castelló de a ver si hacíamos un podcast y finalmente hemos creado Devirtualize: un podcast sobre tecnología y programación. Como no sabíamos por donde empezar al final hemos pensado en comenzar por algo que domináramos, así que el primer episodio va sobre Openbravo. Probablemente el segundo lo haremos sobre nuestra experiencia montando y trabajando en E-Commerce (en este momento estamos preparando el guion). Os dejo los enlaces para poder escucharlo:

Podcast Devritualize sobre programación eh ingeniería de software

Openbravo resuelve un nuevo bug de los que les he reportado

Esta vez no tardaron tanto en resolverlo, sólo un par de meses. El caso era que en el último proyecto en el que he estado trabajando teníamos que migrar unos módulos de la versión 2.50 a la versión 3.0. En dicha migración me di cuenta que unas vistas que estaban en base de datos pero no modularizadas no se podían exportar ya que se utilizaban funciones de postgresql que devolvían «double precision». Tal era el problema que incluso haciendo casting se exportaba incorrectamente y en consecuencia era imposible volver a importar la vista.

La solución momentánea pasó por un hack guarrete pero que funcionaba, concatenaba el double precision con una cadena vacía de forma que todo en consecuencia pasaba a ser una cadena (cast implícito) y a este le aplicaba la función TO_NUMBER de Openbravo, algo como esto.

 

TO_NUMBER(date_part(…) || »)

 

Openbravo ahora lo ha solucionado según indican en el issue que abrí, parece que era lo suficientemente grave como para solucionar mi problema a pesar de no ser partner.

 

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

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.

Openbravo ERP vs OpenERP, Licencia 2 (derivados y módulos)

Al fin Openbravo ha contestado respecto a los derivados de los módulos privativos, o lo que es lo mismo casi cualquier cosa que no sea el core. Lo que dicen es lo siguiente:

 

  • The web POS is a commercial module under the OBCL, which lets licensees access, modify and deploy the code, but it cannot be redistributed
  •  If the third party  wants to build something on WebPOS, then there are two options
    • The new code is derivative of the WebPOS code, then it has to be licensed under a non-free license terms compatible with WebPOS terms
    • The new code is not a derivative work, but extends (separately) the webPOS functionalities, and it can be licensed as they wish. However, if the end-user then needs both modules (to run the new one), then the end-user needs the OBCL for the webPos part, and the GPL3 for the additional bit. This is the way the licensing of incremental modules works

     

 

  • El WebPOS es un módulo comercial bajo la OBCL, que permite al licenciado el acceso, la modificación y el despliegue del código, pero no la distribución
  •  Si se quiere desarrollar algo sobre el WebPOS, entonces hay dos opciones
    • El nuevo código es un derivado del código del WebPOS, en este caso se tiene que licenciar con una licencia privativa  compatible con la del WebPOS
    • El nuevo código no es un derivado, sinó que extiende (de forma separada) las funcionalidades del WebPOS, entonces puede ser licenciado como quieras. Sin embargo, si el usuario final necesita los dos módulos (para ejecutar el nuevo), entonces el usuario final necesita la OBCL para la parte del WebPOS, y la GPL3 para la parte adicional. Así es como funcona el licenciamiento incremental para los módulos

 

Esto significa que almenos si podría desarrollar módulos libres y seguir mi premisa de que todo el código que desarrolle debe ser libre. No me gusta esta opción, como ya comenté en un apunte anterior es parecido a lo que sucedía con la gente que desarrollaba utilizando java cuando no existía ninguna implementación libre y usable, pero bueno, al menos mi código sigue siendo libre.

 

Nota: Hablan de la GPL3 porque es el ejemplo que nosotros pusimos.

 

Cheli

La mafia de Openbravo

Por si a caso, cuando hablo de la mafia de Openbravo me refiero a la tercera y cuarta acepción de la RAE. Openbravo ha cruzado varias lineas, la primera la he comentado varias veces aquí, se dedica a mentir deliveradamente diciendo a sus clientes y/o potenciales clientes que vende un ERP libre, o que su producto tiene naturaleza open source cuando es rotundamente falso, su core de producto es MPL y por tanto este si es libre, el resto es privativo (MRP, Gestión de Proyectos, Gestión de Producción, WebPOS, etc), lo que significa que cualquier implantación en el mundo real sobre Openbravo ERP y en consecuencia Openbravo como producto no es libre ni open source ni nada parecido.

 

La segunda linea la han cruzado cuando desde hace años se dedican a acusar y calumniar a algunos de mis clientes (sus clientes) por atribuirles mis comentarios en mi bitácora, incluso han llegado a acusarles de incumplir su contrato de asociación (partnership por si alguien no lo entiende). Esta aclaración viene porque a raíz de mis últimos apuntes me vino a la memoria cosas que pasaron en el 2008 y 2009 cuando yo trabajaba en la difunta Tictech (así les fue, apenas un año y medio después de que yo abandonara esta empresa cerraron las puertas), uno de sus primeros asociados. Por entonces yo comentaba que el gerente general de Tictech decidió ir de la mano de Openbravo y si Openbravo se tiraba por un puente Tictech lo haría detrás. La realidad es que ya por entonces el contrato de Openbravo con sus partners les obligaba a únicamente ofrecer la versión profesional y en cierta manera tenías que rechazar proyectos en caso de que no consigas venderla, sinó podías estar incumpliendo el contrato y debías atenerte a las consecuencias (eso es lo que me contaba el gerente de Tictech). Por lo que se la cosa sigue igual o peor. Ese era el motivo por el que yo entonces hablaba de que Tictech iba de la mano de Openbravo, hoy ya me he hartado y tenga las consecuencias que tenga vamos a poner las cartas sobre la mesa, esto que acabo de contar es lo que realmente dice el contrato draconiano de asociación de Openbravo.

Desde ese mismo momento cualquier asociado acepta ser un esclavo y debe cumplir religiosamente las condiciones del contrato de asociación con Openbravo, incluso cuando cumplirlas perjudique a sus propios clientes como por ejemplo contratar una versión profesional que en algunos casos no necesitan. Hasta donde yo se todos mis clientes mientras han sido asociados de Openbravo han cumplido religiosamente este contrato, desde el primero que fue Tictech hasta mis actuales clientes, recalco lo de todos absolutamente todos. Obviamente son mis clientes y no tengo acceso a cierta información pero lo que yo no voy a hacer nunca es incumplir un contrato o una licencia y si tuviera conocimiento de ello no trabajaría con ese cliente. La única excepción sería  cuando se den las mismas circunstancias que llevan a una desobediencia civil, a veces la única forma de combatir una injusticia es incumplir las normas. Como dice Richard Stallman si te ves  en el dilema moral de no ayudar a tu prójimo y cumplir una licencia privativa o ayudar a tu prójimo e incumplirla debes elegir la segunda opción porque es la menos reprobable desde una perspectiva moral. En el caso de Openbravo nunca, y reitero de nuevo lo de que nunca me he visto ni yo ni ninguno de mis cleintes en esta situación. Y para prueba un botón, no voy a participar en un proyecto bastante grande de implantación del WebPOS porque no me permite desarrollar módulos con licencia libre y obviamente como acabo de comentar no voy a incumplir la licencia de Openbravo para poder hacerlo. A consecuencia de ello voy a perder la oportunidad de ganar bastante dinero pero no importa, ya vendrán otros proyectos y por supuesto estos serán libres.

 

Cuando yo he hablado que alguno de mis clientes tiene la oportunidad de ofrecer la versión comunidad y no utilizar la suscripción profesional a sus clientes es porque es verdad, una de las premisas que yo pongo para participar en un proyecto es que todo mi código tiene que ser libre y como consecuencia todos los módulos que desarrollo para mis clientes son libres, generalmente GPL 3. Eso les da la posibilidad de hacer implantaciones libres y de hecho las han hecho mientras no han estado asociados a Openbravo. Eso sí, en el momento que decidieron firmar el contrato dacroniano de Openbravo no tuvieron más remedio que por imposición dejar de hacerlo, fue su decisión firmarlo y yo ahí no puedo hacer nada.

 

Por enésima vez repito, ni yo ni ninguno de mis clientes hemos incumplido ni la licencia privativa, ni la licencia libre de Openbravo y por descontado ninguno de mis clientes ha incumplido su contrato dacroniano de asociación, al menos que yo tenga conocimiento. Sólo espero que con esta aclaración Openbravo deje de acusar y calumniar injustamente a mis clientes (sus clientes).

 

Actualización: Me he acordado de otro ejemplo de las consecuencias de este contrato. Allá por el 2008 / 2009 en Tictech teníamos un cliente en el que teníamos pensado hacer una implantación de Openbravo, por esa época la versión profesional se llamaba Openbravo Network, venía empaquetada en una distribución de Gnu / Linux con un panel de administración que no funcionaba ni a tiros  y además corría únicamente con Oracle (esta es la naturaleza open source de Openbravo, utlilizar para su versión profesional la base de datos más privativa del mercado). El gerente de Tictech no tuvo más remedio de vender por todos los medios dos productos, primero la suscripción profesional a Openbravo Network y por otro la licencia privativa de Oracle porque como ya he dicho estaba obligado a ello. Lo más gracioso del tema es que poco antes de poner el proyecto en producción Openbravo cambió la política y la versión profesional ya no venía con Oracle sinó con Postgresql. Por fin se daban cuenta del error y el poco sentido que tenía vender un producto libre que puede funcionar con una base de datos libre pero en el que obligatoriamente tenías que utilizar una base de datos privativa. ¿Qué argumento utilizabas para decir que la principal ventaja de Openbravo es ser libre y al mismo tiempo tenías que obligar al cliente a utilizar Oracle?, era absurdo. Lo chistoso es que el gerente de Tictech se tuvo que retractar de todo lo que le había dicho al cliente para decirle ahora que Oracle ya no, que mejor Postgresql. Fue patética la situación, yo si hubiera sido el cliente me hubiera sentido estafado y hubiera mandado a paseo a Openbravo y Tictech juntos.

Un saludo.

 

La extorsión de Openbravo versión 2014

Hoy he tenido como un déjà vu, resulta que Openbravo después de varios años me quiere volver a extorsionar en mi trabajo, pero como decía mi padre «Esta vez habéis pinchado en hueso». Parece que a Openbravo no le ha gustado mi crítica sobre el soporte que dan, mi intención es siempre que se la tomen como una crítica constructiva y me hubiera encantado que la reacción y actitud hubiera sido la de «no somos lo suficientemente buenos, no damos un servicio de excelencia, intentaremos mejorar». Al fin y al cabo lo que yo conté fue la verdad, mi propia experiencia contada en primera persona con el servicio de soporte oficial.

Quiero dejar claro que la crítica nunca iba dirigida a los consultores que atienden las incidencias, de hecho como les dije hace poco en un correo-e, en este sentido el servicio ha mejorado mucho, en el 2008 a veces te contestaba gente que sabía menos que uno mismo sobre el problema a resolver. Ahora los consultores que cotestan son muy profesionales (gracias Jon Alegría y gracias Augusto Mauch), pero ellos mismos reconocen que tienen demasiadas incidencias y que prácticamente me olvidara de que resolvieran un issue fuera del soporte (aún dando los parches añadiría yo) porque esos quedan al final de la cola. Es comprensible y lícito que no resuelvan los issues que abre la comunidad si no tienen tiempo o recursos, ellos se dedican entre otras cosas a dar soporte, pero no lo es tanto que pagues y no te atiendan o lo hagan semanas o meses después. La sensación es que Openbravo invierte mucho en la parte comercial y descuida mucho a su equipo técnico y de soporte, la consecuencia es que su soporte tiene muchas deficiencias y una calidad justita en cuanto a atención y tiempos de respuesta aunque al final cuando consigues que te atiendan lo hacen correctamente. La consecuencia de todo esto es que termine por no recomendar su soporte a mis clientes.

 

En lugar de ponerse en contacto conmigo lo que han hecho es lo de siempre, han dado por sentado que mi crítica personal venía de parte de uno de mis clientes, que además es uno de sus socios, y se han puesto en contacto con el gerente general para que me ¿presione?. Por lo que me han contado lo que les ha dolido es que yo no recomiende la versión profesional o que mi cliente no la utilice para algunos de sus proyectos aún siendo socio de Openbravo, lo han considerado como un caso grave, pedían una explicación y que la dirección ya estaba al tanto de todo. Lo extraño es que todo esto viene de un mero comercial, al parecer el enlace a mi bitácora se lo había pasado el CTO. Lo que no entiendo es como teniendo mis datos de contacto que están publicados aquí mismo no se ponga en contacto conmigo para hablar sobre este tema en lugar de hacerlo infundadamente y injustamente con uno de mis clientes para acusarle de cosas de las que nada tiene que ver.

 

Siguen con sus tácticas de siempre pero bueno, no se dan cuenta que desde el 2010 yo no trabajo para nadie, soy mi propio jefe, y que ya no pueden hacer lo que me hicieron en el 2008 y 2009. No soy su socio y no pueden hacer nada para evitar que yo opine lo que considere oportuno en mi bitácora personal sobre su producto y su proyecto. Eso sí, siempre intentaré ser lo más objetivo posible y siempre sin faltar a la verdad.

 

Un saludo.

 

Cheli

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.