17 abril 2009

Al fin! JDEROBOT 4.3.0

Desde hace más de 5 años ayudo y desarrollo en el proyecto JDEROBOT. Todo empezó cuando realicé, allá por el 2003, mi proyecto fin de carrera en el grupo de Robótica de la Universidad Rey Juan Carlos. En aquel momento jde (software para la creación de comportamientos para robots) era el resultado de una dura y trabajada tesis de JoseMaría donde casi exclusivamente él había diseñado y desarrollado todo.

A día de hoy, justo cuando sacamos una nueva release con numerosos cambios, hemos conseguido (y seguimos intentando) generar una comunidad alrededor del proyecto. Desde hace poco más de un año tomamos la decisión de trabajar como una comunidad de software libre y utilizar la infraestructura típica de estos proyectos. Actualmente tenemos dos listas de correos con un tráfico aceptable (usuarios y desarrolladores), tenemos una política y un core que realiza los commits, tenemos procedimientos para que se notifiquen los bugs, empaquetado debian del software, blog con las noticias más importantes, mucha documentación y soporte logístico para alumnos/interesados en desarrollar con jderobot. Y para todo, a excepción de las listas de correo, utilizamos el inglés como idioma referente.
No hemos reinventado nada organizándonos de esta manera, pero si hemos podido comprobar, de primera mano, las ventajas que tiene adoptar una organización similar a la que utilizan los proyectos de software libre.

Si quieres ver algunos vídeos demostrativos de comportamientos sobre robots, pasate por la página de jderobot

14 abril 2009

Android: Oportunidad gracias a las licencias libres

Android es el nuevo sistema operativo para móviles que recientemente ha sacado Google. Quizá una de las características más importantes es que este sistema operativo es libre (bajo licencia Apache 2.0) y utilizar un kernel Linux 2.6.26.

Que Google haya decidido licenciar bajo Apache este sistema operativo no es casualidad, ni un gesto a los demás para demostrar que está apoyando el software libre (que también!). El modelo de negocio quizá no esté tan claro, y quizá incluso tampoco lo necesite tenerlo claro Google. Como muchos otros proyectos, Google ha utilizado licencias libres en su software e implícitamente ésto le ofrece una oportunidad de posicionarse y de tener un valor añadido con respecto a sus competidores en el sector competitivo de los móviles. Android e iPhone corren en hardware relativamente parecidos, y técnicamente pueden llegar a ser muy similares. Eso si, la gran diferencia, y lo que hará que empresas y usuarios se decidan por uno o por otro, es que uno es software libre (Android) y el otro software privativo (iPhone).

Utilizar licencias libres en los proyectos puede dar en muchas ocasiones una oportunidad de posicionamiento y sobrepasar a tus competidores, siempre y cuando en el mercado donde se mueva dicho proyecto, tanto empresas como usuarios finales, tengan cierto conocimiento sobre software y licencias libres.

02 abril 2009

Una esquina sobre licencias: OpenProj

Hace un par de días estuve buscando un programa libre para poder generar diagramas Grantt. El caso es que dí con OpenProj, en principio se define como un programa libre y open source. Su código está disponible y licenciado bajo Common Public Attribution License ("CPAL"). De esta licencia comentaré algunos detalles un poco más abajo.

La sorpresa, y el motivo de este post, es que según instalo y ejecuto la aplicación, me sale una ventana mostrándome la licencia CPAL junto con dos botones "Accept" y "Cancel", ¿cuanto menos chocante verdad? Sobre todo por lo que hemos visto en clase sobre este tema. Tampoco pasaría nada si saliera la Licencia a modo informativo, pero el problema es que si le doy a "Cancel" se cierra la aplicación y no puedo usarla. Es decir, para usar OpenProj necesitamos aceptar que hemos leído y entendido la licencia, pero ... ¿¿ésto no era propio de las licencia y software privativos??

Buscando información sobre CPAL veo que se basa en la Mozilla Public License (MPL), lo que se denominada derivación con atribución (
badgeware). La CPAL ha sido aprobada por la Open Source Initiative en 2007 (recientemente). Parece que el uso típico de esta licencia es para que los autores originales se aseguren de que por muchas modificaciones que sufra el software, siga apareciendo su logo/nombre/licencia en el splash screen.

El párrafo controvertido de la licencia es el siguiente (para más info ver
el punto 14 de la licencia: ADDITIONAL TERM: ATTRIBUTION):

[…] the Original Developer may include […] a requirement that each time an Executable and Source Code or a Larger Work is launched or initially run […] a prominent display of the Original Developer's Attribution Information […] must occur on the graphic user interface employed by the end user to access such Covered Code […]

Parece que después de todo y aunque si no acepto la licencia no puedo ejecutar el programa ... si es software libre, al menos según la OSI y la FSF. Sin embargo para Debian no es una licencia libre y aparecería en su rama non-free ya que no cumple las Debian Free Software Guidelines.

