Entradas de January, 2010

Curuxa IDE

Autor: Urriellu

En principio Curuxa iba a consistir principalmente en un conjunto de circuitos electrónicos y código de ejemplo. No obstante durante las últimas semanas he estado trabajando en un entorno de desarrollo específicamente diseñado para trabajar con estos circuitos electrónicos.

Curuxa IDEDesde que comencé su desarrollo mi idea siempre fue que Curuxa IDE fuese un programa simple, fácil de manejar, y que tuviese al alcance de la mano todas las características que se suelen necesitar al trabajar con las placas principales y los módulos. Este tipo de programas son bastante complejos, por lo que me ha dado bastantes problemas, aunque he conseguido que avanzase lo suficiente para publicarlo y que los usuarios puedan empezar a utilizarlo.

Este IDE está escrito en C# y la interfaz gráfica basada en WinForms (por el momento), debido a que la mayoría de sus usuarios utilizarán Windows, y personalmente me encuentro mucho más cómodo diseñando GUIs en WinForms que con cualquier otra librería gráfica. No obstante he separado todo lo posible la lógica del programa con la interfaz gráfica, por lo que en el futuro (espero que dentro de poco tiempo) me gustaría implementar GUIs para KDE (qyoto/kimono) y Gnome (GTK#).

Aunque la GUI sea WinForms y no se integre con ningún escritorio en Linux (de todas formas, aunque la GUI fuese para KDE no se integraría con Gnome y viceversa), Curuxa IDE es totalmente multiplataforma. Habrá disponibles instaladores para Windows y paquetes disponibles en repositorios para Debian/Ubuntu. Todas sus características funcionan perfectamente tanto en Windows como en Linux:

  • Soporta múltiples proyectos abiertos al mismo tiempo, así como archivos de código fuente.
  • El editor de código resalta la sintaxis según el lenguaje de programación elegido, aunque es bastante complicado de implementar por lo que aún no resalta ciertos tipos de sintaxis.
  • Es multilingüe, y el idioma puede cambiarse desde el menú sin ni siquiera reiniciar el programa.
  • Las características del proyecto permiten seleccionar la placa principal específica utilizada, simplificando el desarrollo.
  • Todos los programas de ejemplo publicados en el sitio web de Curuxa, así como algunos no publicados, están disponibles desde el menú para que los usuarios puedan crear proyectos a partir de ejemplos de manera muy sencilla. Cada ejemplo incluye una descripción y la lista de ejemplos disponibles puede filtrarse para que sólo aparezcan aquellos que utilicen cierta placa principal y/o cierto módulo.
  • Con un botón se compila el proyecto completo; con otro botón se quema el binario en el microcontrolador; con otro botón se alimenta el microcontrolador con la tensión configurada en el proyecto para que el circuito comience a funcionar, y con un último botón podemos detener la ejecución del programa del microcontrolador…
  • …además, un botón extra (mapeado con una tecla del teclado) nos permite ejecutar todo el proceso de golpe, para que podamos hacer modificaciones a nuestro código fuente y con una sola tecla todo el proyecto se compile, programe/queme y se empiece a ejecutar en el microcontrolador.
  • Los archivos de código fuente incluidos en cada proyecto se parsean automáticamente y todas las librerías a las que se hace referencia y que no son parte del proyecto (por ejemplo, las librerías ofrecidas por Curuxa que el usuario esté utilizando en su proyecto) aparecen debajo de los archivos de código fuente en la lista de proyectos, para que los usuarios puedan acceder al código fuente y documentación de las librerías que están utilizando de manera muy cómoda.

Muchos usuarios y visitantes se harán esta pregunta: ¿Qué es Curuxa?.

No sólo no es una palabra que no existe en español, sino que su origen no es anglosajón, ni mucho menos, pero le da nombre a este proyecto que se desarrolla principalmente en inglés.

Es realmente difícil dar nombres a proyectos de cualquier tipo, por lo que muchos recurren a los acrónimos. Buenos ejemplos son GNU, GTK, GIMP, PHP, HURD… no obstante el uso de acrónimos es relativamente poco original y a muchas personas no les agradan especialmente.

Otra tendencia en el mundo del software libre es el uso de palabras comunes en idiomas distintos al inglés, o de nombres de animales en cualquier idioma. Éste es el caso de Curuxa.

Curuxa significa lechuza en asturiano, el idioma propio de la región en donde vivo.

El logotipo del proyecto, evidentemente, representa la cabeza de una lechuza dibujada con gráficos vectoriales en dos colores.

Avanzando

Autor: Urriellu

Sé que he dejado un poco de lado este blog desde que comenzó el desarrollo, pero el proyecto no está muerto ni muchísimo menos.

Durante las últimas semanas todo ha avanzado muchísimo. He publicado unos cuantos módulos, lo cual dicho así parece poco trabajo pero en realidad cada módulo me lleva un buen puñado de horas de desarrollo, incluyendo su diseño, dibujo a ordenador de esquemas electrónicos, diagramas de cableado y distribución de componentes en las placas, su construcción, código fuente de ejemplo, escribir documentación, hacer y seleccionar fotos a buena calidad, etc.

He estado trabajando también en un entorno de desarrollo completo para poder programar las placas principales de manera rápida y sencilla, a la vez que tener ejemplos y documentación de Curuxa disponibles al alcance de la mano en el propio IDE. Más adelante hablaré sobre este IDE, pero de momento puedo comentar que la primera versión ya está lista, y funcionan todas las opciones básicas necesarias para escribir código fuente, compilarlo, programarlo en el microcontrolador elegido, así como la posibilidad de ejecutar y detener el programa del microcontrolador desde el ordenador, e incluye plantillas y unos cuantos programas de ejemplo para poder probar los módulos de Curuxa que ya han sido publicados.

Ahora estoy preparando la primera release oficial. Me está llevando bastante tiempo porque quiero automatizar todo lo posible (con scripts y listas de tareas) el proceso de branching+tagging de los repositorios, generación de paquetes para Debian/Ubuntu, instaladores para Windows, distribución de código fuente…