helloSystem / helloSystem/hello

The sad state of modern software

Open
#19 4 comments 0 reactions 0 assignees View on GitHub
Dominant language
No language data
Stars
2.5k
Forks
59
PR merge metrics
No merged PRs in 30d

Description

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.

- OS vendors tie theirs users and developers to their environment. In Windows and Linux you write in C or C++ on a Mac or iPhone you either use Objective-C or Swift. You can use some C++ with Objective-C but it's limited. You could write using higher level languages but then the users must have the runtime environment and then there are performance issues and problems with user experience being different to what people are used to on their platform.
- Windows has Win32 api, Apple has Cocoa and UIKit and linux has ... Well it does not have anything. In Linux the graphical user interface is not a part of the operating system. https://stackoverflow.com/questions/12717138/what-is-linux-s-native-gui-api
- Distributing binaries in Windows and Mac is trivial. In Linux it's terrible.
- There are too many different variants of Linux distributions
- There is not enough utilities in C++ STL library. You have to install and build libraries to do anything usefull like connecting to a server and putting stuff on screen. And to get that stuff you need to install certain version of perl, cmake, python, chocolatey, nodejs etc. Then you need mix and match these with other libraries and your code.

A good OS must have for developers out of the box:
- a modern compiler
- good APIs for creating GUI apps, no need install 3.rd party libries that wrap the crap to get a nicer API
- a RAD IDE like the Borland C++ Builder, just drag a drop a button on a form and double click and write code
- fast compilation like Borland C++ Builder had or the Delphi RAD
- in detail documentation of every API. Not like this fstream::open(const char* filename); filename String with the name of the file to open. **Specifics about its format and validity depend on the library implementation and running environment.** I mean you are the platform, just tell me how it works and give me access to it.
- stability. I want my applications to work 20 years from now
- distributing binaries to users should be as easy as copy pasting a single folder with everything in it

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:

- The Evils of Non-native Programming https://www.youtube.com/watch?v=tK50z_gUpZI
- Old computers did it better https://www.youtube.com/watch?v=0wDtxYeJdzg

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

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.