This month, meet Julien Carsique, Nuxeo’s resident continuous integration expert. With a keen eye focused on making the lives of Nuxeo developers and administrators easier, he’ll share with us why being lazy unlocks efficiency and is a major component to Nuxeo’s agile development methodology and success.
Nuxeo: Tell me about your role at Nuxeo.
My main role here is about providing support to the development team, specifically by maintaining the right infrastructure which enables them to automate their development tasks. I also manage the continuous integration and quality assurance of the Nuxeo source code, products, and tools that are created.
The best term to describe my job at Nuxeo is “DevOps”, which is an emerging set of principles that combines methods and practices for communication, collaboration and integration between software development and IT operations. Perhaps the best way to understand is to see a visual snapshot of what this means, which can be found on our QA site: https://qa.nuxeo.org
I’m also responsible for maintaining and improving our Maven infrastructure and our packages and tools:
Nuxeo: What does it mean to “automate development tasks”, how does this work within the Nuxeo development team?
It’s about providing users, in this case, developers, with automated tools for deploying and testing Nuxeo applications and packages. Part of this involves continuous integration, which ensures that there are no regressions. So when a developer creates something new, it’s checked against multiple configuration environments like Windows, Linux, Mac as well as database requirements such as PostgreSQL (which is what we recommend), MySQL, Oracle, MsSQL. Then we also automate the builds, unit tests, and the functional tests.
Nuxeo: And what about the quality assurance aspect to your job, how do you ensure you’re getting the best results?
Quality assurance means defining the rules and best practices that we follow here at Nuxeo. This means we’re constantly checking the code quality and defining benchmarks for these quality measurements, then I try to setup automated controls based on this criteria. This saves everyone involved a lot of time so we can focus more on software development and less time on redundant tasks.
Nuxeo: Can you provide an example of a task that you’ve automated?
Yes, for example, when we build a hot fix, we’re touching the packaging, which has the potential to impact various other components so series of tests must be run before we certify it. Rather than running these tests one by one, the team that builds the hot fix only has to click a button. With that one-click, the build is released and the automated testing cycle begins and developers will know rather quickly if something is wrong with their build.
Nuxeo: What tool do you use for continuous integration?
We use Jenkins, which is an open source continuous integration tool written in Java. Within Jenkins, I use other tools and provide support on these as well like Maven, Nexus, Ant, Mercurial, Git...there are a lot of various Jenkins plugins, and some in-house made tools like Funkload for performance benchmarking, nuxeo-ftest for functional testing, as well as a number of nuxeo-distribution-tools.
Nuxeo: Is your entire focus on internal developers or do you also work with external customers?
My main focus is our internal customers, from Nuxeo developers to product administrators, but I work with external customers who work in these same capacities as well.
Additionally, I do administrative training and also provide consulting on deployment and infrastructure.
Nuxeo: What project are you currently working on?
Right now it’s the new packaging with the single installer for Nuxeo 5.5. We have to standardize the way we build the distribution and reuse the system we made for the marketplace plus extend it. This has a major impact on the entire integration system, so I have to review all the tests for all the automated jobs in order to use the new packaging.
Another component involves using add-ons from GitHub. Since we decided to work with GitHub we have to manage the source of where Nuxeo add-ons might come from, for instance, they might come from Mercurial or GitHub so that means all the Internet tools need to manage those two sources.
Nuxeo: What can Nuxeo customers expect from all this behind-the-scenes work?
Well, for the 5.5 release it means that when a customer downloads Nuxeo, there is now only one download to contend with. Then, the automated installer launches the wizard, which walks you through the install process allowing you to choose which application you want to install along with what features. So we’ve simplified the entry point a lot. Customers will be able to download and start with the basic Nuxeo product (CAP) and can also reaccess the wizard through the Admin Center to add additional features or marketplace packages. Additionally, if you break the Nuxeo application by installing a marketplace package, you can roll back to a previous instance via the Admin Center or the Nuxeo Control Panel (nuxeoctl), it’s not blocked to you at any point and we did this specifically thinking from the point of view of the administrator/user.
Nuxeo: What have been the challenges associated with your job?
The first challenge was to provide the right infrastructure for developers by taking into consideration their constraints. Maven is a great tool, but it requires a lot of downloads so it wasn’t easy to design the right structure for internal and external servers.
The second was to ensure for external users that the published code is not broken. I maintain separate groupings of internal and external build cycles. Nuxeo developers are included in our internal continuous integration system, which is separate from external ones. This means maintaining more than 450 automated tasks at any one time, about 6,000 builds per month and every night we have on average 40 new builds. So you can see why automating the testing of these builds is such a priority and a challenge, with so many we need to be able to tell right away when something is wrong.
Nuxeo: How did you determine the developers’ constraints so you could build the right infrastructure for them? Did this happen organically or was it a concentrated effort?
When I was young, my father taught me a valuable lesson. He told me that one can use laziness as a way to become powerful and effective. He was talking about mathematics, but I quickly discovered that I could apply this to IT computing. I came to Nuxeo with ten years of experience as a “lazy” developer, my laziness so-to-speak was a catalyst to finding how to do the same tasks with less effort. I’m always looking at ways of easing my workload so that I never have to repeat the same task twice.
So, my approach is very direct, I often go straight to the dev team and ask them how they’re currently working. I look at their work, what they do on a daily basis, and see what can be automated. For instance, we are using Maven a lot and people are used to Ant, so we used this as an opportunity to develop a new tool in Nuxeo, which makes links between Ant and Maven to provide developers a way to automate their builds and combine the power of the two tools.
Nuxeo: How does what you do relate to Nuxeo’s agile development strategy?
It’s a huge component and being agile depends on building these types of automated tools. The first release I did for Nuxeo took me the whole night, I was up until 6 or 7am in the morning because of the complexity and amount of code I was working with. Now it takes about 1 minute to start the release process and then 1 hour between when the process is completed and the release is ready for testing. The automated tests still take several hours, but the difference is that you’re free to do other things in the meantime and you minimize mistakes (there are always mistakes associated with manual processes). Now, I simply check the results via my phone and pushing the final certified release is done with one click.
Nuxeo: What are your thoughts on open source software?
I think open source is the only way to do things right. But, I’m a bit biased. [smiles]
Behind the philosophy, there’s a pragmatic point of view, a question of human intelligence training and knowledge sharing. I can’t imagine research without collaboration and exchanges. Nobody invents anything without reusing others’ inventions. I don’t want to reinvent the wheel. If someone did something right, I’m happy being able to use it and, in return, contribute to it.
I understand the existence of non-open source software for very specific use cases, but, for me, open source means being transparent in the way projects are carried out and also the tools that are used. I’m more confident in projects that are open source because I’m more confident in the tools that support open source. I’ve had bad experiences in the past with software that has died because of NOT being open source. With proprietary software, the product depends on the owner, which is often one company—if that owner/company disappears then the technology goes along with it. Plus, with open source, if users are unsure of your product or whether things have been done properly, they can simply look at the code and find out for themselves. This way you tend to have more testers, instant feedback, more users, and the whole system is thoroughly tried and true.
About Nuxeo being open source, I’m proud to tell our customers we are selling services not licenses: not getting money from our knowledge itself but from concrete efforts we are providing around that knowledge.
Nuxeo: What do you like about working for Nuxeo?
Tropicana juice in the fridge! [laughs] And, I like that Nuxeo takes care of its developers. A good product is made by individuals who have good morale. I like that Nuxeo is fully open source, this is what I had envisioned for my career path. And, I like that the people I work with are all passionate about something regardless of what it is, could be plants, software, music, design, AI... whatever it is they are able to bring that level of passion also to their work so it adds another dimension.
Nuxeo: Are you a geek ?
I practice sports and have a lot of various passions, but well... computing is not only my job but also a hobby. And before becoming a dad, I was a hardcore gamer.