WEBVTT

00:00.000 --> 00:13.640
All right, so next step, we're going to have Melissa Williams going to be talking to us about

00:13.640 --> 00:15.640
K-workflow.

00:15.640 --> 00:16.640
Hi.

00:16.640 --> 00:17.640
Okay.

00:17.640 --> 00:18.640
Yeah.

00:18.640 --> 00:20.280
Good.

00:20.280 --> 00:23.280
So hi, I'm Melissa.

00:23.280 --> 00:27.120
I am a K-R-N-O-G-P-U-Driver developer at Tagalia.

00:27.120 --> 00:34.760
In today, I will give a talk, a very inclusive talk, to not let your motivation go, saving

00:34.760 --> 00:37.840
by saving time with K-workflow.

00:37.840 --> 00:43.840
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

00:43.840 --> 00:45.680
K-R-N-O developer.

00:45.680 --> 00:49.520
But at some point, you are united by a single need.

00:49.520 --> 00:53.360
Then you need a valid aid, a custom kernel, just one change.

00:53.360 --> 01:02.160
But yeah, you need to check if it's fixed something, or it's actually improving something.

01:02.160 --> 01:10.880
And then it's given change for a given distribution, or for a given device, or for a given

01:10.880 --> 01:11.880
subsystem.

01:11.880 --> 01:12.880
Oops.

01:12.880 --> 01:18.480
Maybe you can try to figure out the number of subsystems that we can have, the number

01:18.560 --> 01:21.080
of three that we can have, the kernel.

01:21.080 --> 01:27.040
So being you are not being your kernel developer, at some point you could face this kind

01:27.040 --> 01:32.920
of situation, that is, for example, I use a space developer just as you want, just want

01:32.920 --> 01:38.080
to report an issue in the kernel.

01:38.080 --> 01:43.760
And then they say, oh, there is an issue in your driver, and it's only reproducible when

01:43.760 --> 01:47.600
you are running these distribution, specific one.

01:47.600 --> 01:53.720
And then the kernel developers ask it, oh, did you check the last version of this branch

01:53.720 --> 01:58.120
to see if it's the issue is still there?

01:58.120 --> 02:02.520
And the report never compiles a custom kernel before.

02:02.520 --> 02:11.640
So they needed to read many kernel tutorials and documentation to create and build, to create

02:11.640 --> 02:15.840
a build and deploy kernel script.

02:15.840 --> 02:24.080
And finally, the report managed to check if the latest version of this branch is better

02:24.080 --> 02:25.080
or not.

02:25.080 --> 02:27.440
And then they just say, sorry for the lane.

02:27.440 --> 02:34.440
It's my first time deploying a custom kernel, and I am not sure if I did it right, so

02:34.440 --> 02:36.600
we have this variable.

02:36.600 --> 02:41.720
But the issue is a super present in this kernel branch, we can say, like, this work branch.

02:41.720 --> 02:50.600
And then the kernel developer cannot see this issue in the target device that they have.

02:50.600 --> 02:59.720
So OK, I need now to reproduce this issue and my side, but I never use this distribution

02:59.720 --> 03:02.320
because we have many distributions.

03:02.320 --> 03:11.920
So they also created almost the same script created by the reporter.

03:11.920 --> 03:16.400
The problem, you keep creating new scriptes.

03:16.400 --> 03:23.560
Every time you change distribution architecture, hardware, or even a project, even side

03:23.560 --> 03:29.080
you are company, you just change to another project and you need a different workflow.

03:29.080 --> 03:35.480
So you create another script to your new kernel development workflow.

03:35.480 --> 03:41.960
And you know you have many babies, you have a collection of my precious script.

03:41.960 --> 03:49.280
So instead of creating and accumulating scripts, save your time with keyword flow.

03:49.280 --> 03:55.560
That is more or less an example of tip-co scripts that you can have, probably, one of many

03:55.560 --> 03:57.840
of you have this kind of scripted.

03:57.840 --> 04:00.280
This is for a hardware pie for.

04:00.280 --> 04:10.360
And then this is everything that I need to create a script to memorize, to just install

