Eticket deja de ser GPL

Hace cosa de un año escribí un apunte diciendo que en la empresa en la que trabajo había montado un sistema de incidencias software libre llamado eticket. Hasta la fecha estamos muy contentos con el sistema, el tema es que me he puesto a mirar después de mucho tiempo que novedades habían y me he enterado de que la aplicación la adquirido una empresa y le ha cambiado la licencia a una no libre.

La principal novedad es que no se puede redistribuir el código sin permiso. Literalmente dice:

You are not allowed to redistribute the software itself, without written permission.

La versión que nosotros tenemos instalada es una con licencia gpl. Aunque no tenía pensado actualizarlo  ya que de momento no nos ha dado ningún problema,  por si acaso este cambio me ha disipado las dudas de hacerlo.

Una lástima.

Cheli

Java en Centos 5.x

Actualmente para instalar Java en Centos tenemos básicamente dos opciones, una es instalar el Openjdk el cuál lo tenéis disponible desde yum y la otra es instalar java de sun. Os voy a dejar los paquetes de Java de sun x86_64 para Centos con lo que únicamente tendréis que descargar el tar.bz2 y ejecutar:

tar xvfj java_x86-64-centos-1.6.u7.tar.bz2

yum –nogpgcheck localinstall  java-1.6.0-sun-1.6.0.7-1jpp.x86_64.rpm java-1.6.0-sun-devel-1.6.0.7-1jpp.x86_64.rpm java-1.6.0-sun-fonts-1.6.0.7-1jpp.x86_64.rpm

java y md5

Cheli

¿Qué hace que un proyecto y su plataforma de desarrollo fracase?

Son cosas que todos sabemos pero que sigo viendo en muchos proyectos, algunos de ellos se han hecho bastante populares.

  1. Debe estar documentada. Es de perogrullo pero es una cosa que a ningún desarrollador le gusta hacer pero es lo primero que buscamos cuando estamos programando. Un API sin documentación no sirve de mucho. Ejemplos de bibliotecas que triunfan y tienen una gran documentación y puede que parte de su éxito sea justamente este detalle son PHP, Qt o  Java.
  2. Compatibilidad a lo largo del tiempo. Un api de programación tiene que ser estable a lo largo del tiempo, si se empiezan a cambiar las interfaces de los métodos o funciones, se crean incompatibilidades binareas, etc esta biblioteca nos dará muchísimos quebraderos de cabeza. Lo que suelen hacer algunos fabricantes es que durante la versión mayor de una biblioteca se mantiene la compatibilidad y cuando se pasa a la siguiente versión mayor ya si que se puede añadir lo que se quiera porque se permite la incompatibilidad con la versión anterior.
  3. Debe facilitar la actualización. Cuando se crea una nueva versión se debería pensar en la forma de actualizar desde la versión anterior de manera que luego no existan problemas en las migraciones.
  4. No se pueden dejar funcionalidades a medias. Si empiezas un desarrollo y no lo terminas no puedes dejar la aplicación llena de partes de dicho desarrollo pero que en verdad no sirven de nada.
  5. El código fuente debe estar en inglés. Habrá gente que no le guste pero el idioma internacional para la tecnología es el inglés y es el que todos los desarrolladores suelen entender. Si tu código está en otro idioma estás cerrando puertas para que otros desarrolladores entren al proyecto.

Existen muchos más problemas asociados pero estos 5 me parecen fundamentales. En Openbravo me he encontrado estos y nos está afectando actualmente en varios proyectos en los que estoy metido en mi empresa.

Ante el primer problema y preguntando diréctamente cómo funciona tal método de una clase a desarrolladores de Openbravo, gente que lleva trabajando para la empresa Openbravo desde hace bastante tiempo y que están en el equipo de ingeniería la respuesta es – No lo se, yo pillo un ejemplo parecido que ya esté hecho y copio y pego. A la pregunta de si estaba documentado la respuesta era no y que en todo caso se iban a la propia definición en el código de la biblioteca.La culpa no es de ellos, la culpa es de que el que escribió las bibliotecas y herramientas que utilizan no las documentó y actualmente no hay ningún recurso en Openbravo para documentarlas.

