Consolidating the Linux Desktop App Story: An Idea
jonobacon.com
jonobacon.com
1: http://nullrefer.com/?www.jwz.org/doc/cadt.html
Edit: jwz doesn't like hacker news. removed referer.
http://nullrefer.com/?www.jwz.org/doc/cadt.html
and on archive.org:
http://web.archive.org/web/20170702194030/https://www.jwz.or...
Qml is an awful xml+javascript layer on top of qt that adds nothing but unnecessary complication to building UI's. Using Qt directly is much simpler.
> QtCreator is usable
Funny, last time I tried it was literally unusable. The new project dialog expanded beyond the height of the screen and all I could do was kill the process.
Most vendors of non-free software do support macOS (or viable alternatives are available). I strongly doubt many of them will even come to Linux. Because it requires more standard configurations. Apple had to make its main FS case insensitive before vendors like MS and Adobe were porting their software.
I like having my own choice in configuring my system. That amd freedom is why I use Linux desktop.
But yeah, the main justification for an open-source power-user desktop OS is a backup plan in case macOS dies, which isn't a very good business case.
This is a yuuuge generalization. There are many Linux folks who want a slick consumer experience and there are many that want ratpoison and vim. :-)
This idea doesn't take away from the requirements that people have for a non-consumer desktop.
> few Linux platforms (if any?) had taken a series whack at building a consumer grade app and developer experience. We tried, it was not successful, and instead of digging up the past I would rather ensure we can inform the future.
"What not to do, and how not to do it" are at least one valid take away from that whole era.
edit: for more info: This guy made a beautiful summary of the issues with the dev experience around Ubuntu (Touch): http://www.lieberbiber.de/2017/06/20/my-ubuntu-for-mobile-de... [starts from 6. "The life of an app developer was too hard."]
A few points of division are pulseaudio and wayland. Pretty much everybody now uses pulse and while most apps will work in wayland I don't know of any that require it yet.
And here is this guy wanting to build number 16. There is an xkcd on this. This train has left the station.
As long as your distro doesn't replace glibc for e.g. musl or bionic, and has all the usual GNU (and X11, and DBus if you need that) userland, i.e. no odd stuff - there is no much difference. Most of the time things just work. Normally, the only time you'll have to "write software for some specific distribution" is when the distribution is unusual in its ways, but you still want to target it.
That is, unless you need to target some specific library version that's higher or lower than the usually available, incompatible with the usual version, and you don't want to have a statically-linked release variant. E.g. something that would work only with Qt5.2 but not with Qt5.6. Don't see why not to just throw it all in a tarball and call it a release. Saw this done many times, I just unpacked it, ran it - and it worked.
And that is if that's you who package your software. Usually, some user just takes it further and becomes a maintainer (or a co-maintainer, or just a volunteer who submits patches).
In this hypothetical (I hope) example, you've just subjected your users to unpatched vulnerabilities like this one: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0190
You get the normal trade-offs for this approach -- large downloads, disk space, slow security updates, UI inconsistencies but XKCD 927 doesn't really apply.
The kind of software I write doesn't exist in a vacuum where all it needs is to run AMD64 code, Linux syscalls and a canvas to draw on. It needs to interact with the system, figure out what drives you have inserted, play nice with keychains and whatever..
You can't flatpak that.
Of course you could do this easily with electron apps. Too much bloat? Fine- go with a ReactNative/NativeScript approach with a JS VM controlling native UI. Hate JS? Fine- compile to it from your language of choice. Refuse to use a runtime? Fine- compile to webassembly. There is no excuse for not having compatibility with the open web.
As a developer, I have no interest in building for Linux- I need to go where the users are. But if I can develop a nice web app that can be deployed natively to Linux and mobile platforms- sign me up!
[1] Except apps written by the OS developer.
I assume you mean apple? Because even the apps built into windows 10 are completely inconsistent with one another or any platform standard.
the web has been developed to exist inside a browser, not on the desktop.
What is missing is STABILITY. The kind of stability we see over at Windows where win32 binaries from the 9x era can run on Windows 10.
The kind of stability one have achieved with the bedrock of Linux (and that Torvalds gets ragged on for defending), but that the DE devs piss on every time they make a new weekend project.
App stores are a distraction, single platform (more like distro monoculture, it seems to me) is a distraction, And Gnome+Wayland is the last people you want to entrust with anything related to stability (you can get Qt working on things that get GTK screaming about missing dependencies).
edit: why the down votes? This is a platform agnostic framework. I understand the performance is bad, but the one reason that linux doesn't have the same applications as windows and OSX is the window manager. A lot of amazing apps have been created using electron which has allowed people to even remotely think about moving over.
Look at the Minecraft pocket edition (and its Windows 10 respin), one of the devs said that it would be trivial to port that to desktop Linux but they would have to set up their own payment and distribution system, which just isn't worth it for that tiny market.
It is absolutely possible to make a browser engine-based shell that is more efficient than Electron is. Electron has the wackiest setup imaginable, mashing together Node and Chromium, with two versions of V8 to boot.
There is a lack of a simple desktop app development environment.
Yes there is GTK and yes there QT. But regardless of how much people may hate Xcode, it allowed people to create solid desktop applications in a fraction of the time that was needed to do the same in either GTK or QT. It's better documented, it's smoother, it's easier to structure your application in terms of the framework rather than programming language.
The whole thing is a little like the Rails vs. Flask or Go argument. Yes Flask is really cool, and in Go you can build really cool stuff and it's modular, you select a muxer and stitch it together, it does more requests per second, but if you just want to bash out a quick web application you're better off picking the first option.
The app store is hard argument is so far down the line... If you look at all the things Apple did before they pushed their app store it almost doesn't matter.
(I'm mixing IDE with language/lib right now, but for Gnome it does go hand in hand IMHO)
I hope that Ubuntu starts to support Builder. Ubuntu tried something similar with qtcreator and the Ubuntu sdk, but that was a really bad experience. Let's hope that the switch to Gnome also means that Ubuntu switch their efforts to Builder.
One of the devs of the Minecraft Windows 10 edition said that it would be trivial to port that to desktop Linux but they would have to set up their own payment and distribution system, which just isn't worth it for that tiny market.
Having packaging and distribution built into an IDE goes a great length to solve that issue.
Maybe Ada is more popular than I know, but I would think it's more valuable to spend time making the development process better for C++ devs (or w/e) than build a system so general that it can support Ada.
The missing piece is public server infrastructure for accepting Flatpak packages from GNOME Builder and distributing them to GNOME Software clients, and that is currently in development as https://flathub.org/
Extremely easy to do GUIs, and they have weird DSLs, for example for video editing and shell scripting:
http://docs.racket-lang.org/video/index.html http://docs.racket-lang.org/rash/index.html
Does anyone think that Xaml Standard + GTK + dotnet core might be a potential path forward? Supposedly Microsoft is working on a GTK implementation, and very much intrigues me.
edit: Discussion here http://www.xamarinpodcast.com/41 21:30 - New "backends" for Xamarin.Forms - macOS, GTK#, and WPF
This is a wonderful opportunity for us original computer nerds... with the mainstream leaving for their terrible mobile devices computers can finally go back to being tools for power users. The appliance-like expectations of the mainstream was the worst thing that ever happened to traditional computing.
But in other ways I disagree. There are plenty of options for the power-user to adapt their environment right now. How are we hurting? (Unless you are corporate and they restrict you to some gimped UI.