Qt 4.5 publicado

Por medio de El Código K y Barrapunto, leo que ya se encuentra disponible la versión 4.5 de las bibliotecas Qt.
Esta actualización incluye muchas novedades, entre las que se destacan: un nuevo SDK (que incluye todas las herramientas necesarias para desarrollar con Qt), la posibilidad de licenciar nuestras creaciones con LGPL (lo que suma una nueva opción a el embrollo ya existente), mejoras en la versión de 64bits para Cocoa (mac), mejoras en la integración con Webkit (ahora podremos hacer uso del plugin de flash para Netscape en nuestras aplicaciones) y las siempre discutibles mejoras de performance.

Junto con esto, publican tambien (junto al SDK) la versión 1.0.0 de Qt Creator. Un entorno de desarrollo multiplataforma que nos permite trabajar de forma “amigable” con estas bibliotecas.

Opinión personal, es interesante ver el desarrollo que le esta dando Nokia a todo lo que se refiera a Qt, una historia que vengo siguiendo de cerca por ser Qt una de mis APIs favoritas para aplicaciones gráficas.
El hecho de que ahora también sea distribuida con licencia LGPL, nos permitirá crear aplicaciones cerradas y/o comerciales de forma completamente gratuita, algo que a la FSF no le gusta mucho pero que me parece interesante que se haya hecho, eliminando así toda posible “disputa” respecto a las licencias de Qt. Recordemos que la opción comercial sigue existiendo para aquellos que lo requieran.
Aprovecho para decir que en estos días (seguramente la semana que viene, después de mis exámenes) publicare por fin la segunda parte de mi articulo sobre Qt Jambi… Esta vez es en serio ;)

Las dichosas licencias de Qt

Un debate que se repite mucho en las listas de correo, foros y/o otros tipos de comunidades de software de código abierto es sobre la licencia que tienen las librerías Qt. ¿Realmente tienen una licencia de código abierto? ¿Esta bien el doble licenciamiento? ¿traicionamos nuestros ideales usándolo? y otro tipo de barbaridades son las que se escuchan habitualmente.

De hecho, mi idea de usar Jambi en un trabajo de la facultad (como comente en otro post) hizo que cuando le muestre el API a mi profesor, uno de mis compañeros diga, en respuesta de la pregunta del profesor respecto a si era libre, en tono despectivo “pero Qt no es completamente libre”.

Lo cierto es que el tema de la(s) licencia(s) bajo la(s) cual(es) de distribuye Qt es un tanto confuso para quienes tocan el tema de oido (entre los que me incluyo) y se debe principalmente a dos cosas. La primera, es que Qt cuenta con tres tipos de licencia, una propietaria pensada para ser usada en desarrollos que sean cerrados y dos de código abierto (GPL2 y GPL3) y la segunda, es que en su tiempo de vida, Qt se enfrento a cambios de compañia y cambios de licencia, no solo una si no tres veces.

En sus comienzos, Qt fue desarrollado por una empresa llamada Quasar Technologies y se presentaba como una API para desarrollar interfaces gráficas en sistemas *nix, cosa que en aquellos tiempos era dificil de encontrar (hablo de 1993 más o menos) todo esto, sumado a la popularidad del entorno de escritorio KDE (desarrollado bajo estas librerías) provoco un gran número de desarrollo de aplicaciones cerradas, lo que obviamente no fue visto con buenos ojos por el proyecto GNU . En vista de ofrecer una alternativa a esta herramienta, se comienza a trabajar en las librerias GTK+, con las cuales se desarrollan en la actualidad gran cantidad de aplicaciones (el entorno Gnome, Gimp, Firefox y un muy largo etc) para no quedarse atras, Trolltech (nuevo nombre para Quasar) implementa en Qt una licencia de código abierto pero que no era aceptada por la Free Software Fundation y es de esta epoca principalmente, de la que nace toda la confusión respecto a estas librerías ya que “eran pero no eran” libres. Sin embargo, en el 2000, Trolltech comenzó a liberar las librerías Qt bajo una doble licencia, una propietaria y la GPL 2. Por último, a partir de este año, Qt, como ya dije, “soporta” tres licencias, la propietaria y las GPL 2.2 y 3. Como dato adicional a esta pequeña historia, se puede agregar que Trolltech fue comprado por Nokia a principios de este año, a pesar de que esto no afecto (de momento, al menos) la filosofia que sigue Trolltech respecto a las licencias de Qt.

