Showing posts with label Linux. Show all posts
Showing posts with label Linux. Show all posts

February 16, 2026

Gründe gegen Linux auf dem Desktop

 Innerhalb der Linux Community gibt es ein breites Unverständnis gegenüber Windows User. Linux wird als das technisch bessere System definiert und folglich wird das Winbdows Ecosystem verspottet und es wird unterstellt dass Windows ein Auslaufmodell wäre.

Anstatt an diesen Gedankengang anzudocken und gebetsmühlenartig zu wiederholen was die Vorteil von Linux auf dem Desktop sind, sollen an dieser Stelle einmal die nachteile von Linux genannt werden mit dem ziel dass Windows Benutzer gestärkt werden.

Der wichtigste Grund gegen Linux ist, dass dort die beliebte Datenkbank-Anwendung MS Access nicht lauffähig ist, es gibt ferner kein Opensource pendant was dem Funktionsumfang nahe kommt. Lediglich für MS Word und MS Excel gibt es etablierte Linux Alternativen, für die Desktop_datenbank fehlte bisher die nötige Manpower um ein Open Source Projekt durchzuführen.

Eine Desktop Datenbank wie MS Access ist ferne nicht irgendeine Büroanwendung ähnlich wie ein texteditor oder ein Malprogramm, sondern mit besagter Software kann man ohne Programmieren zu müssen leistungsfähige Frontend und Backend EDV Anwendungen erstellen. Datenbanken mögen für Physiker und Mathematiker entbehrlich sein die eher Programmiersprachen und Mathematik-Software einsetzen, jedoch sind Datenbanken im Geschäftsumfeld die Brot und Butter Anwendung. Der Computereinsatz von Unternehmen ist ausnahmslos datenbank orientiert. Ohne Übertreibung kann man sagen, dass MS Access die Killerapplikation für Compüuter im Büroumfeld darstellt, fehlt diese Applikation sind alle weiteren Vorteile unwichtig.

Linux hat jedoch noch weitere Nachteile. Zunächst einmal ist es auf Consumer-PC nicht vorinstalliert. Wer einen neuen PC im Handel kauft wird dort lediglich Windows 11 vorinstalliert vorfinden. Technisch kann man das Problem natürlich mit einem selbst erstellten USB Bootstick lösen, jedoch wird der Umsteiger schnell erkennen, dass es im PC Fachgeschäft für Linux generell keine Software verfügbar ist. Sämtliche kommerzielle Software von Softwarefirmen die an Privat und LBusinesskunden verkauft wird, wurde dezidiert für das MS Windows Betriebssystem entwickelt.

es gab früher einmal auch kommerzielle Linux software die im Fachladen als Package verkauft wurde, jedoch hat sich das konzept nie durchsetzen können. Die PC Welt ist deshalb zweigeteilt: es gibt einmal kommerzielle Software entwickelt von Firmen für das Windows system und dann gibt es noch Open Source software die es nur online im Internet gibt, die aber nicht kommerziell vermarktet wird. Dadurch stehen normale 'Anwender die auf Linux setzen, plötzlich allein da. Sie müssen sich das nötige Fachwissen mühsam anlesen, sie müssen die Software online herunterladen und wenn es dabei Probleme gibt erhalten sie in Foren den Rat doch einfach auf eine andere Linux Distribution zu wechseln, weil die angeblich viel besser wäre.

Für den Durchschnittsanwender, der einen PC mit vorinstallierten Windows verwendet gibt es keinen Grund auf Linux zu wechseln. Er wird dort nur Nachteile erleben, und wegen der steilen Lernkurve an einfachsten Aufgaben scheitern wie der Installation eines Spieles oder dem Öffnen eines Word Dokumentes. MS Windows ist in sämtlichen Punkten überlegen und bildet unverändert den Industriestandard für Desktop PC sowohl bei Privatanwendern als auch in der Geschäftswelt.

December 03, 2025

Der Marketshare von Linux

Eine Fehlannahme der Open Source community lautet dass es möglich sei den gegenwärtigen niedrigen Marktanteil von Linux auf dem Desktop zu erhöhen. Von aktuell 4% auf 10%, dann auf 20% usw bis Linux WIndows verdrängt hat. Diese Annahme wird seit den 1990er propagiert, nur hat sie sich seit über 20 Jahren als nicht realisierbar herausgestellt. Die ERklärung hat weniger etwas mit der Software Linux an sich zu tun sondern mit den Erwartungen der Nutzer.

Der Hauptgrund warum besonders Softwareentwickler Linux als mächtige Alternative zu Windows auf dem Desktop schätzen hat etwas mit den Stärken von Linux zu tun: es ist Open Source, es enthält eine Kommmandozeile, es ist konfigurierbar, es enthält vorinstallierte Compiler für C++ und Python, es enthält vorinstallierte SQL Datenbanken und ganz wichtig es verfügt mit kvm über eine Virtualisierungsumgebung um weitere Linux und Windows instanzen zu starten.

Leider spielen diese Punkte für den Mainstream anwender keine Rolle. Was für den ENdkonsumenten wichtig ist geht eher in Richtung: Auswahl aus sehr vielen Spielen, vorinstalliert auf einem PC, technischer Support durch Hersteller und Auswahl aus 200k vorhandenen Programmeren. Keine dieser Erwartungen kann Linux erfüllen. in all diesen Punkten ist Linux sehr schlecht und es gibt keine Aussicht auf Besserung.

Daraus folgt, dass der künftige Marktanteil von Linux auf dem Desktop bei dem heutigen niedrigen Wert von 4% verharren wird, sowohl in 2030, in 2040 und die jahre danach wird Linux ein Nischenbetriebssystem bleiben. Entwickelt für professionelle Informatiker die Datenbanken, Programmiersprachen und virtuelle Computer benötigen und für die Windows zuviele Einschränkungen mitbringt.



December 02, 2025

