Improvements to the Linux ecosystem
Linux dominates server computing, supercomputing and mobile device computing but has yet to become the dominator of personal computer. The purpose of this publication is to point out flaws and suggest ways to improve Linux and related software so that it may increase its personal computing market share.
Linux distributions have not reached a stage where most aspects can be configured using a graphical user interface. In order to configure most pieces of software and the system as a whole the user has to manually edit text files of varying complexity. Nontechnical users can not be expected to configure their system without setup assistants.
Linux follows the Filesystem Hierarchy Standard (FHS) which was influenced by older UNIX conventions. Compliance with the FHS varies between Linux distributions and software packages frequently violate it.
The directory structure laid out by the FHS can be a hindrance to novices as many of the directories have vague or historical names. It is unnecessary to rely so much on abbreviations as the FHS does considering that modern file systems can handle long paths.
Display server protocol
Linux has relied on the X Window System for two decades out of necessity but due to its limited functionality most agree that a change is needed. Its intended replacement, Wayland, is actively being developed and is already being put to the test by Fedora 25. Canonical is working on a protocol called Mir due to its NIH syndrome but it is not expected to go anywhere beyond Ubuntu and will most likely be dropped entirely and replaced by Wayland when it has reached maturity. The sooner Wayland takes over and all remnants of the X Window System are removed the better for the Linux ecosystem.
Linux and software running on it is generally poorly documented and a massive effort is needed to rectify the situation. For nontechnical users, man-pages are of no use as they are typically written by experts for experts. It just so happens that the Arch Linux community provides some of the best documentation available, probably because of its DIY mentality.
Most major Linux distributions utilise either dpkg or RPM Package Manager (RPM). They are incompatible with each other and quite out-dated. Because of their limitations users rely on multiple levels of front-ends to interact with them. Linux is in serious need of a modern unified package manager.
Most major Linux distributions enforce the naming convention that software packages primarily consisting of software libraries have the prefix "lib" in their name. This rule adds little to the package name and seems arbitrary since packages primarily consisting of documentation are not prefixed with "doc", executables are not prefixed with "exe" and so on. It is easy to browse the contents of packages and discover what they are about. This also has the consequence that when packages are listed alphabetically most end up under the letter L.
Package repository management
Most major Linux distributions maintain their own software repositories which duplicates a lot of packaging work. A central repository for Linux distribution would benefit all as many packages do no need any tinkering to work on different distributions. Larger distributions could maintain secondary repositories for proprietary software packages and packages that require considerable modification or configuration to run on those distributions.
Linux inherited init from Unix like so many other components and stuck with it for two decades but due to its limited functionality and lack of features most agreed that a change was needed. The first major attempt was Ubuntu's Upstart but it has been abandoned in favour of Fedora's systemd. Concerns have been raised over the design of systemd largely due to the large scope of the project but they have been mostly doctrinal rather than technical in nature. In order to simplify the lives of Linux users it is important that major Linux distributions transition from init to systemd as quickly and cleanly as possible and that all remnants of init be removed.