El segundo caso me pasó cuando intentamos utilizar un informe que desarrollamos según las indicaciones del wiki de Openbravo, este informe funcioaba perfectamente en la versión 2.35 pero al intentar compilarlo en la versión 2.40 no funcionaba. El problema venía porque habían modificado unos atributos privados de la clase base  de la que heredaba la clase que lanzaba el informe. En verdad habían hecho bastante limpieza en esa clase y si a eso le añadimos que a los atributos no se accede mediante métodos públicos, una interfaz pública pues no tiraba. Lo suyo es que como se comenta más arriba se mantenga el api de todas las bibliotecas que se utilizan en el proyecto a lo largo del tiempo. Se podría refactorizar el código pero siempre que mantuvieras las interfaces de las clases, pero es que en muchos casos ni siquiera hay interfaces bien definidas.

El tercer caso me ha pasado al intentar actualizar Openbravo, se supone que Openbravo utiliza un fork propio de ddlutils para la manipulación de la información en la base de datos. Su actualizar de la 2.40beta  a la 2.40 funcionaba  a la perfección con la instalación de la 2.40beta limpia pero si intentaba aplicarlo sobre uno de nuestros proyectos me dió un error tan chorra como que un campo que no era único había pasado a ser único en una tabla y al detectar duplicados no podía terminar el proceso de actualización de la base de datos dejándola en un estado inconsistente. Este tipo de cambios no se deberían dar en una base de datos medianamente estable, pero si se dan y quieres hacerlos debes tener mucho cuidado de que no existan problemas al actualizar.

El cuarto caso es muy típico en Openbravo, la aplicación está plagada de campos, ventanas/pestañas que no sirven para nada pero que por alguna extraña razón alguien dejó ahí. Esto a parte de confundir al usuario da una sensación de dejadez impresionante. Aquí os dejo un ejemplo.

El quinto caso sigue ocurriendo en Openbravo, han ido limpiando muchas partes del código pasándolo al inglés pero todavía queda mucho trabajo por hacer, sigue habiendo mucho código en castellano.

¿Qué problemas soléis encontrar vosotros en los proyectos en los que estáis?

Cheli

Diff/merge gráficos

Estaba intentando solucionar algunos problemillas en la actualización de OB, que todo sea dicho es un dolor, y subversion no me estaba ayudando demasiado con lo que no me ha quedado más remedio que hacerlo a manopla. Para esto necesitaba algo que me permitiera hacer diffs y merges de forma eficiente y qué mejor para esto que kompare.

Me gusta kompare porque te permite mirar la diferencia entre archivos de forma gráfica y muy intuitiva, navegar entre las modificaciones una a una y aplicar merges de izquierda a derecha o viceversa ya sea por cada cambio o por archivo. Otra cosa que necesitaba es que me mirara recursivamente los cambios entre dos árboles de directorios y esta herramienta para hacer esto es una maravilla.

Total, que en algún momento kompare se me ha quedado trabado en un archivo y su homólogo, y le ha costado un montón procesarlo, así que me he puesto a buscar más alternativas y he encontrado meld que es una herramienta similar pero para gnome. A meld también le ha costado bastante procesarlo pero al final más o menos lo he conseguido.

Lo suyo es que esto lo hiciéramos directamente desde el sistema de control de versiones pero mira, a veces hay que arremangarse las manos y hurgar en el fango.

Cheli

OpenStreetMap, sistema de mapeo libre

El otro día escuché a Rodrigo Moya y Celso González hablar de este sistema de mapeo libre en una entrevista que les hiciron en el programa de radio Enredando. Como ahora me he liberado de proyectos y voy a tener tiempo libre me pareció buena idea echarle un ojo.

Lo primero que hice es registrarme en la página web y leerle la documentación, parece que aunque no tengo gps tengo alternativas para colaborar. Además he visto que mi pueblo está casi completamente por hacer con lo que tengo un buen punto de partida para aportar al proyecto. Por el momento he estado realizando algunas pruebas y parece bastante sencillo crear carreteras, calles, puntos de interes, etc y etiquetarlos.

Cheli