Disappointed with Linux Mint

 The promise of the Linux Mint system is, that its a beginner friendly lightweight system in tradition of Ubuntu. None of these claims was fulfilled, there are many reasons to dismiss the ISO file and prefer the old and widely used Debian system instead.

First problem is, that a normal gnome on wayland system with Linux will occupy around 5 GB of RAM after major applications are started. This makes the system a poor choice for older hardware. To be fair, the Debian system needs the same amount of RAM and even more but at least Mint has to no advantage. It seems, that a modern operating system needs always too much of RAM.

Second problem is the quality of the documentation. The main Linux online forum can't be displayed on a text browser like lynx which is a bad confusing for a Linux operating system which is based on the idea of openess, and command line preferences.

Third problem with Linux mint is, that the built in GUI interface cinnamon looks a bit outdated. IT has much in common with the XFCE system. Of course its possible to switch the desktop in favor to KDE or gnome, but this will Linux mint transform into another distribution like Debian. Another reason to reject the Cinnamon desktop is, that the Linux philosopöhy works different from Windows. In Microsoft Windows there is indeed only one desktop available for everyone, but in Linux there are around 8 different desktops out there and the user has to decide for one of them. Linux mint hasn't solve this issue but has added another desltop to the existing ecosystem.

In general, Linux mint is not a bad Linux distribution. It can be installed easily and has preinstalled Libreoffice suite plus a webbrowser so its a good starting point for former Windows users. The real problem is, that Linux itself was not designed for a mainstream audience. Linux is a programmer friendly open source operating system with a maximum market share of 5%. Its not possible to motivate more users to install the system on their computer and Linux mint won't increase the market share in the future.

Unfurtunately Linux Mint has a middle positition which doesn't fulfill the needs of the user. Its to complicated for normal users because it is delivered with powerful software like a GCC c Compiler and a command line which makes it a good choice for a programmer's workstation. on the other hand, it doesn't fit to expert users because Linux mint has to much GUI oriented addtional software and a poor documantation which doesn't fit to the need of expert users. Because Linux mint is based on the Debian and Ubuntu packages it won't replace these established projects and is some sort of add one which is not required by most people.

September 16, 2025

Wie man eine Linux Distribution auswählt

 Neueinsteiger sehen sich mit einer Unmenge unterschiedlicher Linux Distributionen konfrontiert, die untereinander vollständig inkompatibel sind. Ferner ist es selbst für Computer Experten nahezu unmöglich, sich selbst eine Linux Distribution zu erstellen. Daraus ergibt sich das Problem sich entscheiden zu müssen was mit einem hohen Lernaufwand verbunden ist.

Die wohl einsteigerfreundlichste Methode sich der Welt von Open Source und Linux zu nähern besteht darin, ein aktuelles Debian Live image auf einen USB Stick zu kopieren, damit einen älteren Rechner zu starten und auf der Festplatte dann Linux zu installieren. Sollte der potentielle User auf technische Schwierigkeiten stoßen beim erstellen des Debian Live images, so sollte die Linux Migration an sich hinterfragt werden. Wenn selbst Debian Live zu hohe Anforderungen an einen User stellt, wird er mit anderen Distributionen auf noch viel tiefer gehende Probleme stoßen und dann ist möglicherweise Linux das falsche Betriebssystem für den User.

Angenommen das Booten eines PC mit der live iso datei und das anschließénde installieren auf der Festplatte funktioniert, so wird der User feststellen, dass Linux grundsätzlich anders aufgebaut ist, als das gewohnte Windows oder MacOS. Es gibt andere Programme, andere Online Foren und die Kommandozeile spielt eine viel wichtigere Rolle. Der wichtigste Unterschied bei Linux ist die Abwesenheit von komerzieller Software und die Abwesenheit von Computerspielen. Rein technisch kann man in Linux durchaus mittels der Steam Software Spiele installieren und einige User machen das tatsächlich, doch die Mehrzahl der 80 Mio Linux User dürfte selten Computerspiele spielen. Jedenfalls ist das den Zahlen zu entnehmen, bezüglich angemeldeter Clients in Online Rollenspielen.

Linux ist klassischerweise ein Betriebssystem für Programmierer. Es kann durchaus auch von Nicht Programmierern verwendet werden, doch ist dieser Anwendungsfall eher die Ausnahme. Es gab in der Vergangenheit zahlreiche Versuche, Linux für die große Masse zugänglicher zu machen, ähnlich wie Android bei Smartphones, doch all diese Versuche sind gescheitert. Projekte wie Ubuntu Linux, Linux Mint oder Videotutorials im Internet die schritt für schritt erklären wie man eine ext4 Partition verkleinert kommen ihrem Ziel Linux für Jedermann zu erklären nicht nach. Nutzer die sich nicht technisch mit einem Betriebssystem auseinandersetzen wollen bleiben seit Jahren dem etablierten Windows und MacOS Ökosystem treu und fühlen sich von Linux eher abgeschreckt. Mag sein, dass Linux bei Supercomputern, bei Servern und auf Smartphones das dominerende Betriebssystem weltweit ist, bei Desktop PC ist es Nischensystem was sich an einer sehr kleine Zielgruppe von Programmierern wendet. Wer noch nie in der Sprache C programmniert hat und in LaTeX keinen Sinn erkennen zu vermag, der ist definitiv falsch bei Linux, ganz egal ob er Debian, Arch Linux oder Suse preferiert.

Zum Abschluss noch ein kleiner Selbsttest für die Programmiersprache C. Nur wenn man 6 von 6 Antworten korrekt geben konnte, sollte man den Versuch unternehmen auf Linux umzusteigen. Andernfalls wird das Projekt sehr wahrscheinlich scheitern.

Quiz: Die Programmiersprache C für Anfänger

1.  Was ist das grundlegende Element, das ein C-Programm benötigt, um zu starten?
    a) Eine `#include`-Anweisung.
    b) Die `main()`-Funktion.
    c) Eine Variable mit dem Namen `start`.
    d) Eine Bibliothek namens `begin.h`.