04:10.360 --> 04:17.160
and deploy a kernel and not target machine, so corresponding, and things like this.

04:17.160 --> 04:22.680
And the keyword flow, I just need to remember two comments.

04:22.680 --> 04:30.080
So what is keyword flow, it's a collection of tools and software combined to optimize

04:30.080 --> 04:37.480
Linux kernel development workflow, reduce time, spend on repetitive tasks, because we do it.

04:37.480 --> 04:40.920
We are spending our life combining kernels.

04:40.920 --> 04:48.400
Standardize also best practices and ensure reliable data exchange across kernel workflow.

04:48.400 --> 04:54.440
Like you have your set up, but someone have a different one, and you are not seeing the

04:54.440 --> 04:58.560
same thing, even if you are describing the same set up.

04:58.560 --> 05:02.000
So keyword flow also have help on this.

05:02.000 --> 05:07.680
I don't know if you will get this analogy, but for me, keyword flow is kind of a power-ranger

05:07.680 --> 05:09.680
megazard of scripts.

05:09.680 --> 05:16.640
So you are just combining all your scripts to create a very powerful tool.

05:16.640 --> 05:19.320
What is the key features of keyword flow?

05:19.320 --> 05:25.400
We have many, but I think the most important one, you can view and apply custom kernel

05:25.400 --> 05:33.600
across devices and distributions, handle cross-compilation, sincerely, manage multiple architecture,

05:33.600 --> 05:41.720
settings, and target device in the same work tree, organize, kernel configuration files.

05:41.720 --> 05:48.040
It facilitates remote debugging and code inspection inspection.

05:48.040 --> 05:53.840
Standardize Linux kernel pet submissions guideline, probably you already check it on the

05:53.840 --> 05:59.440
documentation, or maybe grab a complaint that you are not following something when you

05:59.440 --> 06:03.720
just need this bug fix to this table.

06:03.720 --> 06:12.520
And then we also have an upcoming feature that is an interface where you can bookmark,

06:12.520 --> 06:20.120
apply, and reveal by bags from the Middle East, from Laurie.

06:20.120 --> 06:27.000
So this is a list of comments that we have, we can find, keyword flow.

06:27.000 --> 06:38.760
So the first subset is around to set up and configure your tool to all the different situations

06:38.760 --> 06:43.280
that you can face in your daily tasks.

06:43.280 --> 06:48.640
You have another subset that is to build and apply custom kernel, as I mentioned.

06:48.640 --> 06:57.800
We have also some tools to manage in interact with target machines remotely or locally.

06:57.800 --> 07:07.200
And to inspect and debug a kernel, to optimize best practice, to batch submission, like

07:07.200 --> 07:14.080
code style, maintainers, but also send batch, we can assure that you are sending batch

07:14.160 --> 07:25.480
to the list of recipient and mainly for this change, who needs to know about that.

07:25.480 --> 07:28.640
And then the upcoming one that is the batch app.

07:28.640 --> 07:36.000
So how you can save time with keyword flow when you are beauty in the glycosome kernel?

07:36.000 --> 07:42.840
So first, you need a config file, and probably you are like menelies, tracking and managing

07:42.840 --> 07:46.800
config files from different targets.

07:46.800 --> 07:52.320
You sometimes you are just renaming the config file with a bunch of different suffixes trying

07:52.320 --> 08:01.960
to describe or this config file is to this separate machine, and a copy of course because

08:02.040 --> 08:04.040
we love this.

08:04.040 --> 08:16.160
And on keyword flow, we can use just the kernel config manager common, and it will do,

08:16.160 --> 08:22.680
you can save, you can store different config files, describe it, and then you can get

08:22.680 --> 08:26.120
it back and apply on your kernel.

08:26.120 --> 08:31.800
And you need to build the kernel, and probably you are memorized combination of make comments

08:31.800 --> 08:39.480
and options, and you just need to run the keyword flow be, the beard from beard.

08:39.480 --> 08:47.000
And then you can build a kernel with cross compilation, C-flags, C-cash, LLVM, you can

