helloSystem / hello

Desktop system for creators with a focus on simplicity, elegance, and usability. Based on FreeBSD. Less, but better!
2.3k stars 57 forks source link

The sad state of modern software #19

Open jetand opened 4 years ago

jetand commented 4 years ago

I read your articles and watched the videos about bringing back the ease of 80s and 90s personal computing. I feel your pain and I have had similiar usability issues with different operating systems and software.

I would like to write about how bad modern software is and why it is. Let's get started.

Gmail is slower than it was in 2004, Microsoft Teams application takes 700MB of memory just idling on the background, when you navigate to a web page you get a copy of vue or angular or react or whatever framework with each different web page where it downloads 100MB of garbage scripts, styles, images and videos when you only wanted to see for example a restaurant menu and the opening hours. We have wasted the high speed internet and powerful PCs to software bloat.

I like Chrome and the fact I can do so much with it. But I don't want to do everything with it. I don't want every application to be these web browsers wrapped in an application where each one takes huge amounts memory and slow cpu hogs. When I complain about the memory usage the developers say: "But nobody uses more than one application at a time and therefore the memory consumption is not a problem." and "Memory is there to be used.". Most modern software makes me sad and depressed everytime I use them. When I see how it's written makes me more sad. You can read about what I mean here https://www.davidhaney.io/npm-left-pad-have-we-forgotten-how-to-program/

Then why doesn't everyone then ship native applications if they are better? Well because it is hard.

A good OS must have for developers out of the box:

The language to write natively must be a low level language like C or C++. You can always add the stuff later like higher level languages with a garbage collector.

When it is easy to build and distribute applications on your platform then that will get a lot of software and with the software you get the users.

Inspiring to watch:

I don't know how to fix the world. Currently you have to write different solutions for each different platform or use something that wraps that complexity and weigh the pros and cons does it make to sence to use it or do it yourself.

Casey explains here why today it is so difficult to create an OS. The Thirty Million Line Problem https://www.youtube.com/watch?v=kZRE7HIO3vk

probonopd commented 4 years ago

Thanks for your thoughtful writeup and links. Excellent points. Here is my current thinking on them.

OS vendors tie theirs users and developers to their environment.

At least they try. Luckily there are cross-platform development environment such as Qt.

Windows has Win32 api, Apple has Cocoa and UIKit and linux has ...

"Linux" is just a kernel, and "Desktop Linux" is a mess because different distributions exist that agree on nothing.

For this reason, I am now exploring the viability of FreeBSD as the Core OS for a desktop operating system, and so far I am very happy with what I am seeing. In contrast to Linux, FreeBSD is not just a kernel but a complete operating system. However, it still has no "native" UI toolkit.

Haiku has one. It's great. But do we really want to write non-cross-platform applications just for Haiku? I don't...

a RAD IDE like the Borland C++ Builder, just drag a drop a button on a form and double click and write code

There is Lazarus, which is exactly like Borland TurboPascal.

For C++, there is QtCreator which comes with a user interface designer.

It took me a while, but today I found out: Instead of double-clicking on a widget and writing your code, you right-click on a widget, select "Go to slot...", select e.g., "clicked()" if it is a button that should react to this event, click "OK", then write your code.

Almost as easy once you know it.

Distributing binaries in Windows and Mac is trivial. In Linux it's terrible.

Hence I invented the AppImage format.

On FreeBSD, it's easier since there are not different distributions. Practically all software available for it is available under the pkg command and/or in the ports tree.

There are too many different variants of Linux distributions

Yes! See my talk: https://media.ccc.de/v/ASG2018-174-2018_desktop_linux_platform_issues

Took me a while to realize it, but FreeBSD is different. There are different downstream projects (that build appliances) but they are still FreeBSD. I'd say these are more pre-packaged "flavors" of the same thing, rather than Linux distributions who tend to agree on nothing.

There is not enough utilities in C++ STL library

Hence, I avoid pure C++ and consider Qt my "standard library". When possibly, I avoid C++ altogether and use Go.

Casey explains here why today it is so difficult to create an OS. The Thirty Million Line Problem

Don't build a new OS. Take one that has been around for a long time and put a very thin layer of polish on top of it.

In fact, I am having a lot of fun taking FreeBSD and various desktop bits and then removing everything that I don't need. Liberating!

jetand commented 4 years ago

Thank you for your reply and your thoughts.

I watched your presentation and fully agree that linux is too much of a moving target to ship applications.

I'll need to study this AppImage. It looks promising. I'll try to install Free BSD on virtual box and see how it looks like.

What I have understood the problem with Qt is the licensing cost when creating commercial software. There was also something about not being able statically link so you need to ship tons of dlls to run your application on the user machine. Qt has good editor and it's easy enough to create UI from code. But C++ Builder was much easier to use. It just made sence, no need to look at hours of youtube tutorials on how to create applications. That's what I want from the OS and the applications that everything would just make sence.

I have actually used lazarus to develop an application for one certain linux distro. There are many things that I like about it:

But there are many issues with it that could be fixed:

probonopd commented 1 year ago

https://datagubbe.se/decusab/ also makes some great points about the sad state of modern (desktop) software.