2.  Welche Header-Datei wird typischerweise benötigt, um die Funktion `printf()` zu verwenden?
    a) `stdlib.h`
    b) `string.h`
    c) `stdio.h`
    d) `math.h`

3.  Wofür wird ein Semikolon (`;`) in C hauptsächlich verwendet?
    a) Um das Ende einer Code-Zeile zu markieren.
    b) Um eine Variable zu deklarieren.
    c) Um das Ende einer Anweisung zu markieren.
    d) Um Kommentare zu schreiben.

4.  Wie wird in C eine einfache Ganzzahl-Variable namens `zahl` deklariert, die den Wert 10 enthält?
    a) `int zahl = 10;`
    b) `number zahl = 10;`
    c) `integer zahl = "10";`
    d) `zahl = 10;`

5.  Welches ist der korrekte Datentyp für ein einzelnes Zeichen in C?
    a) `string`
    b) `char`
    c) `text`
    d) `byte`

6.  Was ist die Aufgabe eines Compilers?
    a) Er wandelt den C-Code direkt in Text um.
    b) Er führt das Programm aus.
    c) Er übersetzt den C-Quellcode in maschinenlesbaren Code.
    d) Er sucht nach Viren im Programm.

---
Richtige Antworten

1.  b) Die `main()`-Funktion. Sie ist der Einstiegspunkt, an dem das Programm beginnt.
2.  c) `stdio.h` (Standard Input/Output). Diese Bibliothek enthält grundlegende Ein- und Ausgabefunktionen wie `printf()` und `scanf()`.
3.  c) Um das Ende einer Anweisung zu markieren. Jede Anweisung muss mit einem Semikolon abgeschlossen werden.
4.  a) `int zahl = 10;`. `int` steht für Integer (Ganzzahl).
5.  b) `char`. Dies ist der Standard-Datentyp für Zeichen.
6.  c) Er übersetzt den C-Quellcode in maschinenlesbaren Code. Der Compiler ist das Werkzeug, das den Code in ein ausführbares Programm umwandelt.

September 15, 2025

Criticism of Linux Mint

 Linux Mint is frequently discussed Linux Distribution which is sometimes introduced as a beginner friendly version of Debian. Instead of assuming that the user is already a Linux expert, the Linux community assumes, that the new user has a background in the Microsoft operating system and needs a similar experience in Linux.

To verify if this claim is correct or not it a working thesis is presented first which gets explored in detail. The thesis is, that Linux Mint is at foremost a desktop environment similar to XFCE and Gnome. The core element of the Linux mint distribution is the Cinnamon desktop, which is based on gnome2 and was improved with additional programs. What the user gets presented as Linux mint is a certain look&feel of the programs, a task menu on the bottom and a certain file manager with some other utility programs, e.g. for updating the system or change the settings.

It doesn't make sense to describe Linux Mint as a new linux distribution because it has many similarities with existing distributions. For example, the package format apt has its roots in the Debian ecosystem, the kernel if of course the normal Linux kernel and the display manager is the well known x.org system.

A true Linux distribution has its own philosophy and its own package manager. For example the Arch Linux project is working completely different from debian, because its organized around the pacman package manager. 

With the working thesis, that Linux Mint is mostly a desktop environment it possible to judge if the project fits to a certain user. If the user likes the Gnome2 environment and is familiar with some Linux mint enhancement, than he will become a fan of Linux Mint. In contrast, if the user prefers a different desktop environment like XFCE or gnome3, he won't be happy with the Mint project.

From a technical perspective, a debian user can install the Cinnamon desktop in Debian, this resulting look and feel comes close to the Linux Mint distribution which is usually delivered on an entire .iso file. Instead of arguing which of the Linux distribution is the best, the real question is which sort of desktop environment the user likes. There are multiple options like Lxqt, gnome3, KDE, xfce, lxde and so on.

Unfurtunately, this huge amount of choices makes it hard for a former Windows user to become familier with Linux. The look and feel of cinnamon looks very different from Gnome3 which looks completely different from xfce. Even the file manager is a different program and the printer settings are located in another section. Unfurtunately, the prediction is, that future Linux desktops will look even more chaotic with additional forks of existing desktop systems. The introduction of the newly developed wayland display server has increased the amount of choices.

What is missing in the Linux ecosystem is a single one for all desktop system which is highly developed and has accumlated most of the users. Such kind of super-desktop is available for windows users and in the macos ecosystem.

But let us go back to the Linux Mint project. The assumption is, that the visual look and feel of a Linux system is highly important. That means, for Linux mint the cinnamon desktop is the core element and all the documentation and the tools are added to this desktop. The cinnamon desktop has the same pros and cons like other desktop systems. Some user like the design, while other not.

The problem with the "desktop is the Linux distribution" mentality is, that redefines reality and creates a bias. Let me give an example. Suppose the lxde desktop decides to start an entire linux distribution which promotes Lxde as default window manager. The assumption is, that all the users are prefering this single desktop but are discouraged to install alternative desktops like gnome3. Even if some users are prefering such an idea, it won't fit for other users. The better alternative is to see a Linux distribution only as a framework for different desktops.

September 03, 2025

Preinstalled gnome apps

Even there are 100 different Linux distributions available, there are only two Linux desktops available which are Gnome and KDE. Gnome is widespread used and should be explained briefly. It consists of a handful of apps in different categories:

- system tools: archive manager, gnome-disks, file-manager, gedit, terminal, screenshot, system-monitor
- document tools: scanner, pdf viewer
- office apps: video player, evolution e-mail

No matter which Linux distribution was installed on the PC for example Ubuntu, Arch Linux or Slackware, these gnome apps are available for sure. It allows to organize files on the hard drive, create new partitions, create text files, enter commands in the terminal or write an email. These tools are frequently used by the average end user so they are preinstalled on every system.