Cuando ingresamos en la página de Trolltech y vamos a la sección de descarga, de inmediato se nos pregunta sobre si queremos descargar software “Open Source” (que solo podremos usar para desarrollar software del mismo tipo) o software comercial para desarrollar aplicaciones de este tipo. Acá es donde la mayoría dan el grito de “¡No es completamente libre!” pero bien, tengamos en cuenta dos cosas. La primera y principal es que la versión de Qt cerrada y la versión abierta son APIs distintas, es decir,, yo no podría comenzar a desarrollar software con la versión Open Source y despues simplemente cambiar la licencia para hacerlo comercial. La segunda, es que la propia licencia GPL (tanto en la versión 2.,2 como en la 3) no permite desarrollar software con otra licencia que implemente código que fue liberado bajo dicha licencia. Es decir, yo no puedo tomar código que fue liberado bajo la licencia GPL y usarlo para escribir un programa que tenga otra licencia (por más libre que sea)
O sea, que es un error decir cosas como que Qt “no es del todo libre” ya que tiene las mismas libertades que cualquier otro software liberado con la licencia GPL (la más usada en los programas de código abierto). De hecho, a pesar de que el proyecto GNU desarrollo una licencia pensada para crear (más que nada) librerias llamada LGPL (Lesser General Public License) que sí nos permite licenciar lo que hagamos con ellas bajo una licencia cerrada, la propia fundación incentiva a desarrollar librerias bajo GPL, ya que de esta forma evitamos que nuestro código sea “robado” por aplicaciones cerradas.

Personalmente, no me parece para nada malo ni descabellado que la empresa quiera cobrar por usar algo que luego nos debería reportar ganancias de dinero a nosotros y brindarnos a su vez una versión de este producto, pensado para que podamos aportar código a la comunidad de código abierto. Como dicen ellos, aplican el quid pro quo
Por último, decir que Qt no es el único caso de este tipo de licencias, ya que otros software, com el popular MySQL, implementa algo muy similar.

Bueno, creo que eso es todo lo necesario para entender un poco como es el tema de las licencias de Qt. Desde ya aclaro que para escribir esto, me base un poco en el conocimiento que tengo sobre la historia de Qt y de las licencias, como así tambien de los articulos a los cuales referencio a lo largo del post. Obviamente que puede haber errores, sobre todo en las fechas que menciono, como ya dije en otro post… todo lo que lean acá, son solo apuntes personales.

Una "ojeada" a Jambi, primera parte

Aprovechando la salida de Qt Jambi 4.4 (de ahora en más, simplemente Jambi), me puse a echar una mirada a este conjunto de APIs tan interesante.
Mi idea con este post es contar un poco de que se trata Jambi e introducir un poco a la programación con las librerías QT en Java, para lo cual trabajare con un pequeño ejemplo en el cual armaremos un sencillo navegador web haciendo uso de la recientemente incorporada integración con el motor WebKit que incluye Jambi.

¿Que vamos a hacer?

La idea de este articulo/tutorial es ver dos cosas, por un lado, dar una introducción a la programación con Qt y luego armar un pequeño programa que haga uso de Jambi y de una de las nuevas características incluidas en la versión 4.4 que es la integración con WebKit.

Si bien cuando comencé a escribir esto, pensé en hacer todo un solo articulo, considere que seria mejor separarlo en 2 partes para no hacerlo excesivamente largo y molesto para quienes lo leen por medio de los feeds.

En esta primera parte, are una breve introducción a las librerías Qt/Jambi y el proceso para integrar Jambi con Eclipse (la forma más sencilla de utilizarlo)
En la segunda veremos ya como aplicar esto en una sencilla aplicación que utilice, como ya dije, un poco de los conceptos que veremos y la reciente integración con WebKit.