08:47.000 --> 08:50.760
set up previously the CPU scaling factor.

08:50.760 --> 08:57.920
You can also check information about the number of modules that you have there, and you

08:57.920 --> 09:02.280
can enable compilation warnings in many other options.

09:02.280 --> 09:10.080
You also have, and then after get the config file, build the kernel, and then you need to

09:10.080 --> 09:11.080
deploy it.

09:11.080 --> 09:20.720
And then before you probably do some SSH, you copy or remove files according to your distribution

09:20.720 --> 09:28.040
and your structure, and you manually update the kernel according to the bootloader of

09:28.040 --> 09:30.320
these distributed distribution.

09:30.320 --> 09:36.360
And now you have the keyword flow D that you can do all these things like the plight

09:36.360 --> 09:40.920
kernel, prepare a target machine before to receive the kernel.

09:40.920 --> 09:46.080
You can lease the available kernel, custom kernel, or already from the distributions that

09:46.080 --> 09:47.720
is already sold there.

09:47.720 --> 09:55.440
Remove kernels, create a shareable package to our walls, and you can just put some settings

09:55.440 --> 10:01.760
like, oh, after the plight of the kernel, I just need to reboot to check if the new

10:01.760 --> 10:10.240
kusum kernel, and I need to check is okay, I don't need to SSH again, and do this.

10:10.240 --> 10:17.440
And we have the abbreviation, the combination of QR flow, the build, and the plight in one

10:17.440 --> 10:18.440
common.

10:18.440 --> 10:25.760
You can also save time, the bugging kernels locally are remotely, so previously SSH and also

10:25.840 --> 10:34.840
tap enable trace, and now you have the keyword flow the bug that you can use, you can

10:34.840 --> 10:40.760
use many, the bugging tools that we have in the kernel like events, F trace, and also

10:40.760 --> 10:49.760
the DMASC, and you can, you can handle this from your locomotion to remove target or

10:49.840 --> 10:52.680
even your own.

10:52.680 --> 10:57.840
You can also manage multiple kernel images in the same work tree.

10:57.840 --> 11:06.040
There is, we have the environment common, I mean, the environment feature, that we just

11:06.040 --> 11:19.360
kind of, you can, before you were like having multiple cloning, multiple, you are cloning,

11:19.440 --> 11:27.520
same time with poor repostors, because you need to separate, isolate your compile files by, for

11:27.520 --> 11:34.640
example, if you need to cross compile, if it's 86, and then you have an environment that

11:34.640 --> 11:42.800
you isolate both the configurations, the setup of the target machine for this, but also

11:42.880 --> 11:51.080
all the options, the compilation options, and deployment options for this specific kernel

11:51.080 --> 11:56.320
in the same work tree, so you just need to change the environment, and you can apply, for

11:56.320 --> 12:03.680
example, the same change for different setups and configurations, and also finally, we have

12:03.760 --> 12:13.280
the feature for to submit patch, we have the basic things, it's mostly a wrap from

12:13.280 --> 12:18.400
options that we are already, scripts that we already have in the kernel, but we have the

12:18.400 --> 12:24.400
sent patch that is, we automatically create the list of recipients and sent patch via

12:24.400 --> 12:33.040
mail, and also it's kind of automatized, the patch submissions rules when you need to send

12:33.120 --> 12:44.000
a mail, and we have the documentation, and it follows this rules there. So the last one is

12:44.000 --> 12:53.680
the upcoming one, it's a volunteer project, and it's a demonstration that the developer that

12:53.680 --> 13:02.960
is doing that is showing, that you have an interface to deal with Laura and then you can book

13:03.040 --> 13:10.080
mark pads, you can apply a patch or a patch series, and if you are satisfied with the result,

13:10.080 --> 13:22.880
you can reveal by and it will send automatically, revealed by for this series, then a call

13:22.880 --> 13:30.880
of action, a call to action, is stop writing, residents scripts save everybody's time is not

13:30.880 --> 13:37.520
only your time, but everybody's time, and effort with keyword flow, try with keyword flow today,