Of course, all these programs are distributed under a GPL License, which means that they are free of charge and without advertisement. They are nearly error free, because the tools were improved over decades and used by million of users.

September 02, 2025

Secure erase of a hard drive in Linux

Debian based operating systems have a graphical frontend for hard drive manipulation called gnome-disks. According to the selected hard drive, there are different options available in the menu. For older drives there is an option to overwrite a disk with zeros and for more recent drives there is a dedicated secure erase option available. What these options have in common is, that it takes multiple hours for doing so.

Unfortunately, the photorec recovery software is able to restore files from hard drive which was overwritten with zeros. Even if this sounds technically not possible some online forums are mention such kind of behavior. To ensure, that the data on the hard drive are really gone it makes sense to combine a secure erase operation with creating a newly encrypted volume. This ensures, that even photorec can't recover former data.

 The good news is, that Linux user doesn't have to use command line tools for formatting a drive and creating an encrypted volume. Such kind of operation is fully supported in the gnome-disks software. The program is so powerful, that even less known filesystems like F2FS (flash friendly filesystem) are supported which is a great choice for usb thumb drives. Of course, the user needs to interact with the software carefully, because a simple click on a button can shredder an entire disk.

March 01, 2025

Advantages of Linux in a single sentence

ffmpeg, mplayer, python3, gcc, git, vim, grep, awk, wget, ssh, docker, htop, nmap, pandoc, imagemagick, find, dd, ghostscript, latex, gnuplot, sqlite3.

November 02, 2023

Introduction to the Linux operating system

Books about the Windows operating system are assuming that the user has never seen a computer before and needs guidance for most tasks. The typical windows book explains, that a computer consists of a mouse, a USB interface, a printer and a monitor and the user is asked to start a program or modify settings in the menu.

It doesn't make sense to transfer this language style to Linux operating systems because Linux wasn't created for computer newbies but for experts. The simple difference between both user groups is, that computer newbies can't program in Python while computer experts are able to do so. As a consequence the typical book about Linux should assume that the user is familiar with the Python language.

The positive effect is, that the explanation what Linux is about can be shorten drastically. Linux allows to execute self written python programs, consists of a powerful package manager and is distributed for free. If the user have no need for such functionality he probably doesn't need open source software and is recommended to use existing Windows software.

The reason why the market share of Linux is much smaller is because the amount of programmers is small. What we can say for sure is that non programmers won't feel comfortable with Linux. Its not about a certain windows manager like gnome vs xfce and it is not about the position of the start menu, but without programming skills in at least one language the Linux OS doesn't make sense for the user.

From a programmers perspective it is pretty easy to understand the Linux operating system. In comparison to write a medium size software project in Python, the interaction with Linux is much easier. There is no need to call a method in a python program, nor implement a recursive function, but the installation of linux is gui driven and apart from clicking on some buttons no further skills are needed. 99% of existing software engineers are able to install and use Linux with ease.

Let us take a closer look into the numbers. There are 1000 million PC worldwide available and around 27 million programmers. This ratio of 2.7% is the maximum market share of Linux on the desktop. It is not possible to growth the market share of Linux above this level because this would imply that non programmers have installed Linux on the desktop PC in favor of Windows.

October 27, 2023

The Linux kernel as a device driver repository

 Most of the lines of code within the Linux project are about device drivers. Its not about about 1000 lines of code, nor 1 million lines of code but device drivers need around 20 million lines of code within the Kernel. Instead of analyzing what the drivers are doing from a technical perspective there is a need to describe the philosophy.

In classical closed source operaring systems, the device driver is provided by the hardware manufactorer. A certain company is producing a flatbad scanner and has to deliver the hardware itself plus a 3.5" floppy disc which contains of drivers to run the hardware. The same issue is there for a mouse, an usb stick, a camera and so on. In the 1990s it was common that device drivers where delivered on physical discs inside the box of the hardware. The end user was asked to insert the disc into the pc and run a program which was mostly setup.exe to install the drivers. Then and only then the hardware was working.

More recent version of Windows are installing the needed drivers in the background without human interention. The Windows operating system detects with plug and play which hardware is in use and downloads the drivers from the internet. These drivers are mostly writtein in C language and compiled into executable binary programs.

In contrast the linux kernel is working with open source hardware drivers. The Kernel is basically a collection of drivers for getting access to all the devices like cd-rom, ssd, ethernet card and so on. The shared similarity between Windows and Linux is that somebody has write all the drivers. Within the Windows ecodsystem this task is handled decentralized. Each company has to write its own drivers and doesn't explain to the public what the code is about. In contrast, Linux is working with a centralized model. There is only a single kernel and all the drivers are in the kernel.

The focus on the device drivers might explain why apart from the major three operating systems (win, linux and macos) there are no alternative projects available for desktop PC. Everybody who likes to establish a new operating system has to make sure that all the hardware is working with this operating system. The only way for doing so is to write all the needed drivers from scratch. This will take a lot o man years. Because of this single reasson there is no Forth operating system, and smaller projects like Haiku are not working well enough for production machines. The cause is, that most devices won't work with these devices. That means, the proud user of the Haiku OS is plugging in an USB stick into the PC but nothing happens. The OS isn't detecting the hardware and has no executable driver for this hardware.

The major cause why device drivers are released as closed source for Windows is because it is a time consuming task to write the software. A single expert programmer is able to create around 10 lines of code per day. Even if the programmer has access to all the hardware specification and has a lots of experience he will need months up to years until the driver for a certain device was written. It doesn't make sense for a hardware company to release the software as open source because the source code including the ability to write code for new devices is a asset for a company which can't be shared with other comapnies.

The Linux ecosystem is working the opposite way. Its a mandatory rule that all the code has to be released in the open source version. If a certain driver is not available then the device won't work with the kernel. The result is, that the quality of the hardware drivers in Linux is lower and that the amount of drivers is lower. There are lots of hardware available which is supported in Windows but not in Linux. Its not of technical requirements but because of the ecosystem and especially the time consuming effort to write a driver in C.