Por ultimo, me gustaría aclarar que ni por asomo soy un experto en Qt o Jambi, simplemente lo estoy usando para un pequeño proyecto que tenemos con unos compañeros de facultad y me parecio una buena forma de compartir lo que fuí aprendiendo sobre este tema y de paso asentar algunas cosas… así que sepan que esto esta propenso a errores ;)

¿Jambi, Qt… que es eso?

Para no divagar ni decir cosas que no son, simplemente copiare y pegare la definición de QT que existe en Wikipedia, quizá seria más adecuado usar la definición “oficial” pero mejor saltarnos todo la parte “marquetinera” (igualmente recomiendo su lectura, por razones obvias)

“Qt es una biblioteca multiplataforma para desarrollar interfaces gráficas de usuario.”

Qt, de manera nativa, usa el lenguaje de programación C++ y es acá donde entra en juego Jambi que es, precisamente, una implementación de dicha librería para el lenguaje Java. Otra característica importante de Jambi es la posibilidad de integrar código C++ en nuestras aplicaciones Java e incluso cuenta con una herramienta para “traducir” código C++ en Java. Para más información sobre esto último, recomiendo la lectura del whitepaper que se encuentra en la página de Qt.
Si bien se puede dar una definición un poco más compleja (y exacta) esto nos bastara por ahora. Para más información les recomiendo la comple ta (aunque desordenada) documentación oficial de Jambi: http://doc.trolltech.com/qtjambi

Entendiendo Qt

Como dije anteriormente, Jambi es una implementación en Java de Qt y por tanto, hereda toda la “filosofía” (por llamarlo de alguna manera) de este. Es por esto que debemos conocer algunas cosas respecto a la forma de “ver las cosas” que tiene Qt antes de ponernos a programar.

Sin entrar en tecnicismos, lo primero y principal es saber que para Qt, todo es un widget, desde un botón, hasta una ventana, e incluso podemos agrupar widgets y crear uno propio. Sin más, podemos decir que una aplicación Qt es un widget que a su vez contiene un conjunto de widgets en su interior que pueden estar formados por otro conjunto de widgets.

Estos widgets, se comunican unos a otros mediante lo que Qt llama “Signals and slots“, esto es, los widgets emiten señales (signal) que son tomados por un slot especifico de otro widget lo que provoca alguna acción.

Por ejemplo, tenemos un botón dentro de una ventana, que al hacer click en el provoca que la ventana se cierre. Esto podríamos explicarlo, diciendo que tenemos un widget del tipo “QPushButton” dentro de otro widget del tipo “QApplication” que emite una señal “clicked()” que es recibida por el slot “quit()” del widget QApplication.

Hablando, ahora sí, en forma un poco más técnica, podemos decir que QWidget es una clase abstracta que es heredada por todos los widgets que componen Qt (y aquellos que definamos nosotros). Es decir, que tanto nuestra aplicación, como el botón del que hablábamos, son objetos de las clases QApplication y QPushButton que heredan los métodos y propiedades de la clase QWidget.
O sea, que para incorporar widgets en nuestra aplicación, basta con que instanciemos un objeto de la clase de dicho widget (botones, cuadros de texto, ventanas, etc) y luego los mostremos.

Preparando todo

Bien, ahora que “sabemos” que es Qt y tenemos una mínima idea de con que nos vamos a encontrar, estamos con ganas de probar eso escribiendo algo, pero para eso, primero debemos preparar nuestro entorno antes de poder escribir (o mejor dicho ejecutar) algo.

Para simplificar un poco el proceso de descarga e instalación de estas librerías, recomiendo el uso del paquete de integración con Eclipse que podemos descargar desde su página oficial.
El proceso consiste, básicamente, en la descarga de dicho paquete para nuestra plataforma (linux32/64,Windows, etc), descomprimirlo en la carpeta donde tenemos instalado Eclipse, y luego ejecutar este último con la directiva “-clea n”. Una vez hecho esto, bastara con que configuremos las preferencias de Jambi dentro de Eclipse para que sepa en donde se encuentran instalados, para ello, dentro de Eclipse, nos dirijimos a Window >> Preferences y de ahí a “Qt Jambi preferences” e indicamos la ruta hacia el lugar donde instalamos las librerias, como se ve en la imagen,