No obstante sigo con una duda después de leerme el párrafo conflictivo de la CPAL. Este párrafo habla de que tienes que asegurarte que la atribución del autor original no sea más pequeña que la de otros autores (por ejemplo logos), habla de que siempre tiene que aparecer la atribución del autor original, incluso también habla de que hay que asegurarse de que este mensaje de atribución salga durante un tiempo razonable para que el usuario pueda verlo. Ahora bien, no habla en ningún momento de obligar al usuario final a "aceptar" dicho mensaje de atribución para usar el programa.

¿Podríamos considerar que este software en verdad no es Free Software ya que implementa una licencia de uso que nos obliga a aceptarla para poder usar el software?

25 marzo 2009

Android: TimerTask y GUI

Voy a retomar después de meses el blog, a ver si consigo documentar cada problema que me encuentro mientras programo con Android.

Hoy me he topado con un problema típico cuando programas con GUI gráfica, y es que muchas veces necesitamos actualizar o interactuar con la interfaz gráfica desde un thread que no es el principal, en jerga de Android: cuando queremos modificar el GUI de una Actividad desde otro thread. Concretamente en este caso, necesito que una tarea periódica (thread) muestre un pop-up en la interfaz (actividad) informando que está buscando señal GPS.

Lo primero es saber como ejecutar un método periódicamente en Android. Para ello podemos utilizar la clase nativa de Java llamada TimerTask. Podemos configurar el delay (de la primera ejecución) y el periodo(de la siguientes ejecuciones). Si desde el método run de esta TimerTask intentamos modificar cualquier cosa relacionado con la interfaz gráfica que se ejecuta en el thread principal, veremos como la aplicación se queda congelada, o simplemente muestra un error indicando que sólo se puede acceder a la interfaz desde el thread principal (actividad).

A continuación os dejo el código de cómo configurar y crear una TimerTask (intentad obviar la línea en negrita, que posteriormente explicaremos):

private void launchTask()
{
  int delay = 1000; // delay for 1 seconds
  int period = 120000; // repeat every 2minutes

  mTimer = new Timer();
  mTimer.scheduleAtFixedRate(new TimerTask() {
    public void run() {
      handler_ProgressDiaglog.sendEmptyMessage(0);
    }
  }, delay, period);
}


La línea que aparece en negrita en el cuerpo del método run, es la clave para la solución de nuestro problema. Básicamente lo que implementa por debajo es un paso de mensajes entre threads y que Java nos lo abstrae con la clase Handler(). Para que a nuestro thread principal (que tiene acceso al GUI) le llegue el mensaje que genera la TimerTask, tenemos que crear un atributo privado de tipo Handler. A continuación os dejo el código del Handler:

private Handler handler_ProgressDiaglog = new Handler() {
  @Override
  public void handleMessage(Message msg) {

    // We can modify the GUI here.

  }
};

NOTA: Es posible que un mismo handler recoga más de 1 mensaje, por lo que no es necesario crear un handler por mensaje que queramos transmitir. En nuestro caso, no nos interesa un mensaje en concreto, nada más que nos avise cuando la TimerTask ejecute.

Espero que os siva de ayuda esta recetilla de cómo solucionar en Android un problema típico que se da cuando queremos acceder al GUI desde un thread, que no es el principal.

16 septiembre 2008

Presentación del Proyecto Fin de Carrera

Después de bastante trabajo y esfuerzo, terminé el proyecto fin de carrera del ciclo superior de Ingenieria Informática.

El proyecto se basa en desarrollar un sistema de reconstrucción 3D basado en atención visual. En otras palabras, mediante características de atención comunes en el ser humano (como los bordes, el contraste de color o el movimiento) vamos a obtener puntos interesantes de la escena, y situar dichos puntos en un espacio 3D. Además uno de los puntos fuertes de este proyecto, es que hemos añadido características de más alto nivel o cognitivas, que son capaces de realizar hipotesis de atención sobre objectos que no están en la imagen pero podrían estar.

La presentación del proyecto será:

Día: Jueves 18 de Septiembre 2008
Lugar: Salón de grados - Departamental 2 - Universidad Rey Juan Carlos
Hora: 12:00h
Título: "Reconstrucción 3D mediante un sistema de atención visual."


Es recomendable echar un ojo al link de videos, ya que son bastante intuitivos e interesantes.

Más información en:
Ficha del proyecto
Memoria PDF
Videos

31 agosto 2008

Snow, Snow, Snow!!!

Al fin! Después de casi un mes de trámites y búsquedas para encontrar el envío más barato, ya tengo en casa la tabla y fijaciones burton que tanto deseaba. En concreto la tabla es una Burton Royale 1.62 y las fijaciones son unas burton Cartel Lo-Black.





Lo pero de todo es que, ahora que tengo el material en casa, por lo menos hasta dentro de dos semanas no podré ir a probarlo al Xanadú. El proyecto fin de carrera me está quitándo demasiado tiempo!!

[Al fín Teo descansará de que le dé la plasta con este tema! o no? ;-)]

13 julio 2008

Amabilidad ante todo

De vuelta de vacaciones de Almería, paramos cerca de Valdepeñas (Ciudad Real) a comer algo y menuda la impresión que te da cuando ves semejantes carteles en la puerta del restaurante en cuestión. Alguien habrá pagado esos 0.40 centimos? ;-)