Suppose it would be possible to create a universal device driver in 10k lines of code which can interact with any possible hardware. Then it would be pretty easy to create new operating systems from scratch. All what is needed is this single device driver and some additional programs can be added. Unfurtunately there are technical limitations which prevents that such a universal driver can be realized. Existing computing hardware is so complex and so different that any single device will need a dedicated driver.

Let us estimate how many different hardware devices are available. suppose a single device like an ethernet card is controlled by driver with 10k lines of code. There are 20 million of codelines in the Linux project for hardware drivers., so the total amount of different devices is 2k. It is equal to a large museum fully equipped with computer hardware from floor to ceilling. In addition, modern computer hardware is more complex than previuos models For example the avarage mouse is equipped with infrared sensors while the typical mouse in the 1990s was using a simple rubber ball to detect the movements. So we can estimate that in the future the complexity will grow further which results into more different devices which have a need for more codelines.

October 26, 2023

Writing device drivers in C

 The core element of any operating system is a collection of device drivers. These drivers ensures that hardware components like a mouse, the graphics card, ethernet cards and keyboard is available for the end user. The only programming language for implementing a device driver is C. C gets compiled into assembly instructions and this ensures the maximum efficiency.

Suppose the idea is to realize an operating system in Forth with the aim to run it on a stackmachine. In such a case, the c language isn't available but the user is forced to rewrite the device drivers in Forth. This will produce a situation in which all the code isn't written yet but has to be rewritten. It will take lots of man years to rewrite c device driver in a Forth dialect. Even if the programmers are highly motivated, they won't be able to fullfill the task within the next 30 years.

One possible attempt to overcome the Forth bottleneck is a virtual machine and high level languages like BASIC. The basic programming language gets converted into byte code which is executed on a virtual machine. The virtual machine is running on top of a Forth chip so the programmer doesn't need to program in Forth anymore. The only problem is, that BASIC is a high level programming language while device drivers are written in a low level language.

Unfurtunately, it is not possible to execute C in a virtual machine because C code needs direct hardware access. The only way to execute c code is by compiling it into assembly language. But compiling c code into assembly is only possible for register machine, not for stackmachines. There is no such thing available like a C to forth converter, and even it is possible to implement such a thing it can't be applied to device drivers.

Device drivers are an important element of any operating system. They make sure that all the hardware like printers, usb port, webcam and so on are working. Programming an operating system by ignoring the device won't make sense. It seems that only the C  low level language is only option for writing device drivers. This situation makes it unlikely, that operating systems will work on stackmachines.

The problem is not located in technical terms. Forth is a great language for getting direct access to hardware. There are some microcontrollers available which are running with Forth at bare metal. The more serious problem is, that a desktop operating system consists of thousnands of different hardware devices. Writing the code for all the devices will take endless amount of man years.[1] This effort is very costly. Rewriting existing C device drivers into Forth is to expensive. This prevents that such a project gets started. It seems, that the x86 architecture is the only valid computer system which is able to run desktop operating systems.

Perhaps it makes sense to go a step backward and understand why exactly C was choosen in mainstream computing. The goal was to write device drivers which contains of millions of codelines. Instead of writing this code in assembly language which is different for each processor, the idea was to write the device drivers in C. C is more portable than Assembly and is easier to learn. What is needed in addition is a compiler for generating assembly instructions automatically. This paradigm is valid in computing since decades.

The only bottleneck for a c compiler is, that it needs a certain target architecture which is a compiler friendly x86 architecture. Possbile alternatives like a RISC Cpu and especially a Forth cpu are preventing that C code gets converted into assembly instructions.  

The linux kernel contains of at least 5 million lines of code reserved for device drivers.[1] A potential Linux alternative written in Forth has to provide the same functionality. From a technical point of view it is possible to rewrite the device drivers in Forth, but from an economical perspective it doesn't make sense. Its a well known fact that a single programmer can write down only 10 lines of code per day no matter which programming language he prefers. And the open question is who exactly should write all the code in Forth?

There is a certain reason available why all the desktop operating systems were written in C. Because existing code was written mostly in C and it is much easier to add something to an existing codebase than rewriting it from scratch. The untold assumption is, that all the 5 million lines of code are needed, otherwise the computer isn't able to detect or manage a certain hardware for example a graphics card or a network card. The second assumption is, that even the Forth language will need device drivers. It is not possible to write a Forth OS in 10k lines of code which provides the same functionality like the existing device drivers which are written in 5 million lines of code.  This might explain why Forth is not very popular in mainstream computing. Even if the concept is interesting from a theoretical point of view it can't answer the question how to write all the source code which is needed in an operating system. Existing Forth tutorials are explaining to the newbie what a stack machine is about and how to combine Forth words into programs. But this ability is not enough to realize full blown desktop opeating systems in the style of Linux, MacOS or Windows.

In contrast the C language explains very well how to handle complexity. According to the C language paradigm the programmer has to write C code for newly hardware, commit this C into the existing codebase and this will improve the functionality of the Linux kernel. That means, there are 5 million LoC already there, and a new device driver will add around 200 lines of code and its only a detail question how to program the code exactly.

So called Forth systems and stack oriented programming languages like Factorcode are ignoring the problem of device drivers. Especially the aspect how to create millions of codelines to get access to endless amount of existing hardware.

[1] Kadav, Asim, and Michael M. Swift. "Understanding modern device drivers." ACM SIGPLAN Notices 47.4 (2012): 87-98.

October 11, 2023

Gaming on Linux

 What the newbie gamer has to know is, that the Linux operating system provides a different experience than the well known Windows ecosystem. Its not about kernel drivers nor open source licences, but Linux gaming is about reducing the own expectations. The user has to like what he gets no matter how low the quality is. So Linux gaming is equal to potato gaming. The typical resolution is 320x200 pixel which is upscaled to the monitor. Of course, such a resolution looks terrible and it doesn't fullfill the minimum standard. But on the other it allows to see gaming from a new perspective.

