Getting involved in SoK

Aleix Pol aleixpol at kde.org
Mon Nov 9 13:40:40 GMT 2020


On Fri, Nov 6, 2020 at 7:37 PM Mariam Fahmy <mariamfahmy66 at gmail.com> wrote:
>
> Hello,
> Thanks alot for your advice.
> I have installed the project locally and I start discovering how backends work with codebase.
> I have understood but I am missing things.
> After doing some research and gathering information, here's what I can't clearly understand: (Sorry if questions are little bit silly)

Hi Mariam,
No need to worry, feel free to ask away.

> 1- what does it mean by resource?
> When I searched about it, I found that resources may be data required by user or requests from clients, is it right ?

You can see here the class that defines a resource, should help you
see what it represents:
https://invent.kde.org/plasma/discover/-/blob/master/libdiscover/resources/AbstractResource.h

In general, it's an asset: be it an application, a wallpaper or
anything that can be listed and installed.

> 2- to create a new resources backend we need to implement two classes,
> The first class is the basic class which saves all created resources and install & remove application or cancel transactions.
> The second class, I didn't understand it's functionality, I found that it is related to plugins but didn't understand it.

The second important one is the resource I just mentioned above.
Please explain a bit more what you don't understand.

> 3-Filters in the base class: its target to filter the new requested resources?

filters we just use when searching, to see what's being searched.
In the case of this project it shouldn't be very important, since we
will just be listing a system image.

> 4- for each new resource backend, it should include all the methods of base class, right?
> As these methods acts as properties for each new resource.

You need to implement all the abstract (i.e. virtual = 0) methods. The
rest of virtuals you can override if you want to give it a different
functionality.

> 5- I have searched about plugins, but I didn't fully understand it,  plugins enable programmers to update host program while keeping the user within the program's environment, but I can't understand what is the role of plugins here if we receive new requests and make new resources?
> It is meant that while creating a new resource, we need plugin in order to keep the user with the program's environment without altering it or affecting it while creating new resources?

It's just a way to build the applications so the whole project doesn't
depend on a specific technology. You can see the ones we implement
right now here:
https://invent.kde.org/plasma/discover/-/tree/master/libdiscover/backends

This project should be adding a new OSTreeRPMBackend folder in here
that will only take care of this one implementation.

I hope this helps,
Aleix



More information about the kde-devel mailing list