Creo que hasta acá bastara con la introducción. En la continuación ya comenzaremos a escribir un poco de código para entender mejor todo esto. Desde ya, si te intereso lo que escribí, te insito a que no te quedes con estos “apuntes de estudiante” y recurras a la documentación oficial de Trolltech y que revises su página web completa, como dije, la documentación es completa, pero desordenada.

En los próximos días, la continuación…

Qt Jambi 4.4 liberado

Trolltech anunció el lanzamiento de Qt Jambi 4.4 ; la última versión de su framework para desarrollo de aplicaciones Java.
Esta nueva versión toma los beneficios de Qt 4.4 y permite a los desarrolladores Java programar aplicaciones web y multimedia utilizando la potencia de las librerias Qt.

Entre las nuevas caracteristicas de Qt Jambi 4.4 tenemos:

  • Integración con Webkit (potente motor de navegación)
  • Integración con Phonon, que nos permite reproducir y manipular videos y sonidos en nuestras aplicaciones.
  • Soporte para drivers JDBC como backend para las clases de Qt Jambi SQL

Algo muy interesante sin duda, que ya mismo saldré a probar.

Fuente: Kde.News

Skype Call Recorder – Como grabar conversaciones con Skype en Linux

Si bien mi idea era recomendar soft una vez por semana, este programa se merecía que lo recomiende sin demora.
Se trata de Skype Call Recorder, un sencillo programa Open Source escrito en C++ que permite, usando el API de Skype, grabar las conversaciones que tenemos con este programa de manera muy simple guardandolas en formato Mp3 u Ogg Vorbis.

Para compilarlo e instalarlo, es necesario contar con lo siguiente:

Un compilador de C++
cmake => 2.4.28
Qt 4 => 4.3
libmp3lame, para codificar los archivos mp3
libid3 (aka id3lib), para manipular los tags id3
libvorbisenc, para codificar en Ogg Vorbis

Una vez que tenemos eso, solo nos queda descargar el archivo desde su página oficial, descomprimirlo y compilarlo de la siguiente forma:

#Descomprimir el paquete
$tar -zxvf skype-call-recorder-0.1.tar.gz
$cd skype-call-recorder
#Compilarlo
$cmake .
$make
#Ejecutar como Root
#make install

Una vez terminado el proceso (y suponiendo que no hubo ningun problema en el camino) solo nos queda ejecutar el programa mediante ./skype-call-recorder.

El programa se ejecuta directamente desde el system tray, mediante su correspondiente icono podemos acceder a las configuraciones en donde podremos elejir el tipo de códificación en la que queremos que se grabe (Ogg Vorbis/mp3 Stereo/mono) y si queremos que empiece a grabar automaticamente cualquier conversación o que primero nos pregunte.

Sinceramente, queria recomendar este programa ya que estuve casi todo el día de hoy buscando algo para hacerlo posible, recorriendo varios HOWTO‘s y páginas y a punto de entrar a experimentar algunas cosas raras para lograrlo. Realmente me sorprendió que haya tan pocas soluciones para lograr algo que a simple vista parece tan obvio de que deberia existir.

Por cierto, sí, adivinaron… la razón por la que buscaba este programa, es porque estamos con la idea de retomar el podcast.

KDE 4.0.1 en las calles

El proyecto KDE anunció la disponibilidad de la versión 4.0.1 de su administrador de escritorios, el cual incluye varios bugfixes y mejoras sobre todo en cuanto a la estabilidad del mismo, sobre todo en KHTML.

Se sabe también que para mediados de año tendremos KDE 4.1 que estará basado en QT 4.4 con todas sus mejoras en cuanto a funcionalidad y rendimiento.

Personalmente, creo que las puertas que esta abriendo KDE4 son increíbles y realmente suponen una gran evolución en lo que venimos viendo y estamos acostumbrados, creado sobre una muy buena base como son las librerías QT y poniendo a nuestra disposición recursos como plasmoid le veo realmente mucho futuro.

Sin embargo, para los que prefieran (como yo) seguir usando para su día a día la rama más estable de KDE3.5, esta planeado para el próximo 19 de febrero, la versión 3.5.19 de la misma.

Fuente: KDE.news