In a direct comparison, Linux gaming has a lower quality than windows gaming. More advanced graphics hardware from nvidia isn't supported in Linux and if a graphic chip was detected it will produce for sure a lower frame rate. In every case it is impossible to run the same games as in Windows so the overall situation is about missed opportunity. There is no way to fix it because the Linux ecosystem hasn't the resources to program drivers. Most users are playing older games like Tetris or Pingus which was developed 25 years ago.[1] If they are asking for more recent games with 3d graphics they barely understood what Linux is about.

It is unlikely that the situation will become better in the near future. Linux gaming is a mess and perhaps this was the objective from the beginning. Because of this reason, it doesn't make sense to compare Windows with Linux because they have different objectives. The only thing which is for sure is, that Windows is a here to stay, while Linux is hated by everybody. Nobody likes to play low resolution games from 20 years ago which have lots of bugs.

[1] Wikipedia: pingus

March 25, 2023

Tribute to the FreeBSD operating system

 

In contrast to the Linux operating system, Freebsd is a less known software which should be introduced. The most important period was until the year 1990 in which BSD Unix was the defacto standard for Unix systems. During the 1980s, Linux wasn't invented yet and very advanced projects like the Sun has emerged. Unfortunately, the period since 1990 is less successful for the BSD operating system. First problem was that BSD was splitted into different sub projects like Freebsd, netbsd, openbsd and dragonfly bsd. Second problem was that since the year 1995 the University Berkeley stopped the development of code. So the BSD project has become a non academic project.
FreeBSD itself is running well so it is too early to describe it as a dead end, but many projects closely related to FreeBSD has become obsolete. The mentioned company SUN which was famous for Workstations and the Java technology has stopped its operation in 2010. The OpenSolaris operating system which is working with ZFS and dtrace was canceled in 2009. Another interrupted side projects are PC-BSD (canceled in 2018) and perhaps netbsd which has a very low amount of commits in the last year.
Let us take a closer look at FreeBSD itself. It the largest of the remaining BSD projects and has around 11000 commits per year. In comparison, the Linux kernel has around 74k commits per year. The user experience for FreeBSD on the desktop is disappointing. Most wlan cards are not supported, and the drivers for sound cards are poorly maintained. The user share who are prefering FreeBSD over Linux on the desktop is likely very low. Second problem with the FreeBSD ecosystem is that because of historical reasons the code isn't available under a GPL license which stands in contrast to other large Open source projects like Gimp or the Gnu c compiler.

November 17, 2022

Linux is a large hard drive

 Computers in the past were easy to explain. The commodore 64 consists of ROM which holds the operating system and MS DOS needs a single boot floppy drive which consists of only three files: command.com, io.sys and msdos.sys

In contrast, a modern operating system like Linux looks similar to a mess. There are endless amount of small files which contains of config files, man files, documentation, binary files and log files. The exact amount of all files can be determined either the in graphical "disc usage analyzer" or on the command line with:
df -i /

The amount of active inodes is equal to the files which includes directories. For most fresh installed Linux distribution the amount is around 500k. Only for comparison reason a fresh Windows installation needs around 300k files.

Most Linux beginners and even experts will struggle to explain what is stored in the these files. In most cases it contains of system programs, applications and helper files for the fonts, icons and so on. The only thing what is for sure is, that Unix will need all these files and many real life webservers will need much more additional files for the home directory. The huge file count is perhaps the most obvious difference between a commodore 64 and a unix system.

It is not possible to install the Unix operating system on a single flopp drive or in the ROM of a the hardware. This is an advantage and disadvantage at the same time.

It should be mentioned, that the amount of 0.5 million files on a standard linux system is a small amount of files. The reason is, that only the trunk version of each file which is the latest was installed. In addition the git repository contains many more versions which is available in the cloud. So we can say that the Linux operating system contains of a much more different files which were created over the years. It seems, that this is not perceived as a problem, but it is strength of Unix. Because it allows to growth the system endless.

Unix is working with some underlying assumptions. The idea is not about running a program on a CPU. Such a paradigm was valid for homecomputers. In contrast Unix is working with the assumption that there are 500k files on the harddrive and with each update, additional files are created. Also the existing files are modified by the upstream in a version control system. So the overall Unix system has much in common with a repository of programs and config files.

On the Commodore 64 and early CP/M computers the principle was to reduce the amount of files. Fewer files can be stored on less floppy disks and are running faster on the computer. In addition, fewer files can be compiled faster and contains of fewer bugs. With the advent of Unix, such a minimalist approach has been abandoned.

August 17, 2022

Number of commits for Linux and Freebsd

 

 

A closer look into the Unix history has shown, that the Unix wars are not over but many incompatible kernels and Unix distributions are available. A measurement to determine the quality of a software project is to count the amount of commits. The Linux kernel is leading the statistics because it has over 200 daily commits.
In contrast, the BSD projects can't compete in terms of manpower. The amount of active developer is lower. The chance is high that on the long term projects like netbsd won't survive.

December 23, 2021

How to avoid LaTeX at all

