<div dir="auto">Hello,<div dir="auto">Thanks alot for helping me.<br><div dir="auto">I have basically understand what you have provided me, what next step shall I do to start in this project?</div><div dir="auto">Thanks in advance.</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, 9 Nov 2020, 3:40 pm Aleix Pol, <<a href="mailto:aleixpol@kde.org">aleixpol@kde.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Fri, Nov 6, 2020 at 7:37 PM Mariam Fahmy <<a href="mailto:mariamfahmy66@gmail.com" target="_blank" rel="noreferrer">mariamfahmy66@gmail.com</a>> wrote:<br>
><br>
> Hello,<br>
> Thanks alot for your advice.<br>
> I have installed the project locally and I start discovering how backends work with codebase.<br>
> I have understood but I am missing things.<br>
> After doing some research and gathering information, here's what I can't clearly understand: (Sorry if questions are little bit silly)<br>
<br>
Hi Mariam,<br>
No need to worry, feel free to ask away.<br>
<br>
> 1- what does it mean by resource?<br>
> When I searched about it, I found that resources may be data required by user or requests from clients, is it right ?<br>
<br>
You can see here the class that defines a resource, should help you<br>
see what it represents:<br>
<a href="https://invent.kde.org/plasma/discover/-/blob/master/libdiscover/resources/AbstractResource.h" rel="noreferrer noreferrer" target="_blank">https://invent.kde.org/plasma/discover/-/blob/master/libdiscover/resources/AbstractResource.h</a><br>
<br>
In general, it's an asset: be it an application, a wallpaper or<br>
anything that can be listed and installed.<br>
<br>
> 2- to create a new resources backend we need to implement two classes,<br>
> The first class is the basic class which saves all created resources and install & remove application or cancel transactions.<br>
> The second class, I didn't understand it's functionality, I found that it is related to plugins but didn't understand it.<br>
<br>
The second important one is the resource I just mentioned above.<br>
Please explain a bit more what you don't understand.<br>
<br>
> 3-Filters in the base class: its target to filter the new requested resources?<br>
<br>
filters we just use when searching, to see what's being searched.<br>
In the case of this project it shouldn't be very important, since we<br>
will just be listing a system image.<br>
<br>
> 4- for each new resource backend, it should include all the methods of base class, right?<br>
> As these methods acts as properties for each new resource.<br>
<br>
You need to implement all the abstract (i.e. virtual = 0) methods. The<br>
rest of virtuals you can override if you want to give it a different<br>
functionality.<br>
<br>
> 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?<br>
> 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?<br>
<br>
It's just a way to build the applications so the whole project doesn't<br>
depend on a specific technology. You can see the ones we implement<br>
right now here:<br>
<a href="https://invent.kde.org/plasma/discover/-/tree/master/libdiscover/backends" rel="noreferrer noreferrer" target="_blank">https://invent.kde.org/plasma/discover/-/tree/master/libdiscover/backends</a><br>
<br>
This project should be adding a new OSTreeRPMBackend folder in here<br>
that will only take care of this one implementation.<br>
<br>
I hope this helps,<br>
Aleix<br>
</blockquote></div>