Tuesday, April 23, 2019

Bundle Up, It's Time To Discover Some Apps

The Short Of The Long

(or tl;dr)

Would you like to try out Discover's AppImageHub integration? Sure you do! You'll need Discover from git master, and you'll want to install the storekdeapps.knsrc file (which you for now can get by installing the bits found in this scratch repository). Then all you need to do is start up your shiny, new Discover and navigate through Applications to the KDE Store Apps category. Early days, but there you go!

The Long of the Short

(or gimme all that juicy stuff)

And now the long version with me writing about history and stuff, accompanied by a bunch of screenshots and old videos and doodads and whatnot!

2009: The Gluon Years

Once, in the long ago times, before i had finished attending university, i and a few others got together to describe what we then called Gaming Freedom (thanks archive.org for providing us with a functioning link, there, as we've shut down the original site). Some of you reading this will remember a project called Gluon, which was designed as a (primarily) 2D game engine, which would use QML as both the UI language and the internal scripting system, and envisioned as a way to easily create, distribute, play and interact with games, as both creators and players of games. Have a video of me talking about this idea for a while:


2010: The Age of Bretzn

Later on, straight out of university, i was hired by then opendesktop.org front person Frank Karlitschek to work with him and a few others on Project Bretzn, which was envisioned as being a way to close the loop and provide a fix for the questionmark on the number two step in the following three-step process:
  1. Build app using some IDE
  2. ?
  3. have users download app from e.g. opendesktop.org's software categories
You might notice a similarity between this and the concepts we described in Gluon's vision. In this project, however, we did indeed achieve the goal, at least for some Linux distributions, by using the then newly renamed Open Build Service to do the heavy lifting of actually building packages. We did this through creating a plugin for Qt Creator which created a set of basic OBS instructions, upload sources, and then once OBS had created packages, distribute those automatically using the Open Collaboration Services API, for which we created an extension supposed to interact with OBS directly. You might be forgiven for not having heard too much about this effort; while it did in fact work, it was perhaps a little more like a proof of concept than an actual, finished product, and after six months of work, we ran out of funds and i had to find somewhere else to pay my rent.


2016: Splitting Frameworks

Since then, i have been working on Open Collaboration Services and KNewStuff on and off, and in the autumn of 2016 i fronted a project to split KNewStuff's UI logic from the logic of its core. Initially this was aimed at allowing the use of KNewStuff entirely without having to link to QWidgets and the like, but it also resulted in a much more sleek engine, which reduced the requirements of the KNewStuffCore to a strict minimum (that is to say, while the KNewStuff Framework is Tier 3, if you only require KNewStuffCore, you can consider it effectively a Tier 2 Framework).

As a result of this work, in addition to being able to build store support into the Peruse comic book reader, it meant that the shiny new software manager Discover was able to finally start allowing users a central location to manage the Plasma extensions and addons which were previously managed in all sorts of varied locations throughout the Plasma Desktop UI. It further, and very rapidly, ended up also showing literally all Application extensions provided by any KNewStuff configuration file found on the system, again in one central location.

2017-2018: Folksonomic Adaptations

One thing which has, arguably, been missing from the Open Collaboration Services API is the ability to filter on types of information which are highly tied to the specific type of content found in some category. The reason this feature has been missing is that OCS itself is designed very explicitly to be content type agnostic. What that means is that if some piece of information is not generally applicable to the vast majority of content, then it isn't exposed through the API.

A couple of examples describe fairly simply how this might be less than great: Say you have a category which is supposed to contain electronic books. This might cause problems for clients consuming this content, as while that might be interpreted to mean anything like epub, mobi, cbz, cbr, dejavue, pdf or indeed any other number of assorted formats used to distribute electronic book content, not all clients are going to be able to actually consume that content. So, being able to filter out bits that you don't support would be very handy.

Since the end of 2018, both the KDE Store, and the Attica and KNewStuffCore frameworks support filtering by a variety of bits of information which are defined per category, rather than directly in the API. See also this maniphest task for the proposed OCS extension (and if anybody reading can help me get my fdo account credentials back so we can get it ratified, do get in touch ;) ).

2019: Bundles of Discoveries

With the ability to filter things based on any arbitrary number of things, it was finally time to get all of this tied together and put a nice bow on top. We had always had the ability to show the applications in Discover, ever since the KNewStuffCore split, but they would invariably show up in a huge bunch listed simply under the name of the configuration file representing them, and underneath the Application Addons category rather than Applications, and you would also get shown literally everything in the categories as well, rather than only the applications you'd be able to actually download and run on your particular device, as well as a few other little annoyances (like the Launch button saying Use instead).

As of now, while things are not rosy and there is certainly more work to be done, we are a very great deal of the way there, and i think it's time i did that thing where i ask people to try it out and tell me which bits are absolutely totally wrong and where i can then see who is wrong (likely me) and how to fix it (hopefully easily).

Thank you to the one or two people who've read until now, and i hope you've enjoyed reading about my personal journey through software distribution :D

You promised me screenshots!

I absolutely did, and here you go! The culmination of ten years of scheming and plotting has come to fruition, and we finally have a way to deliver software in a more social fashion. Now, I realise you are going to scream at us all and say distributions are great at this. They totally are, and that's not the point here, and i would like if we could aim that discussion elsewhere (you will notice how Discover still very much has all the distribution packages up front and centre, particularly in the last screenshot).

That's a whole lot of applications there, in a whole lot of nicely nested categories, you might say, and you'd be right, thank you so much for noticing that!
Oh look, SuperTux, i know that game! Nice screenshots there, think I might just click install on that one.

Oh hey, now that it's installed, guess I'll just click launch...


Nice, let's do this thing, time to do a bit of running and jumping with our favourite, lovable chubby penguin mascot!

Hey, look, it's right there alongside all the other bits of software I've installed, how handy!




The word of the day is: Sunshine. Because we seem to have it now, yay! :)


Labels: ,

0 Comments:

Post a comment

<< Home