Last week, we held our third Yocto 'Developer Day', this time with a slightly different format that I thought worked out pretty well in a number of ways. One big change was that we cut the session down to a half-day instead of the full day we'd done in the past, and as a consequence were able to dispense with the hands-on lab sessions. In the past, we'd actually brought in a bunch of desktop machines and had users walk through printed lab sessions on those machines. We also brought in an equal number of embedded boards for users to play around with as part of the labs. While overall it was very useful for some users, the logistics both in time and space to pull it off were daunting, so being able to accomplish the same goals without having to do all that was nice (well, whether it actually did accomplish the same thing is just my opinion - for all I know we'll be going back to the old format next time - I'm not really in the loop with the planning or the real feedback loop for these events).
The main reason I thought it was so successful from my standpoint was that instead of being constrained by the requirement that users be able to work through the kernel labs in a couple hours on an unfamiliar lab machine, we were able to significantly expand the labs to cover just about everything users who need to deal with the kernel in Yocto typically want to do, in a very practical way. For getting your feet wet, often times there's no subsitute for a tested practical walk-through that's known to work ('getting your feet wet' isn't really restricted to the time that you're just starting to use the system either - it also covers new topics that you haven't seen before). Of course, it was also nice to get rid of the other limitations such as the long lead times for machine prep which meant targeting old patched-up versions of the code, and the no-networking requirement, which is self-explanatory.
So we spent a lot of time expanding and updating the kernel labs, which you can find here:
The .pdf assumes you're starting from scratch and should give you everything you need to set your own machine up.
At the same location you can also find the slides for my DevDay talk, which contains URLs to both the definitive Yocto kernel manual and the link above. (You can also get to it all from the Yocto home page (https://www.yoctoproject.org/) by selecting 'Read presentations about the project' from the drop-down list you get by clicking on the 'Start Here to learn more' box on the left-hand side and clicking on the 'Working with the Kernel' presentation link. You can also find the other DevDay (and other) presentations in the same area.)
Though overall I do think the new Yocto DevDay format was a success, I suspect that there were some people who missed the actual hands-on lab portion - I hope that the new expanded labs and the instructions allowing them to set them up on their own machines helps make up for that. I also made an effort to finish and test the labs the Friday before DevDay, and sent an announcement to the Yocto mailing list, so people could work through them and then show up with questions if they had any. I hope some people did that and that's where some of the questions came from...
I also have to say that I'm kind of a new convert to this type of training material. Traditionally I've been rather skeptical of these types of hand-holding walk-through tutorials as perhaps giving people the false impression that they actually understood something just because they successfully navigated through a series of complex steps. But I think that in combination with some other great high-level documentation such as the Yocto Project Linux Kernel Development Manual, found here:
that they're invaluable for this kind of project. Users should now be able to find answers to just about any question they'd run into when working with kernels in Yocto - at least that's the intent. In the past, providing a similar set of materials for things like BSP development has seemed to tremendously decrease the number of questions from users, which I'd like to think is mainly due to the availability of the materials. Still, you never know, so any kind of input from actual users is always welcome!
Anyway, I can imagine my own reaction in the not-too-distant past to someone telling me about this kind of step-by-step tutorial for working with the kernel, with the haughty reply, as I leaned against the fireplace tamping my pipe, "Hmm, yes, I do expect there's a certain population out there that would find such a thing useful", chuckling to myself while an image of my 9-month old daughter taking her first steps appeared to my mind. "I, however, prefer that everything follow from first principles. If you'll excuse me I think I'll retire to my quarters now and derive the entire kernel source tree from the Greek symbol 'Κ'. But: I will leave out the loop device shortcut patches[*] in order to make your life slow and miserable again, just because I can see that you doubt my ability to do so".
And, once back in my 'quarters', unmounting my high horse and secretly relishing the thought of trying it all out...
[*] more on this next time...