Friday, October 11, 2013 - 16:37
Written by


It may sound like a cliché but this Code Sprint gave me many more things than I expected. In Amnesty International (Spain), we started using CiviCRM only a few months ago. I am not an expert but we have a long way to run with CiviCRM. Before arriving, I thought it was going to be helpful and useful for me to spend some time coding. And so it was. But many more things happened.

Probably the most important thing I have learned in these days, is what we really mean when we talk about the CiviCRM Community. It's not only about the forums, the blog, or the wiki. These days, I was surprised by the fact that CiviCRM Core Members not only look at the forums or the IRC channel every day. They use it as their internal communication channels! If you don't believe me, go to the IRC (#civicrm at and you'll see it's, actually, a meeting room. There, you'll find users, developers and core members: working.

Data Integration

One of the first things I did, was to talk about some tools we're working on. In Amnesty, we'll need a lot of powerful data integration tools, as long as we have several databases and applications working simultaneously. So we started developing, with the help of StrateBi, a plugin that allows us to access the CiviCRM data from Kettle (Pentaho Data Integration). It was nice to meet people working in the same area. So we'll do some work together, from now on. Anyway, as long as we want to publish a first release of the plugin in a few weeks, I won't talk much more about it. If you're interested, keep an eye on this blog and on our GitHub account.

Patching the Core

When they asked me for the first time what I expected from the sprint, I said that I would like to know how the project was organized, so I could contribute in the right way. Creating and publishing extensions when the features I was trying to develop could interest other people, contributing to the core whenever I found a bug, etc. So Xavier and Kurund asked me if I had information about a core bug I wanted to correct. I had found two, or three, but most of them were already being fixed. So I started with something I was not even sure if it was a bug, or just a behaviour I didn't like.

By default, in CiviCRM, you can find who modified a contact for the last time and when it was modified. But, if the changes were made through the API, the message below showed the name of the user as if it would modified its own record. I asked in the forums if it could considered a bug and, approximately thirty seconds after that, Kurund came to ask me for more details. In a few minutes, we opened an issue (CRM-13549), fixed it and we sent a pull request to patch the core. :-D

Extensions Review

I was very interested on how to create, modify and test extensions for CiviCRM. And a group was just reviewing the process of publishing an extension, so I joint them. I didn't even know very well what an extension was. I'm pretty sure that my comments were really silly. But they were all nice with me and took all my comments into consideration. That's when I found other thing I could do: review extensions. There's always a lot of things you can do in a sprint code that don't require coding skills!

One of the extensions I could review, was John's UK Phone Validator. And, after reviewing it, he gave us a little talk on how to develop an extension for CiviCRM (running civix, etc). It was so clear, that I redefined my objectives for the week: I wanted to write an extension!


But before doing it, there was an issue concerning Spanish and Latin-American community that took my attention: the addition of a Second Last Name field to the core. We've been talking about the best way to do that and, at the moment, we're still looking for more feedback at the forums. But, as it uses to happens into the CiviCRM Community, there was someone working on something similar: Olaf was planning to work on a contribution to the core to make the set of name fields more flexible: prefix, suffix, middle name, etc. Our works were really close!

My first extension

Finally, I had time to start working on a little extension that allows you to specify groups, the new contacts will be assigned to by default. The idea was only to experiment a little bit with what I had learned these days. I didn't even thought I was going to be able to "compile" an extension but, unexpectedly (and with the help of my new friends here), I could finish a first version of a real case extension I needed.

Well, these just the few more important things I can say I've done this week. If I wanted to say them all, I'd need an entire book. Did I mention that I learned a lot about new big extensions as CiviBooking, CiviVolunteer, CiviHR, CiviCRM projects at Transifex and so on? Could this sprint be more productive?

Filed under