13:37.520 --> 13:46.480
and contribute to keyword flow also, because it's 100% volunteering work, nobody's paying for that,

13:46.480 --> 13:52.880
we are like a bunch of developers with many scripts that we decided to share all of our scripts

13:52.880 --> 14:00.080
and try to standardize that, and so a challenge is a place one of your scripts with keyword flow this

14:00.880 --> 14:06.720
week, and or you can make a new keyword flow feature with one of your scripts.

14:08.240 --> 14:14.720
I would prepare a demonstration, but many people just told me to not do that and live the

14:14.720 --> 14:21.120
demonstration because it will, I will get failed, so I decided to just record that. It's how we can

14:21.120 --> 14:29.200
use the keyword flow environment, so this is a list of environment, I have my local machine that is

14:29.280 --> 14:39.680
Anita one, and I have a husband by four, with the six eight six eight six six six six four

14:40.240 --> 14:49.360
husband, and I have the this thing back, so this one, I am check my local machine, and I have the

14:49.360 --> 14:57.280
Vikramas display display driver, that means we're kind of driver, and Colonel Wood's driver,

14:57.360 --> 15:02.480
and I decided to have a better description, because I was previously a maintainer of the

15:02.480 --> 15:11.200
driver, and I would like to get my baby back to me, so it's just I just put here as my precious

15:11.200 --> 15:21.360
Vikramas, and I decided, okay, I already have all the files compile, so it's just one change,

15:21.440 --> 15:29.440
so I just need to deploy, I mean, compile and deploy this change in my local machine,

15:29.840 --> 15:40.400
so I don't need to do everything again, I just need to run QWBD, and it will build and deploy,

15:40.400 --> 15:46.800
and my local machine, and then it will prepare everything in install in the Colonel,

15:47.760 --> 15:57.120
and then you can see that I didn't mention about that before, but it was like, I am using the same

15:58.640 --> 16:06.000
Colonel, so I just replaced the module there, and then I have now, when I try to get in for

16:06.000 --> 16:12.960
the Vikramas, now this is my precious Vikramas, and I am satisfied, I don't need this anymore,

16:13.200 --> 16:20.560
and I just need to, but I want to use the same work 3, that is the main line, so I will now change

16:20.560 --> 16:28.880
for a different environment using the same work 3, and now I have our 64, that is the hospital

16:28.880 --> 16:37.760
by 4, and I will use this environment right now, so what what it means, I already have all the

16:37.760 --> 16:45.520
configuration of the target machine, you can check this is the device, it can show you the

16:45.520 --> 16:56.000
information of the device, the delays because I was using my smartphone to have a connection network,

16:56.000 --> 17:06.480
so you can see it's the current, we have the information, it's the the current that came with the

17:06.480 --> 17:16.320
distribution, and you can have all the information about the device that I need to do, and then

17:16.320 --> 17:23.440
what I want to do, I will just install the plug, the Colonel, because I have all the files are

17:23.440 --> 17:28.880
very compiler, it was isolated, even if I am using the same work 3, and I just change the environment,

17:28.880 --> 17:35.520
it will just install that, and then I just said that because I would like to be a bit fast,

17:36.000 --> 17:45.200
when I reboot, and I don't need to check anything about the graphical interface, so I ask it

17:46.560 --> 17:54.080
to when I reboot, after the plug, and reboot, I will not have this graphical interface enabled,

17:54.800 --> 18:03.440
and I just pass a KW deploy and reboot the option reboot, so what will it will do,

18:03.520 --> 18:12.160
it will automatically deploy and reboot my machine, so it's sending the patch, it's a remote machine,

18:12.160 --> 18:22.080
it's not mine anymore, it's not the local one, so it will take some time, and let's see,

18:22.720 --> 18:40.800
yeah sometimes it's not that, that's why I record it, so basically it will also, I am using the upstream

18:40.880 --> 18:48.240
Colonel, and a hospital Pi has a downstream version that is more stable, but it's work, so

18:49.200 --> 18:55.360
you will see some warnings when it deploy, but it's working, it's more or less like that,

18:56.400 --> 19:05.280
so you probably will see many missing firmware, and also they will complain that they cannot find

