5
The first 1,000 people to use this link will get a 1 month free trial of Skillshare: https://skl.sh/thelinuxexperiment11211
Get your Linux desktop or laptop here: https://slimbook.es/en/
👏 SUPPORT THE CHANNEL:
Get access to an exclusive weekly podcast, vote on the next topics I cover, and get your name in the credits:
YOUTUBE: https://www.youtube.com/channel/UC5UAwBUum7CPN5buc-_N1Fw/join
Patreon: https://www.patreon.com/thelinuxexperiment
Or, you can donate whatever you want: https://paypal.me/thelinuxexp?locale.x=fr_FR
🏆 FOLLOW ME ELSEWHERE:
I also do a Gaming Podcast: https://www.youtube.com/channel/UCbRPZ11S1quJ4ESoj42A3ug
Join us on our new Discord server: https://discord.gg/xK7ukavWmQ
Twitter : http://twitter.com/thelinuxEXP
My Gaming on Linux Channel: https://www.youtube.com/channel/UCaw_Lz7oifDb-PZCAcZ07kw
Follow me on ODYSEE: https://odysee.com/@TheLinuxExperiment:e
Or join ODYSEE: https://odysee.com/$/invite/@TheLinuxExperiment:e
📷 GEAR I USE:
Sony Alpha A6600 Mirrorless Camera: https://amzn.to/30zKyn7
Sigma 56mm Fixed Prime Lens: https://amzn.to/3aRvK5l
Logitech MX Master 3 Mouse: https://amzn.to/3BVI0Od
Bluetooth Space Grey Mac Keyboard: https://amzn.to/3jcJETZ
Logitech Brio 4K Webcam: https://amzn.to/3jgeTh9
LG Curved Ultrawide Monitor: https://amzn.to/3pcTVDH
Logitech White Speakers: https://amzn.to/3n6wSb0
Xbox Controller: https://amzn.to/3BWmIA3
*Amazon Links are affiliate codes and generate small commissions to support the channel*
00:00 Intro
00:42 Sponsor: Skillshare
01:47 What is a platform?
02:57 Linux isn't a platform
05:45 Linux has multiple platforms
07:47 Why do we need app platforms?
11:13 Parting Thoughts
But what's a platform, exactly? Basically, I'm talking about an application platform.
The best example that most people will be familiar with, will be in the smartphone world, with the iOS platform and the Android platform.
Problem is, there is NO Linux platform, and there has never been one.
That's simply because there is no "one Linux operating system". You have what we call Linux distributions, which can be very different from each other, not including the same systems, desktop environments, packages or libraries.
So application developers can't really develop an app for the Linux platform. They can develop an application that runs on Linux based operating systems, and makes use of some Linux features and libraries, but they have to make A LOT OF choices along the way.
Do they want to have a dependency on systemD, do they want to use GTK or Qt, or something else as the toolkit? Do they want to follow human interface guidelines for a desktop that uses this library?
And once the app is done, they have to decide on the packaging format: do they want to try and get included in Debian's repos? In Fedora's? In Ubuntu's? Do you want to use AppImage packaging to ensure anyone can run your app? Do you want to have a flatpak version, or a snap one?
Linux, instead, doesn't have a single, unified platform. It has multiple ones.
What we have on Linux, is parts of platforms that developers can choose. And they already do so.
The best example, which I've already talked about, is elementary OS.
These guys have the operating system, the development tools, with a specific language, Vala, a graphical library, GTK, their own HIG and Granite, its associated library, one packaging format, Flatpak, and a way to distribute your app, the AppCenter.
But we also have other platforms in the making, and the main one is GNOME. And this is also why there is a lot of discussion currently about GNOME, theming, libadwaita, and all of that other stuff: because these are decisions and developments made to create a GNOME platform.
GNOME doesn't want to be a simple desktop environment, that distributions can pick, tweak, arrange as they like, and ship to users. They want to be a platform that developers can target, and to ensure that GNOME can be a platform, they NEED to lock a few things down.
But why do we need platforms?
Well, think about most people's complaints about using Linux: it's too fragmented, there are no third party applications, no one develops for linux, it's unstable, all that stuff.
These complaints are what platforms are trying to address.
With well defined platforms, developers can create apps that work well and look and feel the same in the hands of users. They can ensure they're stable. They have an enticing system and an easier, pre-defined path to start developing their application, and so, they are more likely to develop an application, period.
In the end, we can't really have it both ways: either we want to attract developers and for that, we need to offer compelling and stable development platforms, and that means limiting some choices, or we prefer to keep our existing model and all the user choice it allows, and that means that developers will still have a hard time developing for "Linux" as a whole, because there is no clear path to do so.
And that’s why people end up using Electron so much nowadays. :)
It’s a shame because Qt and GTK are surprisingly easy if you know C++ and C, respectively. There are also excellent bindings for other languages. IMO, they’re easier than JavaScript which I have grown a deep hatred to from mostly doing web development.
To be honest, for all its faults, I still find that the web stack is incredibly productive compared to alternatives. I wouldn’t touch Js with a ten foot pole, but with ClojureScript UI development is pure joy. Interactive style development is especially huge for this I find since you often want to build up some state and then play with the presentation. Having to restart the app, and navigate to a particular state to see the change gets tedious really fast. I’d love to see something comparable with native stacks.
I need to learn Clojure sometime.
I really can’t recommend it enough, it’s really one of the most enjoyable languages I’ve used. Here are some starting materials that could come in handy if you do get around to it, I put it together from stuff we use for onboarding for my team https://gist.github.com/yogthos/be323be0361c589570a6da4ccc85f58f
Do you know a good QT tutorial? Or even better, a KDE tutorial? Because I don’t know one and would like to play with writing a QT app for my KDE desktop… C++ is not the issue (although I’m not a Cpp programmer), but finding tutorials for Qt and KDE frameworks is …