All right, so next step, we're going to have Melissa Williams going to be talking to us about
K-workflow.
Hi.
Okay.
Yeah.
Good.
So hi, I'm Melissa.
I am a K-R-N-O-G-P-U-Driver developer at Tagalia.
In today, I will give a talk, a very inclusive talk, to not let your motivation go, saving
by saving time with K-workflow.
So you are a K-R-N-O developer, or you want to be a K-R-N-O developer, or don't want to be a
K-R-N-O developer.
But at some point, you are united by a single need.
Then you need a valid aid, a custom kernel, just one change.
But yeah, you need to check if it's fixed something, or it's actually improving something.
And then it's given change for a given distribution, or for a given device, or for a given
subsystem.
Oops.
Maybe you can try to figure out the number of subsystems that we can have, the number
of three that we can have, the kernel.
So being you are not being your kernel developer, at some point you could face this kind
of situation, that is, for example, I use a space developer just as you want, just want
to report an issue in the kernel.
And then they say, oh, there is an issue in your driver, and it's only reproducible when
you are running these distribution, specific one.
And then the kernel developers ask it, oh, did you check the last version of this branch
to see if it's the issue is still there?
And the report never compiles a custom kernel before.
So they needed to read many kernel tutorials and documentation to create and build, to create
a build and deploy kernel script.
And finally, the report managed to check if the latest version of this branch is better
or not.
And then they just say, sorry for the lane.
It's my first time deploying a custom kernel, and I am not sure if I did it right, so
we have this variable.
But the issue is a super present in this kernel branch, we can say, like, this work branch.
And then the kernel developer cannot see this issue in the target device that they have.
So OK, I need now to reproduce this issue and my side, but I never use this distribution
because we have many distributions.
So they also created almost the same script created by the reporter.
The problem, you keep creating new scriptes.
Every time you change distribution architecture, hardware, or even a project, even side
you are company, you just change to another project and you need a different workflow.
So you create another script to your new kernel development workflow.
And you know you have many babies, you have a collection of my precious script.
So instead of creating and accumulating scripts, save your time with keyword flow.
That is more or less an example of tip-co scripts that you can have, probably, one of many
of you have this kind of scripted.
This is for a hardware pie for.
And then this is everything that I need to create a script to memorize, to just install
and deploy a kernel and not target machine, so corresponding, and things like this.
And the keyword flow, I just need to remember two comments.
So what is keyword flow, it's a collection of tools and software combined to optimize
Linux kernel development workflow, reduce time, spend on repetitive tasks, because we do it.
We are spending our life combining kernels.
Standardize also best practices and ensure reliable data exchange across kernel workflow.
Like you have your set up, but someone have a different one, and you are not seeing the
same thing, even if you are describing the same set up.
So keyword flow also have help on this.
I don't know if you will get this analogy, but for me, keyword flow is kind of a power-ranger
megazard of scripts.
So you are just combining all your scripts to create a very powerful tool.
What is the key features of keyword flow?
We have many, but I think the most important one, you can view and apply custom kernel
across devices and distributions, handle cross-compilation, sincerely, manage multiple architecture,
settings, and target device in the same work tree, organize, kernel configuration files.
It facilitates remote debugging and code inspection inspection.
Standardize Linux kernel pet submissions guideline, probably you already check it on the
documentation, or maybe grab a complaint that you are not following something when you
just need this bug fix to this table.
And then we also have an upcoming feature that is an interface where you can bookmark,
apply, and reveal by bags from the Middle East, from Laurie.
So this is a list of comments that we have, we can find, keyword flow.
So the first subset is around to set up and configure your tool to all the different situations
that you can face in your daily tasks.
You have another subset that is to build and apply custom kernel, as I mentioned.
We have also some tools to manage in interact with target machines remotely or locally.
And to inspect and debug a kernel, to optimize best practice, to batch submission, like
code style, maintainers, but also send batch, we can assure that you are sending batch
to the list of recipient and mainly for this change, who needs to know about that.
And then the upcoming one that is the batch app.
So how you can save time with keyword flow when you are beauty in the glycosome kernel?
So first, you need a config file, and probably you are like menelies, tracking and managing
config files from different targets.
You sometimes you are just renaming the config file with a bunch of different suffixes trying
to describe or this config file is to this separate machine, and a copy of course because
we love this.
And on keyword flow, we can use just the kernel config manager common, and it will do,
you can save, you can store different config files, describe it, and then you can get
it back and apply on your kernel.
And you need to build the kernel, and probably you are memorized combination of make comments
and options, and you just need to run the keyword flow be, the beard from beard.
And then you can build a kernel with cross compilation, C-flags, C-cash, LLVM, you can
set up previously the CPU scaling factor.
You can also check information about the number of modules that you have there, and you
can enable compilation warnings in many other options.
You also have, and then after get the config file, build the kernel, and then you need to
deploy it.
And then before you probably do some SSH, you copy or remove files according to your distribution
and your structure, and you manually update the kernel according to the bootloader of
these distributed distribution.
And now you have the keyword flow D that you can do all these things like the plight
kernel, prepare a target machine before to receive the kernel.
You can lease the available kernel, custom kernel, or already from the distributions that
is already sold there.
Remove kernels, create a shareable package to our walls, and you can just put some settings
like, oh, after the plight of the kernel, I just need to reboot to check if the new
kusum kernel, and I need to check is okay, I don't need to SSH again, and do this.
And we have the abbreviation, the combination of QR flow, the build, and the plight in one
common.
You can also save time, the bugging kernels locally are remotely, so previously SSH and also
tap enable trace, and now you have the keyword flow the bug that you can use, you can
use many, the bugging tools that we have in the kernel like events, F trace, and also
the DMASC, and you can, you can handle this from your locomotion to remove target or
even your own.
You can also manage multiple kernel images in the same work tree.
There is, we have the environment common, I mean, the environment feature, that we just
kind of, you can, before you were like having multiple cloning, multiple, you are cloning,
same time with poor repostors, because you need to separate, isolate your compile files by, for
example, if you need to cross compile, if it's 86, and then you have an environment that
you isolate both the configurations, the setup of the target machine for this, but also
all the options, the compilation options, and deployment options for this specific kernel
in the same work tree, so you just need to change the environment, and you can apply, for
example, the same change for different setups and configurations, and also finally, we have
the feature for to submit patch, we have the basic things, it's mostly a wrap from
options that we are already, scripts that we already have in the kernel, but we have the
sent patch that is, we automatically create the list of recipients and sent patch via
mail, and also it's kind of automatized, the patch submissions rules when you need to send
a mail, and we have the documentation, and it follows this rules there. So the last one is
the upcoming one, it's a volunteer project, and it's a demonstration that the developer that
is doing that is showing, that you have an interface to deal with Laura and then you can book
mark pads, you can apply a patch or a patch series, and if you are satisfied with the result,
you can reveal by and it will send automatically, revealed by for this series, then a call
of action, a call to action, is stop writing, residents scripts save everybody's time is not
only your time, but everybody's time, and effort with keyword flow, try with keyword flow today,
and contribute to keyword flow also, because it's 100% volunteering work, nobody's paying for that,
we are like a bunch of developers with many scripts that we decided to share all of our scripts
and try to standardize that, and so a challenge is a place one of your scripts with keyword flow this
week, and or you can make a new keyword flow feature with one of your scripts.
I would prepare a demonstration, but many people just told me to not do that and live the
demonstration because it will, I will get failed, so I decided to just record that. It's how we can
use the keyword flow environment, so this is a list of environment, I have my local machine that is
Anita one, and I have a husband by four, with the six eight six eight six six six six four
husband, and I have the this thing back, so this one, I am check my local machine, and I have the
Vikramas display display driver, that means we're kind of driver, and Colonel Wood's driver,
and I decided to have a better description, because I was previously a maintainer of the
driver, and I would like to get my baby back to me, so it's just I just put here as my precious
Vikramas, and I decided, okay, I already have all the files compile, so it's just one change,
so I just need to deploy, I mean, compile and deploy this change in my local machine,
so I don't need to do everything again, I just need to run QWBD, and it will build and deploy,
and my local machine, and then it will prepare everything in install in the Colonel,
and then you can see that I didn't mention about that before, but it was like, I am using the same
Colonel, so I just replaced the module there, and then I have now, when I try to get in for
the Vikramas, now this is my precious Vikramas, and I am satisfied, I don't need this anymore,
and I just need to, but I want to use the same work 3, that is the main line, so I will now change
for a different environment using the same work 3, and now I have our 64, that is the hospital
by 4, and I will use this environment right now, so what what it means, I already have all the
configuration of the target machine, you can check this is the device, it can show you the
information of the device, the delays because I was using my smartphone to have a connection network,
so you can see it's the current, we have the information, it's the the current that came with the
distribution, and you can have all the information about the device that I need to do, and then
what I want to do, I will just install the plug, the Colonel, because I have all the files are
very compiler, it was isolated, even if I am using the same work 3, and I just change the environment,
it will just install that, and then I just said that because I would like to be a bit fast,
when I reboot, and I don't need to check anything about the graphical interface, so I ask it
to when I reboot, after the plug, and reboot, I will not have this graphical interface enabled,
and I just pass a KW deploy and reboot the option reboot, so what will it will do,
it will automatically deploy and reboot my machine, so it's sending the patch, it's a remote machine,
it's not mine anymore, it's not the local one, so it will take some time, and let's see,
yeah sometimes it's not that, that's why I record it, so basically it will also, I am using the upstream
Colonel, and a hospital Pi has a downstream version that is more stable, but it's work, so
you will see some warnings when it deploy, but it's working, it's more or less like that,
so you probably will see many missing firmware, and also they will complain that they cannot find
something, let's see, it's more, and that's it, so what it's say that this error you can
just ignore, it will, it will work, but then they close the connection, what it means, I deploy the
Colonel, and I read reboot machine, and then I try to assess, as I said, that I have
read it in my keyword flow, and it's right to assess, and it's not reachable, because it's
restarting, so then I will try again, when I see that it's actually completely load,
and then I will see that now I have the mainline Colonel installed, you can see the first line
of that, I just need to leave the machine, and then I will change again to another setup that is
the steam deck, currently I am working with steam deck, so it's now I am back to the X86 setup,
but what is the difference here, my laptop is in Taiwan, and this one is an indeed device,
indeed GPU, and I am using a different distribution, here I have the W1, the W1, and that is the
TOS that's based in ARP, and then I already have the mainline Colonel installed, but there is a difference,
I try to load the VK mass, and I think it was not that motivational, as I was expecting, so I just
changed one thing that when I load, when the loading of the module is completed, I want something
like that keep much weightening to contribute to the carano and to do my change, so I just put
this kind of message that doesn't do anything, but it's a printk like that, that we love it, I know,
when we are the buggy things, and basically it's just to say let's go keep doing
no meaning, it's many more traditional stuff that's like that, and then I can deploy the same thing,
I will just build and deploy the carano, now it's a remote machine to, even it's
86, there's a different distribution also, and what I will have, okay, it's a, I am in time,
I think so, it's just a bit of delay, but it will happen, yeah,
same thing in the module, because it's repair patch, it's same as you remotely,
you need some time, everything's done, it's true, and then what we have here, when we deploy,
we have some issues with Mkai Nitsipiaiol, but we can ignore it because we know it's, it will not affect
the carano, and now I have the let's go, we came as here, and I am motivated to contribute to the carano,
so basically it's that, and tech, thanks, I don't have anything, okay,
questions, although at the top of the first one, yeah,
hi, thank you first for creating this, I'm a kind of maintainer myself, and this looks really
very promising to reduce my workload, and the first question I have is, is this also possible,
this is also allow like importing patches from patchwork, and then you know, just like,
basically putting them into your tool and we'll like go through the process itself and test it,
and the second question is, can you also use this to automate bisecting?
Okay, for the patchwork interaction, we don't have it already, we only interact with the
lar right now, and it's, you know, under development, you know, it's a volunteer work, so it's
not that fast as expected, and we are also, we need a contributions, but you can, for example,
our open and issue, requesting this improvement, and when we have time, our spare time,
start off as we, we decided to improve the, the tool, and about bisecting, we don't have yet
to the same, so it's, it's a good idea, and I think if you can open and, and be sure,
if you can contribute, better, or if you already have a script for that, we, we can incorporate,
we can incorporate in the, in the, in the, in the, in the, in the, in the, in the, in the, just a
minor falloff, I mean, it doesn't necessarily have to be patchwork, but so currently, when, when someone
sends me a patch, I just look up the message ID, and I just fetch it with before. Yeah, yeah,
that's something like this already work. Patch Hub, this upcoming feature, it's used before,
so we have like a fancy interface, but it's actually used before to, you know, you can select the,
you are not subscribed to this, you can just access this millilist and select the patch that you want,
and you can just check that you want to apply this patch, and it will be applied, and also, yeah,
and also, when you are satisfied with your test set, or you, you, you didn't get, get anything wrong,
you can just say, okay, I accepted that, I revealed that, and we will send your revealed by automatically,
so it's, it's automated already, it's under development, so it's an unstable version right now,
but we are trying to finish this, complete that. I have a question. Do it support K exec,
so you can switch the kernel without rebooting the machine, so be faster into testing a new feature.
For module, yeah, we can do that, but we feed a built-in thing, we need to reboot, I mean,
that's the way that we have. Thank you.
If the module work properly, when you load and unload, because sometimes you're trying to unload
the module, it is completely broken.
So two questions. The first one is there any support for Android,
like using ADB instead of SSH, and the second question kind of related to these rows that cannot
have multiple kernels, is there any safety net in case the kernel that you just flashed is completely
broken, that target is not going to boot again. Okay, yeah, not as any, you can reboot,
if you have a boot loader that you know you have to grow when it's managed correctly,
you can do it that it's, if you have, if you have group, but if you have, for example,
you boot, right, and you have only one kernel in boot image, and then you flash it, and that basically
means that you will end up in your boot that is in fast boot or something else. So it's also
built for the tool to support flashing over USB instead of just going to the target and deploying
through. You know, not yet. Not yet, but it's a, yeah, it's a good feature.
Anything else? Yeah.
Just one question about the part submission does it wrap around before, like, completely or
partially or is it working progress? It's a, we already, we used before, already. It's a, I mean,
many of our comments we are, we're using before features, but it's under development yet,
it's not completely. Hi, thanks for the talk, a tiny question. Because I'll see that there are some
system-debindings. I wonder if there is support for other stuff such as Rani Tore OpenRC.
If there is other, no, it's not yet. Yeah. I think we'll be right up there. Thanks a lot.
The last, I don't know, it's the last thing is, I see you have many ideas, probably you have
many scripts. So if you already have it in your machine, maybe you should consider to just
you know submit proposal to us. If you are scripting, we will be, make our life easier.