Lo que debería ser y lo que es

Acabo de leer este correo-e en mi cuenta de la universidad (de momento me siguen llegando los mensajes):

En Alicante, el Martes, día 14 de Octubre en el salón de actos de Óptica y Optometría…

Vive un día diferente en tu universidad!
Conoce la tecnología Microsoft y todas sus novedades.
Entérate de todo lo que Microsoft puede ofrecerte, asistiendo y participando en las diferentes charlas que hemos preparado.
¡¡Te esperamos!!

En verdad no me sorprende y ni siquiera lo veo mal (no, no tengo nada en contra de las empresas de sofware privativo excpeto en que como su propio nombre indica su software no es software libre y por tanto yo no lo voy a utilizar) ya que es una estratégia empresarial que utilizan todos, sean empresas de software libre o no. Lo que me empieza a chocar es que empresas de software libre están utilizando estrategias de marketing tradicionales del software privativo y que denotan que no han entendido primero las implicaciones éticas y sociales que tiene el software libre y principalmente los modelos de negocio que se han estudiado y que casan con dicha filosofía.

Puffff aquí me apetecería meter un buen párrafo explicando que hacen las empresas de software libre vendiendonos humo pero me lo tendré que callar.

Si he escrito este apunte es porque me gustaría que ciertos empresarios que se han metido en el software libre por la novedad no lo vieran como un pelotazo sin tener ni puta idea que significa esto y que fueran un poquito más consecuentes. Hay muchos ejemplos que me ponen nervioso, apple con su webkit, su kernel darwin que tiene unos cuantos añitos ( tantos como unos 7 u 8 ) podrían ser ejemplos pero hay otros que me tocan más de cerca como los directivos de Openbravo y las tonterías que están escribiendo en el planet y sus que buenos somos (vamos a chuparnos las pollitas/frotarnos las campanillas que digo yo) sin fundamento técnico apreciable.

De momento he bloqueado mis proyectos sobre openbravo y mira que me toca los huevos decir que donde dije digo digo diego, cuando se aclaren esta gente seguiré con lo que empecé.

¿Por qué digo esto y hago lo que hago? quizá porque como siempre digo yo me alineo con lo que debería ser y no con lo que …. muchas veces lamentablemente sucede en la realidad.

Cheli

Configurando servicios con selinux

Desde que trabajo con Centos que trae activado por defecto selinux siempre que tengo un problema de permisos ya se donde mirar. Selinux es una capa de seguridad por encima de las que ya nos ofrecen los sistemas tipo unix como pueden ser el control de usuarios y permisos. Con selinux podemos hacer cosas como crear contextos y permitir que un servicio sólo tenga acceso a ese contexto, esto nos evita tener que hacer cosas como un chroot para ciertos servicios.

Cuando he tenido que configurar algún servicio, web, samba, etc típicamente me ha dado problemas selinux, lo podemos comprobar desde el archivo de registro /var/log/audit/audit.log. Para solventar los permisos de escritura en un directorio lo que hay que hacer es ver que contexto tiene asociado con ls -Z:

drwxrwxrwx  cheli cheli   user_u:object_r:samba_var_t     directorio

Y si no tiene asociado el contexto adecuado cambiarlo con chcon:

chcon -R -t  samba_var_t directorio

En el ejemplo se muestra el caso de samba. Espero que os ahorre tiempo al configurar servicios y no sepais que está pasando después de revisar la configuración un millón de veces.

Cheli

Parche Vtiger CRM, informe de proveedores

En uno de los proyectos en Tictech he tenido que parchear vtiger para poder sacar informes de proveedores desde el asistente. Para aplicar el parche simplemente copia el archivo vtiger-proveedores-5.0.4.tar.bz2 al raiz de vtiger y descomprime y desmpaqueta el archivo, automáticamente sobreescribirá los dos archivos modificados y ya te aparecerá la opción de crear el informe de proveedores desde el asistente.

Este parche sólo está probado en la versión 5.0.4, seguramente es muy mejorable así que si veis algún error por favor notificarmelo.

Este parche se distribuye bajo la misma licencia que Vtiger, la VPL basada en la MPL.

Cheli