19:05.280 --> 19:17.840
something, let's see, it's more, and that's it, so what it's say that this error you can

19:17.840 --> 19:24.880
just ignore, it will, it will work, but then they close the connection, what it means, I deploy the

19:24.880 --> 19:30.240
Colonel, and I read reboot machine, and then I try to assess, as I said, that I have

19:30.240 --> 19:35.760
read it in my keyword flow, and it's right to assess, and it's not reachable, because it's

19:36.880 --> 19:44.720
restarting, so then I will try again, when I see that it's actually completely load,

19:46.240 --> 19:53.120
and then I will see that now I have the mainline Colonel installed, you can see the first line

19:53.680 --> 20:00.880
of that, I just need to leave the machine, and then I will change again to another setup that is

20:00.880 --> 20:10.960
the steam deck, currently I am working with steam deck, so it's now I am back to the X86 setup,

20:10.960 --> 20:21.200
but what is the difference here, my laptop is in Taiwan, and this one is an indeed device,

20:21.760 --> 20:28.640
indeed GPU, and I am using a different distribution, here I have the W1, the W1, and that is the

20:28.640 --> 20:37.600
TOS that's based in ARP, and then I already have the mainline Colonel installed, but there is a difference,

20:37.600 --> 20:45.280
I try to load the VK mass, and I think it was not that motivational, as I was expecting, so I just

20:45.360 --> 20:57.040
changed one thing that when I load, when the loading of the module is completed, I want something

20:57.040 --> 21:04.320
like that keep much weightening to contribute to the carano and to do my change, so I just put

21:04.320 --> 21:13.280
this kind of message that doesn't do anything, but it's a printk like that, that we love it, I know,

21:13.360 --> 21:18.720
when we are the buggy things, and basically it's just to say let's go keep doing

21:19.760 --> 21:27.760
no meaning, it's many more traditional stuff that's like that, and then I can deploy the same thing,

21:27.760 --> 21:34.880
I will just build and deploy the carano, now it's a remote machine to, even it's

21:34.960 --> 21:54.000
86, there's a different distribution also, and what I will have, okay, it's a, I am in time,

21:54.080 --> 22:00.800
I think so, it's just a bit of delay, but it will happen, yeah,

22:05.680 --> 22:12.800
same thing in the module, because it's repair patch, it's same as you remotely,

22:13.040 --> 22:27.520
you need some time, everything's done, it's true, and then what we have here, when we deploy,

22:27.520 --> 22:33.920
we have some issues with Mkai Nitsipiaiol, but we can ignore it because we know it's, it will not affect

22:33.920 --> 22:40.640
the carano, and now I have the let's go, we came as here, and I am motivated to contribute to the carano,

22:40.720 --> 22:45.680
so basically it's that, and tech, thanks, I don't have anything, okay,

22:56.880 --> 22:59.280
questions, although at the top of the first one, yeah,

23:11.040 --> 23:16.480
hi, thank you first for creating this, I'm a kind of maintainer myself, and this looks really

23:16.480 --> 23:24.480
very promising to reduce my workload, and the first question I have is, is this also possible,

23:24.480 --> 23:30.240
this is also allow like importing patches from patchwork, and then you know, just like,

23:30.240 --> 23:35.600
basically putting them into your tool and we'll like go through the process itself and test it,

23:36.240 --> 23:41.360
and the second question is, can you also use this to automate bisecting?

23:45.200 --> 23:54.800
Okay, for the patchwork interaction, we don't have it already, we only interact with the

23:56.160 --> 24:01.840
lar right now, and it's, you know, under development, you know, it's a volunteer work, so it's

24:02.800 --> 24:10.640
not that fast as expected, and we are also, we need a contributions, but you can, for example,

24:10.640 --> 24:16.800
our open and issue, requesting this improvement, and when we have time, our spare time,

24:16.800 --> 24:26.080
start off as we, we decided to improve the, the tool, and about bisecting, we don't have yet

24:26.240 --> 24:32.800
to the same, so it's, it's a good idea, and I think if you can open and, and be sure,

