 So, for those who don't know, haven't been following Fabricator well enough, there is currently a something in the region of 10,000 line patch up there that I would like all of you to review. Thank you. That's my presentation. I'll go now. No. So, what I've been doing is working on bringing K-Hut new stuff, kicking and streaming into the 2010s, finally, that we're leaving them. So, but yeah, first, a bit about me, I've been, yeah, my name is Dan Laney, I have been a member of KD since 2002, my first academy was in Glasgow where we got little cups, plastic cups which I'm sure everybody still has. Yeah, there you go. Oh yeah, sometimes I'm a bird. I am an employee of Blue Systems and it's under that guys that I've been working on this project. So, a little bit of history. We have a few frameworks as it exists. We have had Antica for quite a long time now. It's been called Antica since forever. I have still no idea why it's called that. If anyone knows, please find me later, it would be nice to know. I'm sure there's some kind of historical reference there somewhere. But yes, oh sorry, it's, Antica is a very straightforward wrapper around an XML-based content delivery system called the Open Collaboration Services. We then have KnewStuffCore which is the abstraction based around items of content which can use either Antica or a static XML system which means you don't have to have some magic server to operate with it, KDevelop uses it for templates for example. Then there is what is then called KnewStuff because it is, we had to keep binary compatibility. It really wants to be called something else. It's the QWidget-based UI on top of KnewStuffCore and then the very, the things that I did in end of 2017 called KnewStuffQuick which was just a list and an item which you could feed a KNSRC file which is the config files that define what you're looking for and it would just show that then in a list and you could interact with it that way through. It's really, really simple which of course wasn't quite enough. So for our server we have the store.kd.org which used to be built on top of what was called the HYBO1 framework. It was run by Frank Kalichek who was here yesterday. It was fairly recently taken over. The entirety of the KD store was acquired by Blue Systems but in cooperation with the EV board at the time and put into a separate legal entity which then takes care of all of the legalities around that which means that all of the content is now controlled by the EV but because of personal data protection legislation not owned by the EV. The old framework could not for various reasons be released into free software but the new version can and was it's hosted on KD.org fabricator even, sorry, oh yeah I'm jumping ahead of myself there. All of that means that we have all of the control we need to actually work on this stuff ourselves if we want to which on occasion becomes very important because of some, yeah there's a couple of details I'll show later on why that's important. So the new things that I've been working on since, it was low battery earlier but yeah obviously I didn't tell anyone because I'm a clever person, yeah all of this is now cute quick. You will already be aware of the download, the star buttons let's say download whatever in various things it's the current most used bit of Knewstuff so of course we need a cute quick version of that I know that Kyuva has created something which kind of wraps the widget and he was looking forward to being able to replace that because yeah there is a widget in Plasma which is a lovely cute quick based framework somewhere and with this we'd be able to replace that. That is what the new dialogue looks like, it's equivalent to what was the old download dialogue and widget and I'm going to tell you that you shouldn't use it. There is a bit of cleverness called a question asker and a question listener which forwards questions from the UI less core yeah and it allows you to just ask things and get answers in an asynchronous fashion or synchronous if you so desire. That is the existing list and items which have had a bit of work there wasn't the description weren't there the sort of the thumbnails are a little more nicely laid out and the categories and filtering options weren't there before either. The page is what you should be using. It's effectively the same thing that exists in the dialogue except it's you know much more how we build out these days you've got a page and you dig into them all of the new all of the new what are they called the new system settings pages all based around the similar concept that is actually a KCM grid view so it looks and feels very much like any other KCM so it integrates very nicely with that. If you then click on any of it that is what it will show you've got the details of any one entry shown in a in a much more pleasant fashion than what we had before because whereas before we used a very simple widget which was you know a relic of the early 2000s so layout is very cramped and it's yeah it looks old it could probably be fixed but yeah we were doing things with it anyway so ended up building something which is for people who use discover will seem familiar somehow a lot of this is intended to also get merged back into discover there's a couple of changes but otherwise it is effectively the discover components and then something completely new which I was surprised to discover K new stuff never understood the concept of comments it does now so of course we have comments and that's one of those things where having having it controlled by KD is very handy because it was not before possible to read those in a proper fashion and we can now and then yes there's the author component which is not what you see there it's what provides the information I will show you how that's useful slightly in a in a moment so to use a few of these components you've got the button which is supposed to be the simplest way of accessing any of this you just import K new stuff you instantiate a button and you tell it what the conflict file you'd like to see is you don't have to know the path you just give it the name of the configuration file which is exactly the same way that you would instantiate it as a widget just in Qt quick instead then there is the list which is a similar sort of thing it allows you to use something very simple if you only need the ability to just show a list of items you can use the list peruse uses it for example my comic would reader uses that instead of page because it's much too elaborate much too verbose for bracing the books in the store and it just gives you the ability to download things and then if you click on any of them it'll show you it'll give you a list of the install files from the thing that was clicked that is the page which is the one that you are also supposed to be using for integration instead of the button if instead of the dialogue if the button is not sufficient for your users it's intended to be about as simple to use as the as the button but of course because it is a page it is slightly more involved the button takes care of delaying the initialization of the new stuff engine which is a really heavy operation because it does serve talk with the server to fetch basic information about what you're what you like to look at which means that this looks a little bit involved but the idea is that you just instantiate a page and then you don't tell it what your configuration file is until you actually push that on to your page stack and then there is that author component I was talking about before the idea there is that I knew some of you will have noticed that in K about information there is for for people you can add an OCS username the idea is that you should be able to use this without really knowing anything other than that username we have the concept of a default engine of a default content provider which basically means that that bit there shouldn't be necessary it's also why that bit there also is not necessary unless you actually decide to point it at something other than the KD store the idea is that you can then you give it your you give it the username which you can get from K about data and then you will get an avatar you'll get the author's homepage name all of that sort of lovely information which we would all like to have in the about dialogues but which currently isn't possible because it involves pulling in quite a lot of stuff and yeah so a demo very quick just just to show you that it actually works so so lovely right and then you've got some comments and some reviews which then oh yes it also fetches that dynamically so if you don't have an internet connection it'll just so the username and the user sort of you know the the game break sort of user icon thing which it then also shows when you scroll through the list until it's loaded the information and yeah and of course because this is very visual information we've got a couple of new view modes as well so you've got something that looks a little nicer if you have really heavy visual content so in Andy Betts asked if we could have something which was better for wallpapers for example because those little icons are very very tiny so we came up with a layout that's more friendly for visually heavy content which then is this one and of course the really really small just an icon and and the name view mode oh yes and the button which just loads the dialogue initializes the engine and operates in the same way as what you just saw and there we are that was hot new stuff and it was real quick so we have plenty of time for questions and we'll start with Elio so question is why we have that space on the left why doesn't it need to have a single one line and taken out 30% of the screen and let me just pull that one up again it's a very wide page oh that bit there that bit that bit there that's a sidebar this is not what you will see in your application the bit that's page is the bit there that's a page so yeah you won't see that unless you decide to have a full width always on top side by in your Kirigami application that's just it's that's yeah that's not the Knewsoft dialogue I have named it badly it is a test tool is it possible to include the new comments or will it be possible to include new comments on the comment section right so currently no and the reason is spam we have in the OTS API and Knewsoft itself is able to allow you to make new comments the problem is that we have had that API enabled on the server and we have never had so much spam it is we never thought it would be a problem basically we thought we were too small as it turns out that isn't true so kind of a nice thing to know that we are sufficiently large provider of content on the internet that spammers want to target us but the problem is that we then can't allow people to do comments over the API as it exists right now it's also why some people had the need of doing uploads over the OCS API like create actual new content items it's the same issue and we had a couple of ways we've got a couple of ideas for how we might deal with this so like there is the idea of perhaps doing a network of trust where if you are vetted by a set of people as this is a person who is actually okay for providing content then you can be allowed to do so a smaller set of verifications step for comments perhaps because they are a slightly less crazy sort of thing to allow people to do because they don't provide potentially damaging content but yeah it's a problem the API can do it, it is effectively a social issue so yeah this is a really quick one since the content is now provided in a page I think that I love from a design point of view since now in the new pre-designed KCMs they actually do support multiple level of pages in them did you already look into or do you think it makes sense to actually have all the get-off-new-stuff content in KCMs actually been in a page in the same level as the main KCMs so like look and feel then you do get-off-new-stuff and you'll see an exactly same looking grid of things but that comes online instead of I haven't looked at actually integrating it into any KCMs but the reason for using the KCM grid view for this is precisely that that it is supposed to be yeah yeah having like actually doing a test to find out whether that works would be quite nice and yeah so two questions is there a possibility to tag things and a remark is that you give exact numbers while many app stores they give approximations to not make people addicted or feel that these numbers are meaningful have you thought about sort of blinding this a little say less than a thousand between one thousand and ten thousand or something to avoid this very concrete there's twelve downloads which is frankly I hadn't thought of it but yeah that's actually a good point that would be a nice thing to add on top what's the first one tagging so one of the large things that I did last year was specifically to add tagging so one of it has been in frameworks since someone asked recently 5.51 so the end of 2017 the effect is that some content is not shown that's the default state for Knewstaff since 5.51 is that certain content can be filtered out but it's also then allows us to do things like in Discover there is an experimental KNSRC file which shows app images which have been uploaded to the KD store which are then filtered by the file they're filtered by file type make sure there's only app images it's filtered by architecture and it's filtered by bit level and then to make sure that only app images which will actually run on your system get shown and the reason that sort of stuff is built as tags rather than information in the OCS API itself is that it is too specific to a particular type of content and OCS is supposed to be content type agnostic but it allows us a lot of wide ranging possibilities like that so in the case for example very like specific things like you have a series of comic books you might want to have those in order they are separate items on the store but you are then able to say okay that is the previous one and if you've got a diverging storyline you can have those two items are the next so there's a lot of options in that so in short yes there are tags one more question here yeah a problem that Falka mentioned during his talk on frameworks on Android but also something we occasionally run into in Plasma is that in past GD frameworks we suffer a lot from historical baggage there where the view itech that we were using at the time widgets is heavily intertwined with business logic in those frameworks things like a QWidget based KMessage popping up or things requiring QWidget pointers to pass in parent windows I'm curious as you sort of rewrote the UI layer for the get-out-you-stuff framework how does your approach now compare to that are you avoiding those mistakes or are we just swapping out widgets for quick there nope I am avoiding it entirely and it is actually something I would like more familiar with event loops than me to have a look at that's the question ask a listener thing that I was talking about earlier which is literally it is a complete conceptual thing so you instantiate a question and you give it a title and a text and you know the various sort of embellishments of what a question is the type of answer you would like from it and then you just tell that question to be asked it then tells any listener to ask the question in this case there is a widget listener and there is a quick listener and it will then show a visual version of that question in whatever form is needed for a particular visual type suspicion it might also be useful for things like screen readers and so on to be able to ask things or actually he is not in here Aditya I am thinking my crop could make use of that maybe but yeah it took a while to work out how to do that I had to abstract away from some bits of KIO because I couldn't depend on I couldn't depend on certain things that KIO depends on so yeah but similar sort of things really simple it's jobs as in K-core add-on jobs but which just do basic downloading there is no magic in the way that KIO does it so yeah there is a couple of steps to get through to make sure that there is no widget requirement at all for K-news.core which also is why it works for discover which has been using that for some time and discover could not require widgets at all because earlier versions of Plasma Mobile was unable to handle it something like that there was something that didn't work right and then we needed to be able to not have widgets no, it wasn't an ability it was a choice we didn't want widgets on the form that's the one totally technically technically possible but didn't want them so yeah yeah that was so in short, no widget requirements in K-news.core any other questions? otherwise there was a 10,000 line patch right? yes so that's only 200 lines per person here in the room that won't take long where is it? so take a good, careful look in a couple of minutes before the next speaker is up so which technology do you use? oh, Qt Quick so handcrafted yeah, I know it uses the QML presenter tool there we go that one I don't think we should do a live review here that's not going to be effective actually it's a little bit dark bit easier to read but in about 5 minutes actually, let's give you a hand first thank you