Introducing KiCad: because open hardware needs open tools

Lately you have had the chance to read some posts related to open hardware in Planet Igalia. It’s natural for a company with strong roots in the free software movement like ours to jump into this exciting new world.

While some igalians started working in the kernel support of some open hardware boards, others have noticed that there is a lack of specialized free software to work with schematic, PCB designs and so. That’s why we decided to start contributing to KiCad project.

While there are other alternatives, KiCad is in a really good position to become the reference software in this field. It already has a good number of features and a strong user base. It just needs some push to grow and catch up with the existing privative tools.

Our first patches focus on usability issues; it has allowed us to get to know the code base while generating useful contributions. You can already see some of them in the project repository or in the developers list, like:

  • Double click on the component name in the library browser will add it to the document, no need to click on the component and then press “insert component”  in the menu bar.
  • While performing a drag operation, now you can open the component edition dialog from the context menu or using the hotkey. By extension, you can do this also when you select a group and that group contains only one component.
  • Protect the application from opening the same document more than once.
  • Added an import feature in the schematic editor, so you can quickly copy the components from another sheet into yours. It’s useful if you periodically repeat some components among your sheets (for example, placing your logo and some information in a corner).
  • Added a log to KiCad launcher, informing the user about the applications that have been opened or closed.

You will be able to read about our next steps here, and if you need assistance on KiCad, now you can knock at our door!

Tuning the access to allocation data in LibrePlan

Allocations of resources to projects and tasks are probably the most complex information we have in LibrePlan. There are multiple types of allocations, many related entities and a high granularity, which basically means there are a lot of data and queries are complex. At the same time, these data are very valuable to see the state of the company, for example through the different resource load charts.

We have been working on a custom model to provide a more direct, faster access to these data. As you could expect, it is a really simple model: there is one row per resource or criterion and task, which will contain all the corresponding time allocated to that resource/task or criterion/task pair. To be able to have every pair in a single row, the allocation information is stored in a serialized array. There is also another row to store all the allocation information for every resource or criterion, to prevent having to retrieve more than one row to get the global allocation information of a resource or criterion. Of course, there is a lot of duplicated or redundant information in this model, but it’s done for the sake of performance.

With all these elements in place, building the resource load screen becomes easier, and what’s more important, a lot faster: our tests with 1000 tasks and 50 projects revealed that the time to build the global resource load diagram decreased from 30 seconds to only 2 seconds in average. It’s more than ten times faster!

There are still challenges that have to be beaten before these improvements can reach a production release, the most important one is keeping the new data model synchronized and updated. Until then, anybody can play with the new code in the branch resource-load-performance.

Welcoming PhpReport 2.0, final

As it was advanced in a previous post, the list of tasks in the TODO for PhpReport 2.0 milestone was shrinking… now it’s finally complete, so I’ve made the 2.0 release available from PhpReport site.

This is the list of changes since the previous release, beta 2:

  • Written user documentation, integrated in the application.
  • Implemented a screen to create, edit and delete hour compensations.
  • Implemented a screen to create, edit and delete cities.
  • Implemented a screen to manage work calendars.
  • Upgraded Ext JS framework to the latest version in 3.x series, 3.4.0.
  • Reviewed permissions of the admin/user groups on some screens and services.
  • Reordered the menu bar, deleting the unused entries.
  • [Bug #131] Correct authorization problem related with project creation.
  • [Bug #136] Fix size of template creation and delete buttons.
  • [Bug #155] Prevent wrong calculation of project deviation.
  • [Bug #161] Prevent blank project details screen due to a null end date.
  • [Bug #168] Added holidays project to default installation.

You can see the latest version of the application in action in the public demo site, as usual [EDIT: demo site not available any more].

I’m just publishing this announcement but I already have my mind in the future, with more features, fixes and improvements. The first steps are written in the new TODO.

That’s all for now. Happy summer hacking!

LibrePlan 1.3 in figures

Finally LibrePlan 1.3 is published! A lot of effort was put on this release, to make it the best LibrePlan ever… and maybe the most complete web planning tool available now.

My workmate Manuel Rego published an interesting post with figures about LibrePlan development when we took the application out from beta state and started doing periodical releases. One year and a half later, with three major releases since then, it’s a good idea to update those figures. Let’s see:

  • Time: more than 3 years have passed since April 2009, when we started the project. More precisely, we have been working on LibrePlan for 39 months.
  • Contributors: the number of different contributors has risen from 14 to 29, mostly thanks to a growing team of very commited users who took care of the translations. And although the core development team has not changed a lot, we were lucky to welcome Nacho Barrientos, Pablo Fernández de la Cigoña, Nacho Díaz, Cristina Alvariño and Lucía García, who joined Manuel Rego, Lorenzo Tilve, Susana Montes, Óscar González, Diego Pino, Javier Morán and me in the last year and a half.
  • Lines: 233,036 lines of code, an increment of roughly 80,000 since 1.0.

  • Commits: now there are 8,517 commits in the project master branch. Óscar González is still the top commiter with 2,883, but Manuel Rego is getting closer with his 2,073 contributions. I’ve fallen down to the 6th position. Oh noes!
  • Bugs: 1,523 bug reports have been filled, and only 170 of them are open. That means we have closed 1,353 bugs! And if we search specifically how many of them were fixed, the number is 1,141. Pretty impressive figures, IMHO.

If you love stats, you can check our Ohloh page where you can find more figures together with charts and the like. Meanwhile, we’ll keep coding… Hopefully I will tell you about LibrePlan audiovisual next time 😉 .

Programa de Voluntariado Dixital: sesión sobre GNU/Linux, GNOME e accesibilidade

Onte o meu compañeiro Alejandro Piñeiro e máis eu tivemos ocasión de participar como formadores no Programa de Voluntariado Dixital, no que Igalia actúa como mecenas. Introducimos a filosofía do software libre, o sistema operativo GNU/Linux, amosamos o escritorio GNOME en acción, as súas ferramentas de accesibilidade e unha pequena mostra do software dispoñible.

Como axuda para os asistentes elaborei un documento a modo de guía, que explica algunhas das cousas que practicamos durante a sesión de formación, e que espero sirva como referencia para usuarios ou como base para accións formativas no futuro. Aínda estou tentado a engadir algúns apartados máis cando teña un minuto…

Por último gustaríame agradecer á organización esta oportunidade para promover o software libre, un dos pilares da nosa compañía; e tamén aos asistentes a súa atención e interese. Foi unha grata experiencia como formador, e espero que fose de proveito para todos.