24:32.800 --> 24:42.480
if you can contribute, better, or if you already have a script for that, we, we can incorporate,

24:42.480 --> 24:48.400
we can incorporate in the, in the, in the, in the, in the, in the, in the, in the, in the, just a

24:48.400 --> 24:53.600
minor falloff, I mean, it doesn't necessarily have to be patchwork, but so currently, when, when someone

24:53.600 --> 24:59.360
sends me a patch, I just look up the message ID, and I just fetch it with before. Yeah, yeah,

24:59.360 --> 25:05.440
that's something like this already work. Patch Hub, this upcoming feature, it's used before,

25:05.440 --> 25:12.720
so we have like a fancy interface, but it's actually used before to, you know, you can select the,

25:13.920 --> 25:20.000
you are not subscribed to this, you can just access this millilist and select the patch that you want,

25:20.080 --> 25:26.560
and you can just check that you want to apply this patch, and it will be applied, and also, yeah,

25:26.560 --> 25:34.080
and also, when you are satisfied with your test set, or you, you, you didn't get, get anything wrong,

25:34.080 --> 25:39.760
you can just say, okay, I accepted that, I revealed that, and we will send your revealed by automatically,

25:39.760 --> 25:47.200
so it's, it's automated already, it's under development, so it's an unstable version right now,

25:47.200 --> 25:57.120
but we are trying to finish this, complete that. I have a question. Do it support K exec,

25:57.120 --> 26:03.360
so you can switch the kernel without rebooting the machine, so be faster into testing a new feature.

26:03.360 --> 26:11.360
For module, yeah, we can do that, but we feed a built-in thing, we need to reboot, I mean,

26:11.360 --> 26:13.280
that's the way that we have. Thank you.

26:17.440 --> 26:22.480
If the module work properly, when you load and unload, because sometimes you're trying to unload

26:22.480 --> 26:24.320
the module, it is completely broken.

26:28.320 --> 26:32.080
So two questions. The first one is there any support for Android,

26:33.120 --> 26:39.680
like using ADB instead of SSH, and the second question kind of related to these rows that cannot

26:39.680 --> 26:45.360
have multiple kernels, is there any safety net in case the kernel that you just flashed is completely

26:45.360 --> 26:55.680
broken, that target is not going to boot again. Okay, yeah, not as any, you can reboot,

26:55.680 --> 27:00.560
if you have a boot loader that you know you have to grow when it's managed correctly,

27:00.560 --> 27:05.760
you can do it that it's, if you have, if you have group, but if you have, for example,

27:05.760 --> 27:12.320
you boot, right, and you have only one kernel in boot image, and then you flash it, and that basically

27:12.400 --> 27:17.760
means that you will end up in your boot that is in fast boot or something else. So it's also

27:17.760 --> 27:24.160
built for the tool to support flashing over USB instead of just going to the target and deploying

27:24.160 --> 27:28.640
through. You know, not yet. Not yet, but it's a, yeah, it's a good feature.

27:31.600 --> 27:33.360
Anything else? Yeah.

27:36.320 --> 27:41.440
Just one question about the part submission does it wrap around before, like, completely or

27:41.520 --> 27:52.000
partially or is it working progress? It's a, we already, we used before, already. It's a, I mean,

27:52.000 --> 28:01.200
many of our comments we are, we're using before features, but it's under development yet,

28:01.200 --> 28:08.720
it's not completely. Hi, thanks for the talk, a tiny question. Because I'll see that there are some

28:08.800 --> 28:14.080
system-debindings. I wonder if there is support for other stuff such as Rani Tore OpenRC.

28:15.600 --> 28:22.240
If there is other, no, it's not yet. Yeah. I think we'll be right up there. Thanks a lot.

28:25.680 --> 28:33.360
The last, I don't know, it's the last thing is, I see you have many ideas, probably you have

28:33.360 --> 28:40.080
many scripts. So if you already have it in your machine, maybe you should consider to just

28:40.080 --> 28:46.160
you know submit proposal to us. If you are scripting, we will be, make our life easier.

