Video summary
Aleix Pol Gonzalez introduces himself as a long-time KDE contributor and the current president of the KDE e.V. association, highlighting his dual role in both community leadership and professional development work at Goodhew. He frames the presentation around the philosophy that software development should not occur in a vacuum but must actively consider the impact on end-users and maintainers alike. The core subject is the evolution of build systems within the KDE ecosystem, specifically focusing on how tools like Buildstream are being adopted to manage the complexities of building operating systems like Kubuntu Linux and Flatpak runtimes. Gonzalez argues that as projects expand in scope—taking responsibility for everything from the Linux kernel to desktop environments—the need for robust, reproducible, and transparent build tooling becomes critical to ensure system stability and user trust.
The presentation delves into the specific advantages of Buildstream, a tool designed to create deterministic builds within isolated containers, which ensures that development environments match production systems exactly. A key feature discussed is the ability to compose complex operating systems from modular recipes while allowing for seamless overrides of upstream components, such as integrating KDE-specific libraries like KCM into standard Flatpak runtimes. Gonzalez demonstrates how this approach facilitates rapid iteration and debugging; for instance, developers can instantly clone a component like PipeWire, apply fixes in their local environment using the same build logic as the CI system, and verify that their changes resolve user-reported issues without needing to manually manage dependencies or rebuild entire stacks. This methodology addresses the historical challenge of maintaining coherence across a vast software stack where a change in one dependency could otherwise break deployments for all users.
However, Gonzalez also acknowledges significant challenges, particularly regarding the maintenance burden of upstreaming proprietary components like QtWebEngine and the difficulty of upgrading systems that rely on non-git-based sources. To mitigate these issues, he describes innovative solutions such as using Release Manager (formerly Anitya) to automate version tracking and upgrades for components that do not support standard git workflows. The talk concludes with a vision for the future where Buildstream becomes an integral part of the daily workflow for all KDE developers, potentially replacing current methods like Kubuntu Builder on desktops. This shift aims to unify the development experience, reduce the need for SDK installations on user machines, and ultimately provide a more sustainable and maintainable infrastructure for the entire KDE community.
Read the full video transcript
So today I wanted to talk uh a little
bit about some work I've been working on
uh during my code thinking time. Coding
is my employer. Um yeah let's start a
little bit introducing myself for those
of you who yet still don't know me. Uh
my name is Alles. I'm from Barcelona,
but I have been living in Verin Llin for
a while. I am a KD contributor. I have
been doing Kitty software for the best
part of the last couple of decades. And
as of late, I've been the KDV president
as well. The KDV is the association
around the Kitty community and we make
sure that everything can happen.
And uh yeah, another thing that I've
been doing is um twistering with Harald.
Um we welcome you to join us on Sundays
at 6 p.m. And on my professional time, I
work for good uh which is also an
academy sponsor since last October and
I've been doing all sorts of
build things including this and some
other stuff as well. But I wanted to do
this presentation from a KD perspective
because I have the
privilege of wearing two hats and I try
to do my my best of it. Now, um, as KD,
we've been, uh, or have been at at
least, uh, talking about this topic for
for quite a while about how there are a
bunch of things we're doing, mostly
software products and plushies, I guess,
as well, but mostly software.
And
it's very tempting so to say to have the
this this software happen in a in a in
some kind of vacuum. But uh well what I
think we need to do where actually we
have been going towards for the last uh
few years or not so few is to not only
do this first step of creating the
solver. So like how I wanted to explain
that today is that
as SKD we want to be able to provide you
the software but we also want to be able
to care about the effect the software
has on on your you and you being not the
academy people also as well but like
whoever is the the receiving end of our
software want to be able to to care
about it and uh have a conversation uh
about the kind of thing that you have
been finding ing and when there is a
problem, you want to be able to to react
to it. Um, and it's on the tooling that
ties all of these together that I would
like to focus this presentation on. So
would be what we call bills. Builds
could be well the actual build that the
the users are are are using, but it's
also the builds that developers do in
their systems
when they want to see that a feature is
working. It's also the builds that we
send our users to see if the fix was
worked even though it's not maybe a
final release or whatever. It is also
the builds that we put together. Uh so
to have nightly nightly releases, right?
like there's a a a ton of things we need
to do that uh well needs addressing
needs to be in place and I think that we
can uh still do a better job at at doing
them particularly like
there's some that we're doing several
times sometimes it makes sense sometimes
it doesn't um in this presentation I
would like to focus on the case of KD
Linux and KD flatp pack binaries u but
I'm going to go a little deeper on that
later. Um,
going a little bit uh back on all right,
you're talking Alles about this thing
that we are working with and uh we are
reasonably happy with. Why do you say
it's a it's a problem?
Well, uh we have been work arounding a
lot of the problems of our own system.
We've been doing KD for 30 years now and
we have gotten quite good at um
well making sure that we can do our
tasks in some way or another. that does
that doesn't mean that uh well we have
all of the facilities that that uh we
would need to to be in our first version
right uh something that uh actually I
tried to address even that on last
academy the developer tooling on last
academy I was trying to say we can have
uh good developer tooling for flatp pack
and it actually it was on that flatp
pack uh specific uh use case and we can
do that there there are a lot of um well
possibilities that we can leverage but I
also see that people are not like really
building upon that and then it's also
very specific to to flatp pack which is
a subset of the things we do
um
ownership is also something that we have
historically tried to not uh step beyond
uh it's very easy when you're working on
a
smaller project smaller product uh to
say well everything that happens in the
outside it's someone else's problem I
hope because otherwise I cannot do
everything right which is understandable
but as soon as we start taking on more
more projects and and problems we
eventually need to say all right uh I am
going to be taking care care of let's
say K algebra but also like how cute
works when I when you're running K
algebra otherwise u you cannot say ever
no no no this is 's fault. My
application is working beautifully, but
the problem is someone else's. And um
you go talk to someone else. In the end,
when you have a a product, you you need
to put something in in front of the user
that that um
is going to just work. And and the last
point is actually something that I
haven't really tried to explain and I
have also been debating myself how how
to explaining mostly, but it's a
repurposing app streams. So for example,
one one of the things we are doing for
KD Linux and I understand completely why
we did it like that and it was it makes
complete sense but we are repurposing an
upstream in that we are saying we're
picking the work that Arinox people are
doing
which is good uh um Arux is a highly
successful project uh and they're doing
excellent work um and we're going to use
it for something else that is fine and
it clearly works like today you can go
and grab an an ISO of KD Linux and run
it on a system and it's going to work
fine. But uh that doesn't change the
fact that you're saying well that thing
that you were doing for that other thing
that actually we're trying to not care
about like we're going to work on
something else. We're going to use it in
a different way. Um we've had that
problem in the past uh before. Um
well that effectively it it creates a
weird respon conversation with with with
your upstream, right? Like
As soon as you go to to the astream and
say no, we are having a problem with
that thing that you're creating that is
slightly different to the
to the the the use you were intending
for. It has a problem for me that maybe
you have not um uh realized. You always
have to put it for example when you are
trying to describe a problem in the
terms of the the the other project
rather than your own.
things work much better when uh your
your upstream is somebody who has the uh
vocation of saying I am creating this so
that so that I am getting used by other
projects and they are established in
this kind of way.
Um yeah
and I guess that
what you uh all should be thinking is
come on Alles this is a huge problem
it can't be done you're crazy right and
that is probably true but well we are
deciding on taking on like distribution
of applications taking on the
distribution of an operating system well
effectively we're owning that operating
system and we're going to be responsible
able not only of the behavior of plasma,
not only of the behavior of um
queen or organ algebra, but also of like
the Linux kernel that you get over there
or um systemd right
and it's effectively lots of things that
we're not particularly uh experts on at
least just yet. we will have to become a
little bit more
and we're also slowly like um
bending uh our our premises as well by
like coming up with different targets
that where is that we want to go where
is it that what is it exactly that that
that we want to put forward KKD Linux
itself for example would uh still be a
research and development project right
uh we still call it beta for example
>> alpha
>> alpha all right Well, it was one of
these Greek letters, right? Um, and um,
yeah, what we find then, especially in
the case of the operating system is that
our changes have a a super large large
effect. Also, in the case of flatp pack,
right? Uh, if you up cute in in the
the runtime, all of the cute
applications in flatub are going to
suffer. If you forget a systemd app in
KD Linux, all of the deployments of KD
Linux are going to are going to suffer.
We need to have uh tools and but also we
need to have to to to nurture ourselves
with people who who are uh well expert
call it expert call it um knowledgeable
about the different uh components.
But it does bring new uh opportunities
right as soon as uh
well you are on a on a on a technology
that is going to allow you to own
everything then you don't owe anything
to the others right then the limit is on
yourself you can do for example faster
iterations across the stack you now for
example in ginux we are it's very easy
for us to iterate over what we have on
um on KDE software which is fine but we
are if you look at the development that
is happening over there uh well escaping
at least the traditional things we were
doing KD and moving lower in the stack
or for example of how like the
containers work over there or uh file
systems etc right um as soon as we uh
have ownership over these different
components in the stack I think that
it's going to start um
well showing a lot more this this faster
iteration.
Uh something that we also have been
talking about and actually we increas in
increasingly need to talk about is
tailored images. Um
one easy um thought would be okay we
could start maybe doing kinux images for
um plasma big screen or plasma mobile.
But actually, if you think about how ARM
works in general, you need to have a a
specific image for every single device
and every single model of of of these
ones, right? And
you need to base yourself on on on on a
technology that is is going to at least
be able to cater to this kind of nuances
and that is provided by communities that
it is part of their core set of beliefs
that uh they want to partake in this
endeavor right you don't want to go to I
don't know RC and say no now we want to
do risk 5 and they go like we don't do
that right uh it's going to be weird
and effectively we want to have space to
grow right uh you I think that
uh it's important that the limitations
stay within what you are and not what
technologies you're you're based on
which is that's kind of uh interesting
now that's a weird quirky uh picture
this is from when I wanted to talk a
little bit about this or a version of
the the work I was doing with build
stream and free desktop SDK for l And uh
one of my colleagues said, "How about
you like you?" I had already been
running an builds for KD Linux for um
using Pstream and and free desktop SDK.
And he said, "How about you don't put
put it on the Fairform 5?" And I said,
"Sure, let's try." I copied some of the
infrastructure they already had for when
they were doing it for um Nomos and I
put it there. I forgot to to to build
plasma mobile itself. I I was already
building plasma desktop. So I put plasma
desktop there and that's kind of what I
got. It was more or less also on the
same day that I was having the the
presentation. So I I didn't uh end up
moving to plasma mobile also because we
were uh discussing and we eventually
actually started like reworking how we
were uh doing these builds. But um yeah,
you can you can do things, you can do
weird things, you can do wrong things
and that's fine. And it's not that
wrong. Actually, it worked pretty well
in any case.
It worked pretty well as long as you
didn't want to call because yeah, but
you had a
very good system settings with
multimonitor support.
Um yeah so in this presentation I would
like to talk about mostly uh yeah KDX
and flatpack
because that's kind of um
yeah the kind of scope I have here in
other presentations I've done about this
kind of work I was talking as well about
like how about we try it further on the
CI or um how we have builds for Android
or other operating systems but that is a
little bit too esoteric to be practical
for the time being. I think that this is
the interesting one. Now, what are we
talking about right
uh free basic
is uh an operating system. Okay. No,
it's a set of files a set of YAML files
which are um recipes buildstream recipes
that define an operating system a Linux
a version of a Linux distro that
buildstream understands.
Now what is wheelstream? will say well
this is a tool that was designed for uh
well being best of all trades um to be
able to build um operating system images
it has been used a lot in the different
projects it has been developed by coding
for u big part of it although it's uh
right now an Apache project so upstream
is is Apache Right. But um several
colleagues have been working on it and
it has this assumption that when you
build your things they are in a
container uh you get all of the
dependencies from
yeah the different components that you
have inside of free desktop SDK and like
it's going to be reproducible like that.
I'm going to go a little bit deeper in
the in the features
uh soon. One of the actually if you seen
see the free desktop SDK you probably
the first time you saw this name was
used in the context of flatpack
runtimes. So actually when flatback was
developed was developed in 2017 or so
and the concept of runtimes was
established and they wanted to have like
uh different bases for the different
operating systems to use. Uh in flatp
pack again as I was um talking about
last year we use normally flatp pack
builder
which is a different tool completely
different it has a lot of shared
concepts but not so many
and the first version was uh implemented
by Alexander Larson who is also the
author of of flatp pack in in flatpack
builder uh but the second version
already was already um built by some of
their colleagues in using build stream
and we have been basing our own uh KD
SDK on this f of SDK when it was built
with flatback builder because it was
flatback builder when it was built on
buildstream on build stream and actually
on our on our end nothing much did
change because uh well we were simply
using the binaries that it offered right
and what we the only thing we cared
about was that we were shipped a GCC
uh G++ um set of libraries and then what
we do in this case is to build cute
build KD frameworks and a couple of
other components that we need ourselves
because we are so special and that's
kind of it. Now what are the interesting
things about FL build?
One of the important things is that uh
when you build something, you can build
it once and it's supposedly gonna
uh be useful for everyone.
Uh it's deterministic in that when
whenever one of your dependency changes,
you will get um uh a rebuild, right? And
since it's happening all in a in a
container, nothing of your system should
affect the build of of that um
component. And therefore you can share
it because it's the same if you build it
on your computer and if you build it on
someone else's. One of the annoyances is
going to be then that when somebody
touches a uh one of the dependencies,
everybody needs to to rebuild it because
it doesn't have the nuance of like uh
does it do the header change? Does the
um API change or anything like that?
Everything needs to be rebuilt as soon
as a dependency changes. Um by
definition of right uh another uh very
important thing is that you can compose
you have your um set of components like
for example when you look at the
components we have in KD Linux or in the
KD runtime which by the way at the
moment they're not sharing any code they
um they are a bunch of KD things that we
buy and build or cute and then we we We
we link we junction which is the name in
the buildstream lingo into free desktop
SDK and then we refer to the
dependencies that that we might have
including build dependencies like
compilers and so on so forth to them
right and one thing that I think it's
very interesting and you might link to
what I was talking about a bit earlier
on is that you get to override them
right like you can say
um I want to use Um
I am building discover and I need uh
upstream. P desktop SDK does uh provide
an upstream but they build it without
cute because there is no cute uh in
ftop SDK and that's perfectly fine. What
what do we do instead of like saying now
we need to fork and ftop SDK which we
could what we do is uh we create a new
recipe for uh upstream cute and
and then we say we tell the the junction
now override override the upstream that
they have over there with this one and
then everything in the system including
I don't know flatback builder is going
to be uh built against our own upstream
rather than theirs which This also makes
sense, right? Like you have the full
coherence of all of the system is built
against the the same things.
And uh another super important thing
that actually we historically I don't
think we have been uh exploring as much
but um as time goes by and particularly
as the CRA becomes more of a thing we
will have to uh be looking more into is
the introspection of this definition
like uh the the end result of all of
these recipes is um a declarative um
description description of all of the
component in your system and we have the
possibility of create tooling or
actually like you could read it right
but that's not uh what we like doing and
and create tooling that is going to
create those reports they they could be
like you could ask things like tell me
all of the sources that we're getting
from this project and which versions
they have which which components are we
patching which not uh what are the
licenses of um all of the projects in in
in my in my uh project and how are they
related in in them. Something that uh
I've been dabbling with, we haven't
really nailed down the
ergonomy yet has been the generation of
Sbombs and particularly CVI CV reports
which uh I think it's it's kind of cool.
So a little bit the idea. Well, first
the sbomb is not that hard. Actually the
sbomb would be quite similar to well
saying the sources, the versions, the
patches and the licenses.
Um also sbombs there's like 23 standards
in which you can specify them and
actually some of them will include
licenses some not. Uh some will include
uh CV data some not.
But actually as we were discussing the
particularly the CV topic, we were
saying well it like having a CV report
about all of the things that might be um
securely broken in your system. It's
good but it's not very useful right like
it's going to be good for you as a user
in case you want to see like okay all of
these CVs I hate 73 74 right but uh as
maintainers I think that or we're
discussing it would be interesting if
you could get okay like uh with these
merge requests all of these new CVEes
are introduced or all of these CVS are
are resolved it's some kind of
information that is could be useful to
have but it's it's not super clear how
we're going to get there but I think
It's going to be kind of cool. And
actually, it would help a little bit
mitigate that um fear we were having uh
earlier or I was describing about like
having to own a lot of things that are
not really our own.
And yeah, something that I think that we
all are more excited about is to make
sure that um
the how the CI builds things and how the
developers build things can be the same.
Obviously like I am not going to go to
anyone's system and say you should be
building your your applications like
this or like that. you do whatever you
want but uh with this and particularly
if we are using it on the CI or so you
have the opportunity of saying all right
why does this problem exist on the CI
or on the end user's machine um you can
reproduce it locally see that they are
right because the users are not trying
to trick you into having problems they
actually have problems uh you get to
address it uh the fact that you
addressed it uh means that
it also got addressed for them and
so on. I think that this is one very
important feature and I think that uh
one good way of explaining it is by
trying to show it. Uh
when I was looking at this slide earlier
the the fonts were a bit smaller. Um you
should look at this line as if like can
can I select things like this whole
thing would be like one command.
I'm going to try to describe what we're
trying to do here.
So let's say you are doing you have
realized that when doing a screen
casting on your system uh pipe wire does
something odd and you need to address it
right in the old world what we would do
or actually what I used to do when I was
working on that was clone pipeware from
somewhere else
assume see that it's working more or le
well build it against my system which is
actually by the not all that trivial.
Uh it's not that trivial to make it
exactly the same as uh on when it's
coming from the DR row, which is what
you would normally do. Uh
test the the thing,
replicate it fails, do the fix, see that
it doesn't fail, create a merge request.
Right? Uh what we're talking about here
is that BSD workspace you can tell it
which is the component.
Uh and here we can see how the junctions
work. Like here we would be assuming
that we are on KD Linux repo of some
sort and we would be saying from predest
SDK bring the component pipe.bst
and you put it in this test directory.
Obviously, this could be
banana pi / pipewire. Doesn't need to
be.
Um, but but there you would get
automatically a git repository with your
pipe wire somewhere that you can already
like look at the code, see what it's
doing, maybe already like learn how um
how things work and maybe you will
already be finding the the problem over
there. But the code you will be seeing
there automatically will already will be
what you were seeing what your user user
was seeing right
and you can do your changes and then you
can run the BST build uh tool that is
again going to build the application
exactly like it is built on the dro
right so uh with the same arguments with
the same environment like with all the
same dependencies etc. So what you would
get would be comparable again to what uh
the
user would be
what's happening
deck.
>> All right.
Um so what yeah you build it it ends up
in uh somewhere and what you would do
for example in KD Linux because we have
an immutable user file system you would
use CX which is what we're using right
now we're recommending people to use
when they use KD builder you would
overlay it on top of your uh user file
system and Bob's your uncle as they say
and the uncle would be like reproducing
your bug or all of the things we were
saying as for I think it's pretty cool
if you don't
you will feel it's cool when you need to
fix a bug in Pacquire I guess um and for
what it's worth uh here I'm talking
about pipewire but would be the same for
cute will be the same for uh probably
our components at the moment what we're
doing for our components in the proof of
concept of Kitty Linux
is to do a weird mega mammoth build
using KD builder But the plan would be
to also have a kio.bsd file and more or
less the same would
would be uh doing
at
uh all right now um
I I was talking about how we've been
doing um work on desktop SDK as of late.
So we uh released uh last week or so
well last month anyway the fest of SDK
26.8 uh fest of SDK releases yearly in
August and in August means normally it
gets released the first week of
September. It's a bit like October Fest,
right? And um
it has a lot of um the things I needed
when I I was trying to get get K Linux
built uh using that. So it's already
pretty good for us. uh something that uh
it was starting to become more and more
apparent and like not only for us also
for other projects was that uh Fedtop
SDK well it's useful if it's like
somewhat tight and compact
uh there is a lot of effort in Ftop SDK
to do a lot of CI and and testing
and and so there is also as well for
PSDK extra but the rules there are a
little bit more relaxed and and still
the idea idea is that it's a place where
you can put all of your dependencies
plus+ and they're going to they're going
to work. Um we've been doing some work
as well to improve the the linting um in
in the different repositories making it
all use reuse as some presentation was
saying earlier. It's pretty cool. Also
all of the uh buildstream files are um
formatted um
well with a with a program so it always
looks the same which is also pretty cool
as well. And yeah the testing also has
has and will continue being one of the
interesting topics both for um for
predest of SDK but also for KD Linux. We
had a talk uh two talks ago, right? Uh
from Bushan and and Niko how testing was
interesting there. Um I think that it's
it's all over and yeah
uh where are we? Um oh
the
ord was already ported to buildstream. I
did a a little bit of a weird thing over
there because
I am fully aware that nobody likes your
technology to change under your feed
because somebody had a happy idea of
using a different technology. So what I
did with uh flatback uh flatback runtime
was to create a script that took uh a
recipe for
uh for flatback builder and it converted
it into buildstream uh recipes that way.
For example, Justin, he has been um
looking over the the runtime as well as
several of the apps and he can continue
using the same tools and all of the
scripts that he had without well having
to migrate everything into a different
thing that has well different concepts
and stuff. Uh eventually I think that we
will end up uh converging into
buildstream but also that would depend
on what we do for other projects. Um
since March or so I also started working
into or at least more seriously into
into getting KD Linux working with
buildstream which I would say it's
working quite well. It's actually even
running the on the open QACI that um
Bushan and friends put together and it's
passing until it gets to discover trying
to do an upgrade and it gets a little
bit confused over there. But also K
Linux is not super designed to have like
two different upstreams kind of thing.
We can look into um
getting that addressed or uh well fixing
it in um
eventually and then doing the merge or
not if if they want to. That's something
that we need to collectively discuss if
it's what we want. In terms of
challenges, um I think that it's not
like we have challenges that are unique
to this problem, but it's nevertheless
worth uh noting, we need to keep all of
our software in the on the server
versions. Um
for example, one of the things uh we
changed so uh you know how I said that
VST workspace open uh pipe wire will
open you a git repo. it will open a git
repo as long as buildstream is aware
that it's a git repo. If you use starbas
and stuff you cannot do that and
actually there are several projects that
are really really really not meant to be
built using uh git repos
for that we uh I developed a new plug-in
that uses um what's it called release
manager.org or which is code name Anitia
in many places which is something that
we're already using in flatp pack and
well it's going to help us do this uh
upgrading so so you understand kind of
where I'm coming from one of the tools
that you will have in buildstream is
like you will say buildstream source
track and that bsd file could be that
pipeware but could be any other and if
the source knows how to upgrade itself
It's going to say, well, I was saying I
was 2.3.1, but now I'm 2.3.3 because it
got released and then like you can in
one run do all of these upgrades for all
of uh your um components and it's going
to be awesome.
Something that I was also looking into
and actually having some interesting
progress is improving how we override
the upstreams. One of the problems was
as I was saying earlier, you can say
this
component replace it with this other one
which works fine but sometimes this is
not what you want. Sometimes what you
want is to say
uh take this recipe that is super long
like for example the Linux kernel and
just add this configure argument here
but the rest leave it the same. And you
also want that when upstream upgrades it
just upgrades and you continue adding
the configure um argument. Uh at the
moment what you have to do is actually
like create a patch on the repo and
build does some magic. We're trying to
integrate it into like still having some
YAML files simply saying that that you
want to add this uh argument and it's
going to be awesome.
And yeah, we're putting also a lot of
effort into improving how the testing
works to make sure that uh while the CI
is the one suffering and not our users,
which is uh kind of cool, right?
So my next steps in this regard is to
get Kinux adopted. That's one of my top
priorities.
Um second would be to get the K Linux
work and uh orgate to share the
components. I think that there's that's
something that will also be interesting
for for flatp pack as well. We do have a
a problem with cute web engine for those
of you who've been on on the channel and
that would already solve it because for
Kitty Linux we also need uh cute web
engine.
Um,
something I also have been like dreading
I don't really want to have to do or or
at least we would like to do the least
possible is having to maintain the KD
components. That's why we have the
mammoth KD builder um component as I was
saying earlier. Uh I have been doing
some
um magic thing that will try to do the
the right thing using um cake logs. I
don't know if you've been looking at the
CIS admin channel but I was talking
about that some weeks back and I had
some progress if you want uh we can talk
about it later this week
and yeah something that also we are
looking not only me but some other
people in the my team in coding is to
make uh flat pack applications a good
idea to be uh built using billstream.
are some interesting opportunities. Uh
we can discuss that over the week if
anyone has any interest and trying to
wrap this up a little bit. I think that
it's a very interesting project uh
problem to own. Uh it's daunting. We
it's going to be a lot of work, but I
think that our it's in our best users
best interest to to do so. Um, I did put
uh Bob session on Tuesday at 5:00 p.m.
right after the K Linux one. So, if you
want to join, I will be happy to talk to
you about it. We can talk about um
well all of the features. We can also
talk about uh I I'm we can talk about
the KD Linux work or the flatp pack work
or any combination of that. And if there
is still some time, we can take some
questions. That's Nicole's decision.
Yeah. Thank you.
>> Okay, we got
>> They're all there.
>> Okay,
>> you have to run.
>> Yeah,
>> run. You have to walk. Okay, run.
Um,
okay.
Uh thank you for the talk. So I have not
yet used Buildstream. I think it looks
really good. Um I have used YTOR a lot
at work and they do sound extremely
similar, right? Like YAML recipes, build
graph resolve, layered composition,
overrides, reports, like every single
point almost. Do you have a take on the
pros and cons of the two?
So
I only used YTO in a project you're very
familiar with and but only on one
project. I I'm not as much an expert in
that as some other people are. I know
that many of the buildream developers
are like very strong um haters of
Buildstream um or opinionated in any
case. Um
it's definitely two tools that
strives to address a fairly similar
problem. I think that one of the
interesting aspect of this one is that
it was created by a community much
closer to ours than how YTO has been
developed and as such well a lot of the
social aspect is more or less resolved.
Not only like the fact that good thing
is around but like we've been using it
in flatp pack we've a lot of nom nomos
for example is already being using it
that's a big difference another
difference I actually like by using it
maybe it's just my experience is that
buildstream is quite faster but um yeah
>> it sounds like it might be nicer for the
desktop developers workflow in terms of
like tooling and
possibly but then like you could
probably port Kin to Yog and you can
probably port your project to build
stream right and it's all possible and
doable.
Uh you mentioned the goal of generating
all the KDE software in KDE Linux using
BuildStream. Uh which makes sense to use
one tool for everything, but if we do
that, we're somewhat getting away from
the goal of having KDE Linux compile KDE
software in the same way that developers
do on their workstations. Have you given
any thought to the idea of also using
BuildStream to to be the new blessed
method of compiling all KDU software on
people's desktops? Well, that's kind of
what I was hinting at like when I was
talking about pipeware earlier. If we
have um recipes for Kio, then you can
say BST workspace open Kio and BST build
Kio. And actually it would end up being
the same, right? Uh actually you would
have the advantages of not needing to
have everything in USR. For example, one
of the things we have in Kinux right now
is that you need to have all of the SDK
in your users systems. you wouldn't need
that because it would come from
buildtream. What as haggled is thinking
here is like oh but then when you start
developing you have to download a bunch
of things which is true because um
but I I think that the end goal would be
that uh buildstream becomes part of the
the workflow when when you're developing
at least in the context of KT Linux and
and and flatpack if we're thinking of
other things obviously like for Windows
or something like that that would be
different but for example We don't even
use KD builder for that. We use craft
which is already a different tool. But
yeah, I think that it should be part of
the thing. And actually maybe that's
kind of what we can talk about in the
buff, right? Like is that good enough?
If it's not good enough, can we fix it?
I can probably fix some of these things
at work. If it's not good enough, uh I
mean we can throw it away and that's
fine.
>> Cool. So this one's from the chat.
How easy is it to use build stream to
build systemd sister X? Thinking about
this as a way to deploy non-core apps to
KD Linux where of course we don't have a
package manager.
So I am also not the most experienced
with system
and dx
but my understanding is that what you
end up doing is saying this directory is
a prefix and you're going to overlay it
into this other directory which would be
usr.
Now uh a tool I didn't show there was
one called BSD artifact
uh checkout and bas basically that means
so when you build something in in
buildstream it doesn't end up in like
somewhere
that you can see in your build system
it's part of the infrastructure so to
speak and you can say all right now
let's let's uh BST artifact is the tool
that you're going to use for all of the
things you've built and you can operate
with it. You can do things like list
contents and it's going to list all of
the files that are part of that
artifact. You can do pull to get the
artifact from the caches so on and so
forth. One of the things you can do is
check out and check out is going to put
all all of this file which is like
depending on on on
the prefix and you say you put it in
this directory and what you would end up
doing is say and this directory is a cx
now and you you you mount it into / usr
and Bob's your uncle. Now I say it like
that because um yeah
some nomos developers have already been
looking into this problem and they even
have some kind of graphical tool that
they put together for that. I don't
really know. I haven't tried it but it
shouldn't be too hard anyway.
>> Okay, time's up and I hope you're going
to have a pleasant journey to your
hotels.