My first conference (and talk!)

As I explained previously in the article presenting my feedback on my internship, I'm now part of Free Electrons' engineering team. The most exciting part is the upstreaming of the work we do with some clients. I'll certainly get into more details on that on my "2016-summary" article planned for the end of the year. The second most exciting part of my job is going to Linux conferences.

That's an awesome event where you can find people tremendously contributing to Linux, people who definitely "know their shit". We're all gathered to share what we have done the past few months, years or decades. What were the trouble we ran into, how we managed to resolve them, how to use such subsystem for your driver, how this subsystem works, how this hardware component works, etc.

This is a place where you can finally meet people you were talking with over the mailing list the whole year.

Well, that's enough propaganda for now!

If you read the article on my internship, you'd know I built a lab to do continuous integration for the Linux kernel thanks to LAVA and KernelCI project. I struggled a bit while building it on which components to choose for the lab, how to build it, how to automate things, how to do continuous integration, ... I fought with LAVA documentation, because it was a terrible mess at that time.

So, we decided with Antoine Ténart, my internship supervisor, to propose a talk on how to build a board farm and remote control them. You can watch it on Youtube.

You can see the first minutes, I'm really not at ease. The first words were unsure. The stress got me a bit but after few sentences, I was focused on the subject and it was really enjoyable.

It was a great experience (the conference and the talk) and I'm already looking forward to the next ELC (Embedded Linux Conference) in Portland at the end of February.

These conferences are also great opportunities to visit some new cities. I've never been to Berlin before so I decided to spend a few days before the conference to wander through the city. You can find my album here.

Feedback on my internship at Free Electrons

I joined Free Electrons February the 1st, 2016 in Toulouse, France for a six months internship as my end-of-studies project in enterprise. It ended August the 5th, 2016 and I've been in holiday since, so now is the time for a little feedback on the last six months.

What's that?

Free Electrons is an engineering company founded in 2004 which offers services for development in Open Source software programs and currently, offers training for the Linux kernel, the Yocto Project and OpenEmbedded, Buildroot or Android. It also offers its expertise in embedded Linux development for companies willing, for example, to use Linux in their products, to upstream drivers in kernel or build a custom Linux system.

Since its creation, Free Electrons is doing its best to contribute to the Free Software community. It does so by releasing all its training materials under free documentation license. The company also strongly encourages clients to share our combined work with the community and thus has a preference for clients willing to interact with and give back to the free software community by sparing some of project’s time on upstreaming modifications to free software programs.

Well, there is some more about the company in my report.

Actual work

The subject of my internship is "Linux kernel continuous integration via KernelCI.org" but once the main subject has been dealt with, I could work on other small projects such as Linux kernel driver development or other projects depending on clients' needs.

Linux kernel continuous integration

Since the kernel supports several thousands of different platforms, when a developer writes new code for the kernel, he cannot test his code on all the platforms and usually tests only on the platforms he owns. Before merging its code to the kernel source code, some users or other developers might test it on other platforms or in other configurations but it is rather rare. Furthermore, the only way to guarantee a modification works on all impacted platforms is to build the kernel in all its configurations and test on all these platforms if the kernel boots. This is extremely tedious and time consuming.

The main goal of KernelCI project is to implement a continuous integration in the kernel so build or boot failures are detected before reaching the end users. There already are several labs contributing to the project: several from Linaro and few from KernelCI founders. However, they are often expensive (i.e. the Linaro’s lab uses several 500$ APC PDU systems to control the power of boards) and we did not want to put that much money in a small part of the lab so one of the challenges is to have working, cheap (but not hackish) solutions.

You can follow the whole process of thinking, building and integrating the lab in my report or in the article series I wrote on Free Electrons' blog. At the end of my internship, we had a functional lab integrated in KernelCI which provides boot reports since May, 2016 and can be checked here.

I also developed lavabo to allow Free Electrons' engineers to remotely control boards in the lab.

Miscellaneous development

I added the support of a new board (the Allwinner Parrot R16 EVB) in both U-Boot bootloader and the Linux kernel. See the contributions here: U-Boot support and Linux kernel support.

I also worked (and still work) on the driver for all Allwinner SoCs' ADC which can be used either as an ADC controller, a touchscreen controller or a SoC thermal sensor. I started from an existing driver which exposes the touchscreen and thermal sensor controllers to add the ADC controller as well. The forth version of my patches to upstream the driver is ongoing.

Report

The paragraphs above are only short summaries of what have been done during my internship, for a whole explanation, take the time to read my report. The first chapter are in French as requested by the school but don't worry, the interesting parts are all in English ;)

Also, I share the LaTeX version of it on a GitHub repository so feel free to take whatever you like for your report.

Conclusion

I had really a lot of fun working for Free Electrons though the building & integration of the lab were not as enjoyable as I thought it would be but I LOVED working on drivers, board's support, etc. I'm also really happy to announce I'll be a Free Electrons' engineer for years to come :)