LaTeX is solving a simple image conversation problem. The initial situation is that somebody has a folder with some files which are text files, vector graphics and photos and he likes to combine the content into a single file in the pdf format. According to the LaTeX community the only way in handling this task is by installing an entire ecosystem which contains of 15 GB in total which contains of lots of fonts, outdated macro packages, handreds of documentation and obsolete DVI preview programs.
Nevertheless LaTeX is able to handle the task very well but it is not the only program on earth which is able to do so. A good alterantive is the libreoffice program. The most basic feature of libreoffice is that the user can insert multi images, arange them on a US-letter page and export the result into a pdf file. Even libreoffice wasn't designed as an imagemagic alternative it is pretty good in this task. The user can even decide to reduce the resolution from 300 dpi to 100 dpi to save a lot of disc space.
Let us go to the initial problem. There is a folder which contains of different files and the task is to convert these files into the pdf format. And yes, libreoffice can handle this problem very well. Suppose the software has some bugs, one of them is that the programs a bit slow, especially with some images. But, these are only minor problems and can be fixed in future versions.
The interesting situation is, that Libreoffice can combine existing content much faster than what Latex is able to do. The reason is, that combining existing content into a single pdf file is not very complicated. The most time consuming step is to write down a text file which has for example 500 kb. Creating such a plain text file with an editor can take weeks. Also the creation of high quality jpeg, eps and SVG images can become very time consuming. If someone likes to paint images with the gimp program he will need also weeks until the image is rendered into the jpeg format.
But, if the content is already there and the only task is to combine the content into a single document which is a newspaper, a book or a presentation – such a step can be realized in under an hour. Let us take a closer look how libreoffice is working. After starting the program the user can select “insert ->text from file”. This inserts the plaintext file. In the next step the style sheets for the sections are assigned, and of course this step is made manual. But, the average document has only a low amount of such sections so it is done after a short time. In the next step, some pictures are added. This is also done with the insert menu. Either the picture can be added direct as a picture, or it can be added in a larger frame which allows to modify the position more precise.
Then a short click on “export ->pdf” allows to render the document into a single file. The overall workflow results always into a high quality pdf file, and in contrast to latex the user doesn't need to know the complicated markup language or has to install larger amount of software he doesn't need. The interesting situation is that libreoffice can handle a huge amount of images in a single document. This is realized with the “insert image as link”. The original libreoffice file has a small size and the images are stored externally in the directory folder.
So let us go a step backward. The most time consuming time for creating a technical document is to typing of the text and the painting of the images. The task of combining these information into a print ready pdf file is something which can be handled on the fly. There is no need to automate this task, because then the user will loose the control. The most disappointing moment for latex users is that they will recognize that they can't figure an image where they want. This is marketed as an advantage but in the reality, the user likes to take this decision by himself. Using latex is not recommended anymore, because there is more powerful alternative software available.
The screenshot shows a concrete example. First thing to mention is, that the the display of the images was deactivated in the option menu. This improves the performance of the program. Second thing to know is that both images were anchored to the page. This setting allows to freely position the images similar to a layout software. The user can show the result in the preview winder or export it into the pdf format. Somebody may argue that this ability of Libreoffice is not very exciting. Oh it is. LaTeX isn't able to do so and usually only advanced layout software can handle images that way. What most open source programs like gimp and imagemagic can do is to handle a single image file, but not 2 and more of them.

September 21, 2021

Predicting failure pattern for Linux

 

Most windows user are shy to give Linux a chance. The reason is, that they expect that something with the installation will fail. Failure means, that the graphics card isn't detected, that that hardware isn't able to connect to the internet and that the newly installed system won't boot anymore.
In spite of so much positive articles how wonderful Linux is, that fear of Windows users is right. Especially if they have bought recent hardware in a store the chance is high that all the Linux distributions won't work.
Or let me explain it the other way around: First assumption is that the electronics stores are selling brandnew laptops. Second assumption is, that especially computer experts are buying the latest hardware because they want the maximum performance and high quality LED screen. So the resulting situation is, that the user sits on an advanced computer but Linux won't work with this machine. The strength of Linux is, that it will run on older computers which were sold 2 years before.
This kind of mismatch can't be fixed by a single user. No matter if he is using Debian; Linux Mint or Arch Linux. The chance is high that the kernel won't recognize the chipset and the only one who can fix the problem is Linus torvalds in the upstream.
From a communication situation it is interesting to describe who feels in charge to fix the problems. Nobody feels responsible. The Linux distribution will argue, that it depends on the kernel to detect recent hardware. The kernel maintainer will argue, that the hardware is available for only 6 months which is too short to write a driver and the hardware vendor will argue, that the system was tested with Windows but not with Linux.
Instead of judging who is wrong in this game let us make a simple thought experiment. Suppose 100 randomly selected new laptops are choosen. How many of them will work with Linux? 10% or less. The rest will have major problems for wifi, gpu and SSDs. None of these problems can be fixed by changing a config file, but they have to do with writing new sourcecode in the upstream. This makes Linux a useless operating system for new computers. And this means if Windows are shy to give Linux a chance they are right. They are estimating that Linux won't boot and this will happen in the reality.

August 05, 2021

Why promoting Linux is a bad idea ...

 

The existing computer industry works great. The hardware vendors are producing fast quiet laptops and the software industry provides secure affordable applications. If the customer trust the companies he will in return modern technology which allows him to write documents, play games and watch videos. The only disturbing element are so called Linux users who think they have more knowledge about computing than even the hardware vendor.
A typical Linux user will claim, that a certain notebook has a loud fan. This is simply not possible and the only reason why the fan is on is because something is wrong the user. He is not allowed to install alternative operating systems. Linux users are doing the wrong actions and then they are complaining about so called hardware malfunction.
Normal users which are running only the preinstalled Windows operating system have no such problems. The games on their PC are running smoothly and they doesn't hear any noise. The reason is that these customers have more knowledge about computers. They trust the experts on the field and doesn't try to use their acquired amateur knowledge for ideological arguments.
The best thing what hardware vendors and software companies can do is to ignore Linux users at all. A discussion which operating system is better or if a certain hardware is working together with Linux won't produce an added value but it is a dead end. If Linux users are interesting in understanding how computers are working they should solder together their own computer but they not allowed to spread a bad mood in the online support forums.

March 07, 2020

Small introduction into the Kexi software

The amount of tutorials about the Kexi-project is very low. The official forum has around 200 postings, and even youtube provides less than 5 videos about the topic. At the same time, there is a need for an Open Source desktop database, and Kexi is one of the most promising examples in that direction. The sad news for the beginning is, that the project is in early stadium. It can be called an alpha version which doesn't provide anything. Even MS-Access 2.0 has more features to offer and this program was realized 25 years ago.

