 Okay, we've now got Aleph Poulton-Zalis talking about an academic cross-platform. Alright, so yeah, it's like the third time I talk about cross-plus for me stuff. At Academy you're probably already tired of this, but I think it's something very important, so I don't have a problem with being very, very stubborn. I'm stubborn on other aspects of my life. So, with those kinds of academies it's also good. First of all, for my, I'm Aleph, like I said, and what I want to emphasize here is that I've been working for the most of my KD time-on applications. What does that mean? Well, you've all heard, KD is not a desktop anymore, and it's all about all kinds of different projects. Even if when I joined KD it was a desktop, I was already working on applications. My first application I worked on in KD was KAlgebra, and shortly followed by KDevelop, which, well, arguably have maybe nothing that much to do with Plasma. But then, one of the biggest reasons why I hacked on KD was probably because I was already using Qt at that time, and one of the reasons I used Qt was the documentation. The second one, though, was that I was not tying myself into a platform. I remember, actually, when I was a teenager reading documentation, back then I actually used Windows, and I had this feeling every time I read one of those books that learning that would make me be only there, right? And what I wanted to do is to create stuff that, more or less, everyone can use. So, why do I keep talking about cross-platform and about being able to be on other places? And for me, the reason is that I don't want all of our projects to be focusing on niche or focusing just a subset of society. When I create free software, I create it with a bigger mindset, and actually, I don't want that the technology we're using or the platform we're using is the limiting factor on who's going to be able to enjoy it. And I completely will agree that free software platforms will be better for everyone, and we should tell everyone to use them, but then I still want to improve society without waving a flag, right? So, anyway, I think that the first and most important point is to reach the large use-base, to reach society. Nowadays, I don't think we would consider that the people who use computers or this kind of technology, as in IT, are a subset of society. Nowadays, I would consider that everyone is using them, and we need to go to them and say, well, we are some nice people who make free software, and we make it for you, and we're here to help you. One very important reason is that we want to make software that is part of our life altogether, that is not only part of what we're doing when we're in front of a computer. Other women's servers already showed that we're working at Blue Systems on this device that we will be able to carry around, but then, first of all, currently, when you get a device, it's much easier that it's not using KDE than it is, right? And reducing all the use cases to whatever plasmaphone is would be reducing our scope and our mindset a lot, and in a very not needed way. But on the other hand, here we're talking about creating technology, we're talking about creating software that can have an impact on many aspects of our lives, and most of you over here will have an Android phone, will have an iOS phone, you will have a BlackBerry phone. So I think it's a very legitimate use case still for a free software community like we are. So what do I mean when I talk cross-platform? There's probably many different definitions, and maybe I'm not using the correct semantics even, but what do I mean? Well, there's two very important axes in the concept. As I see it, there's on one hand the form factor, you can be talking about TV, and you can be talking about phone or a desktop, and the other axis would be clearly the platform, the operating system, the technology. And actually, most of the technologies of the operating systems will have different form factors and vice versa, and actually in KDE even we are covering already a lot of them. And even if when we talk about making software that is targeting the many form factors that Plasma supports, even if we can do it, we still have the problem that we need to adapt to each one of them, right? So in the end we have a huge problem with a ton of variables which ranges from white compilers to use, while look and feel rules to adapt to, or even the form factor, right? So since I am now no guru, I will talk about my experience a little bit, and I will start talking about Kealder because everyone knows that I love the project. And yeah, it's my guinea pig project to move anything which is KDE related into a platform because basically it doesn't rely on too many operating system dependent features and it still has a library and an application, so you get to play around as if it's a standard KDE project. So I think that the most important part when we talk about nowadays operating systems, especially mobile, but nowadays not even really, is to get our platform or software on wherever the users are going to reach out to the software. In the 90s or even in the 2000s the way to install stuff, especially on Windows, which is what people used back then, was to download the installer kind of thing and from whoever it was with all of the viruses and everything and get it in your computer. On Linux on the other hand we were probably a bit smarter, we probably could leverage on some assumptions, but on the other hand we had the distributions that already allowed us to have a library and to do those stuff, and actually it's what we've been doing so far. On Linux we have never really distributed any binaries, what we've been doing is just relying on the distributions and it has worked, we know how it has worked, it has worked reasonably well, but it could be better. In any case, on Linux platforms we've been where the users reach out to on the rest of the platform that we haven't. And more and more the devices are starting to be more narrow. For example, if you go to many of the operating systems, the modern operating systems and you try to download something from the interwebs, that thing that you're downloading won't be able to be installed on the computer, right? Or it will warn saying this is coming from virus land. So we need to be there, we need to be where people are expecting us to go and another thing that we start to think about them is well, I have this application that is working on Linux generally because it's what we're using, I need to put it to this platform. And then you start realizing that some issues, some differences will arise, some of them will be technical, exclusively like where do I look for the main.qml file, where do I look for my images. Kip abstracts some of these issues, doesn't abstract others, and there's many hacks that we can use to solve them. What my suggestion here is to always try to have one code base because it's what I feel that will have the most maintainability in the long run. And actually not be too strict there, I haven't managed actually to do that even on Android at the moment and in Play Algebra, which should be trivial, it is not. I have some if-desks for Android and I'd say it's fine. And actually I think that it's very interesting at this point that we start to think about how should have it been so that I didn't have had this problem, so we can start moving this and trying to solve these issues upstream, whether it's in CMake or in Qt, because most of these issues will happen on other projects. And this is especially interesting because this way we don't become that project that could get to Android, but we are creating the KD that will go to Android or that will go to Ubuntu phone, right? And then there's the UI. The UI is something that one would assume that it should be maybe probably the same on every platform. The truth is that at the moment it's quite impossible to get that. Qt tried to come up with QtB controls that integrated on the look and feel of the different platforms. And actually it kind of works nowadays. Even on Android they have a huge hack that makes applications look native. And since it's a huge hack, they are also moving away from it, which it's kind of understandable. But then in any case, you also need to cater to different form factors, and it's not something that you can generalize. So in the end you need to create specific UIs, or that's what I've done at least for the different platforms, and then it's actually quite recommended or I would recommend to have different ones for the different form factors because otherwise things that would look good on a smart screen look like humongous on the bigger one. Then another example I would like to talk about is KD Connect. I started working on it mostly this year because I think it's a really cool project and I wanted to experiment a little bit. And of course the set of problems I found were actually quite different. First of all, KD Connect is nowadays only working on two platforms. It's working on Android and it's working on, let's call it KDE. And on Android it's using the Android SDK, so it's a Java application, and it's actually something quite novelty for KDE. It's the only application that has decided to go into another platform and say, well I'm going to use whatever it's offering in order to integrate with KDE and in order to make a common platform, but it's still actually leveraging the other platform rather than our technologies. And of course it has its own set of problems. For example, each person who wants to implement a feature, let's say an example was the remote keyboard or touchpad. It had to be implemented on KDE first and then Android or Python first. It had to land on both sides at the same time so that it could be used otherwise it was useless. And this is a problem. If you only have one codebase, you have only one set of bugs, etc. The other problem that KDE Connect has as well is that the boss is cross-platform niche. So one thing we could say is, well let's use the same codebase, for example, or maybe big chunk of what KDE Connect is on Android and then add an Android SDK kind of UI on top. This could be perfectly feasible, but then we need to start removing these kind of technologies that we're using and we cannot use them or I'm actually not really sure if it's going to work here that maybe, I'm not sure, but in any case there's these things. For example, KDE Connect has to be ported to other different desktops as well at some point, right? And when we considered back OS on Windows, we thought the boss is probably acceptable. Also, nobody really knows and there's nobody really pushing for those platforms. So it's kind of hard to tell. And actually it's the point, right? If you have few people, especially on the non-linear KDE platforms, especially on those cases, you want to have people that are on top. On Android we could because Albert, who is the maintainer, did the Android SDK implementation and so on. But then on the other platforms we want to have even less of a divergence than on Linux. Actually we had just last year for iOS and it was kind of ready. It was doing the things it should have done. And the reason it wasn't uploaded to the Apple Store so people could use it was that the guy was not that very responsive and we didn't feel that comfortable with maintaining the codebase he came up with because none of us have iOS devices, none of us have the experience. Therefore it was a bit of a suicide maybe. So in that case also if we had used the same codebase we were used to and we only had to worry about the UI, maybe it would have made sense. So we're still talking about what I was saying for by pushing the dependencies up and down what I mean is let's try to leave some kind of safe space whenever possible that you can say this is going to work on any platform or this is going to work on the set of platforms that we want to support. So whenever the guy who is very interested in Yola phones for example we can tell him you can try this codebase and you are not going to die in the attempt because otherwise they already feel quite unsecure about developing especially on those platforms nobody really knows how they work and the people who approach you they probably usually just want the application more or less working and what we did there was to allow the possibility to for example strip Kayo dependencies and case service which pulled a lot of stuff because it's already in a lot of work to ask them to compile it and to package it for the platform if you have to ask them to package all of the KD frameworks to get onto that platform. How we did that actually was that at the moment we can have use Kayo network configuration or use the Qt version so if you don't want the Kayo dependency for example you can just use Qt and then it will only work for file and HTTP and a couple of stuff and if you use the Kayo one it will use all of the protocols which is kind of cool. Then when we talk about this what you're talking about is something I call to myself the control and integration compromise which is whenever you want to control more how something works like let's say integrate better with how the kernel works integrate better with what the application looks like you're losing integration automatically because the platform might do the same that you're doing or it might do something very different for example you might decide that in pdevelop you want the menus on the bottom and you want the toolbars on the left and your application will look weird on every platform because no other platform is doing that and it's actually the kind of things you probably want to decide at some point and then also I wanted to add a couple of slides with my experience with platform which is admittedly not that big but in general the thing to take into account there is that mostly things just work over there because it's actually the same operating system we were already using it's or at least the same stack except for Wayland so if things don't work it's mostly marching grasses error and when it works it stands to you because you did such an amazing job but in any case what usually happens is that you have an application that's maybe a desktop application that's called one it was looking properly on a desktop you put it over there it looks like Frankenstein kind of thing and well then you have to work on doing the specific UI for the phone which actually in this case it can be either moving making the small components adaptable into the form factor or it could be doing the whole UI all together which is what the whole UI all together is what we're doing or I was doing on key algebra or move on what I'm doing nowadays and it could change because it's not final yet but what I'm doing nowadays is making the components to understand that it's on a small screen so it needs to position a bit differently but only on a per component basis so as conclusions I want to remind a little bit that what we want is to make when we design an application we can design it into moving on other platforms at some point in life it's not a new field it's software engineering has been about that since long time it's completely fine and I think it's very rewarding to see your software working on very different use cases or at least very different devices for me actually it was quite interesting to see a console or keep right working on the phone it was something like is this really supposed to be working correctly I think it's really cool but then as I was saying trying to improve the foundations like improving queues, improving frameworks this goes a long way because you're not improving just your use case you're improving probably any other use case and it will make that the suffering I was going through when I started with key algebra well I don't have to go through it when I'm porting other applications so you don't, so you're welcome and yes, downsizing what I meant with this is the Kaio compromise having Kaio everywhere it's really cool and actually for example on the phone we just put it there and it works and it's amazing and we have little parties about Kaio but then on Android it's maybe not needed and we have mechanisms to cut it down which could be interesting for some projects and actually I don't think that we have to be very scared of saying this cannot be done on Android because if you want to use a proper platform you would use the plasma phone of course and then the Lugan field which is actually something I don't have a solution for I would love to tell you what you should do things keep changing we keep, Qt has a post a lot in the last three or four years it started with QML, Qt Quick, Qt With 2, Qt With Controls and now Qt With Controls 2 which is something completely different and so it's still a bit of a moving target but this also means that it's an interesting subject and I would suggest that to take a look on it and follow it and this has been the controversial part it's a hard problem and actually we are doing something very different actually Qt used to be about code ones run anywhere and the corollary would be and it would look integrated with the platform and actually with the last developments in QML and actually even since the start of QML things haven't been integrating all that properly so the thought I want to put in people's minds and actually I want to talk with the VDG about is to consider whether we really want to look integrated with the platform right away as a main goal for example if you think about what other people are doing or Krita I was talking with Lanier last week he was telling me that when they were porting to Windows at some point they realized that the style that was running over there wasn't that good and they ended up using the plastic Q-style which actually means not really integrating with the look and feel of the platform and I understand it's quite fine with people I don't really think somebody would say I'm not going to use Krita because the buttons are not ugly another example is Google are using the material design a bit of a brand nowadays and I was looking at an iPhone from a friend some days ago and if you look at it the applications on iOS from Google are also replicating the design decisions that they took on Android so that means that integration is good I'm not really going to challenge that but there's probably other ways to look at it and actually this would make our work probably much simpler in some areas and it would open maybe some new opportunities so I would like to hear your thoughts at some point and maybe now in the questions or during the week which I'm going to be here all use a hard-core Q-style some of them extremely early but they use the same style of OS X Windows and Dennis managing the platform layer giving applications the freedom to express their brand and how do you think that if you were or you know how to apply to it what do you thoughts on? I might have an opinion but it's not really that worth it probably I mean from a very developer point of view I would say that what I want is not to have to think about these kind of problems at all but then it's probably just me being lazy in my ideal world I have a toolbar, a menu bar and it gets whatever it has to go which is how we used to work on Qt Widgets it's probably a very good idea to let applications look whatever they need to look like but I prefer your feet like they are done whatever I can say Yeah in this regard I think that I am fine with that problem because it's mostly a programmer problem I mean it's something I can't solve because I know how to add and move a button as long as I know what's the alternative I have if I'm in that platform or another I'm more worried on I prefer not to decide what things look like I don't know Your question is a change in the world or from the early moment and it used to be that people had took this freedom to make their applications look like and then you've got ties of power who actually existed and you've never seen that one that was quite a special and it was not like anything like that as well and these days even though everybody has all that power it exceeds the number of people that are sort of being a bit more sensible about what they used that power for In the web world everything looks different Okay I think that's all the questions we have time for so thank you very much