But it makes no sense to be too critical. Because all the advanced existing database applications are close source projects and so called web databases on top of PHP and Ajax are very complicated to use and can't replace a desktop database. So i'd like to introduce Kexi to the newbies with some screenshots and explain what the developers have programmed so far.

The program is available in Fedora and Debian as well. According to the official description its an “integrated database environment for the Calligra Suite” and an “visual database applications builder” [1] The program has only a small size. The kexi sourcecode consists of 150k lines of code which is around 4 MB for the program.



The main menu looks exactly like a small project. The user is asked to create tables, forms and reports. The menu bar on top of the screen have no purpose, all the features have to do with tables, forms and reports. At first the user can create a new table. I have done so and the table stores the firstname and the last name of fictional students. Additional a primary key was defined which is incremented in the auto mode.



In the next screen the form editor is shown. Which is a minimalist one. There are some widgets available which can be dropped with the mouse into the form The most important one is the text field which holds the data of the underlying table. The data source can be provided right the properties menu. In contrast to the Gambas software (which is a visual basic clone) the connection between the database table and the form is working great. The user is able to see the data in the form.



The last item in the list is the report generator. This module has less features than the minimalist form generator but the user is able to create simple reports. He can drag and drop text fields, specify the underlying data source and with the printing driver of the Linux operating system it's possible to create a pdf document.



More features are not available. The official Kexi handbook explains mostly what is missing in the project and indeed the software is in an early stage. But compared to other software open source projects, Kexi is my personal favorite. It has to two main advantages. First one is, that the project is going into the right direction. The project goal is to program in C++ and integrated database software which contains of tables, forms, reports and scripting features. The second advantage is, that the code written so far is stable and the user can create a small but working database.

Let us make a simple thought experiment. Suppose enough manpower is provided for this project, and the amount of codelines grows by the factor 10 from today 150k to 1.5 million. Additionally some example .kexi files are provided and the forum gets more traffic. The prediction is, that Kexi will become one of the most interesting Open Source projects since decades. The reason is, that the normal user can do a lot of things with a database RAD tool. The options are endless. If such a software is programmed as open source with open standards in mind it can change the software industry.

I would guess that the next milestone for the project is to bring kexi on the same level like the outdated MS-access 2.0 software. I would guess that today kexi provides around 20% of the features from Access 2.0. Most of the interesting features are missing. But from a technical perspective it's possible to improve the software.

Importing CSV

Under the tab “external data” the user can import existing csv data. I have tested out the feature with an example csv file. [2] It works great. The csv file is converted into a kexi table.

disadvantages

Some major problems are visible with the software. The first one is, that after clicking with the right mouse button on a table and select “Export table as csv” the kexi program crashes without warning. It's not possible to export the table at all. This makes it hard to use the data for external purposes. The second problem is, that kexi has some preinstalled plugins which includes an sqlite driver, but it's not possible to connect to a sql lite database.

It's not clear what exactly the reason is why the important features are not working, but suppose the connection to a sqlite database works, and suppose the export filter gets improved, then the normal user would be able to use Kexi for some smaller databases. It has some advantages over LibreOffice calc to create a dedicated database, and create queries with the SQL language. As far as i can see the sourcecode is available so it would be possible either to contribute to the existing kexi project or fork the project and start a clone.

sources

[1] Debian kexi package, https://packages.debian.org/search?keywords=kexi

[2] CSV sample data, https://people.sc.fsu.edu/~jburkardt/data/csv/csv.html

February 16, 2020

Alternatives to Debian

The Debian distribution is a very influential Linux distribution. It is available since the 1990s and the successful derivative Ubuntu is using Debian packages as the base. I'm sorry to explain, that the Debian ecosystem is no longer stable but it has developed into a failed Linux distribution. Instead of explaining the problems of Debian itself it make sense to describe the situation in the year 2020 if somebody likes to install a webserver. The interesting point is, that a webserver doesn't mean, that somebody booting up a pentium I PC which contains of a CD-rom drive and a magnetic harddrive. Secondly it doesn't mean, that somebody is using an SSD drive in a modern rack mounted server, but it means, that somebody pulls an operating system into a docker container and deploys this into the cloud.[1]

A docker container is a virtualized server. It reduces the costs and has became the defacto standard for all the webservers. In theory, it's possible to install a debian operating system in a docker container but in reality lightweight distrubutions like Alpine Linux were used for this purpose. Alpine Linux is a relative new development. It was first published in 2010 but has become very successful. It's not based on Debian and not on Fedora, but it was developed with a different purpose in mind.

What we can say for sure is, that Debian can't compete with Alpine Linux. Only another Docker-friendly Linux distribution can compete with Alpine Linux. But if Debian is no longer relevant for a text-only webserver, which purpose is fulfilled by the project? Right, it has become obsolete. If the idea is to provide not a cloud webserver but a desktop operating system there are many alternatives to Debian. One is Clear Linux. Clear Linux is very different from classical desktop operating systems. It is working with a combination of highly optimized binary files plus an incremental update mechanism. Similiar to Alpine LInux it's a very new development not available in the past.

We can say in general that the computing industry has changed a lot over the times. Innovations like github, Stackoverflow and Google Scholar were not available 20 years ago. The disadvantage of this development is, that projects from the past will become obsolete. They are not serving the needs of today's programmers anymore. Debian is one example for an outdated project. Similar to Windows XP and Google+ the service has lost it's influence. The Ubuntu operating system which includes the well written Wiki was perhaps the greatest milestone in the long history of Debian. Bye.

[1] Zerouali, Ahmed, et al. "On the relation between outdated docker containers, severity vulnerabilities, and bugs." 2019 IEEE 26th International Conference on Software Analysis, Evolution and Reengineering (SANER). IEEE, 2019.