Kernel: The kernel is a program that constitutes the central core of a computer operating system. It has complete control over everything that occurs in the system. The kernel is the first part of the operating system to load into memory during booting (i.e., system startup), and it remains there for the entire duration of the computer session because its services are required continuously. Thus it is important for it to be as small as possible while still providing all the essential services needed by the other parts of the operating system and by the various application programs. The kernel provides basic services for all other parts of the operating system, typically including memory management, process management, file management, and I/O (input/output) management (i.e., accessing the peripheral devices). These services are requested by other parts of the operating system or by application programs through a specified set of program interfaces referred to as system calls. When a computer crashes, it actually means the kernel has crashed. If only a single program has crashed but the rest of the system remains in operation, then the kernel itself has not crashed. A crash is a situation in which a program, either a user application or a part of the operating system, stops performing its expected function(s) and responding to other parts of the system. The program might appear to the user to freeze. If such program is critical to the operation of the kernel, the entire computer could stall or shut down. Every computer system includes a kernel. This is not only true for Linux but also true for Microsoft Windows as well as Apple OSX.
Fork: The term Fork is used in Linux a lot but is not limited to Linux and can happen with any open-source code. It simply means that one developer has decided that he or she does not like the way a software direction is going and wants to take the program in another direction in future releases. This usually happens when the original developer introduces major changes that not all would agree on or the original developer does not have the time to work on the project and code is abandoned so someone else will use the original code to create their own vision.
Linux Distribution (Distro): A Linux distribution (often abbreviated as distro) is an operating system made from a software collection, which is based upon the Linux kernel and, often, a package management system. Linux users usually obtain their operating system by downloading one of the Linux distributions, which are available for a wide variety of systems ranging from embedded devices (for example, OpenWrt for Internet routers) and personal computers (for example, Linux Mint) to powerful supercomputers (for example, Rocks Cluster Distribution). A typical Linux distribution comprises a Linux kernel, GUI (Graphical User Interface) tools and libraries, additional software, documentation, a window system (the most common being the X Window System), a window manager, and a desktop environment. Most of the included software is free and open-source software made available both as compiled binaries and in source code form, allowing modifications to the original software. Usually, Linux distributions optionally include some proprietary software that may not be available in source code form, such as binary blobs required for some device drivers. A Linux distribution may also be described as a particular assortment of application and utility software (various GUI tools and libraries, for example), packaged together with the Linux kernel in such a way that its capabilities meet the needs of many users. The software is usually adapted to the distribution and then packaged into software packages by the distribution’s maintainers. The software packages are available online in so-called repositories, which are storage locations usually distributed around the world. Beside glue components, such as the distribution installers (for example, Debian-Installer and Anaconda) or the package management systems, there are only very few packages that are originally written from the ground up by the maintainers of a Linux distribution.
Operating System (OS): An operating system (OS) is system software that manages computer hardware and software resources and provides common services for computer programs. Time-sharing operating systems schedule tasks for efficient use of the system and may also include accounting software for cost allocation of processor time, mass storage, printing, and other resources. For hardware functions such as input and output and memory allocation, the operating system acts as an intermediary between programs and the computer hardware, although the application code is usually executed directly by the hardware and frequently makes system calls to an OS function or is interrupted by it. Operating systems are found on many devices that contain a computer – from cellular phones and video game consoles to web servers and supercomputers. The operating system uses the kernel to perform these tasks. Ubuntu, Windows, and Apple OS X are all operating systems that provide a platform to run programs.
Linux Desktop Environments (DE): In computing, a desktop environment (DE) is an implementation of the desktop metaphor made of a bundle of programs running on top of a computer operating system, which share a common graphical user interface (GUI), sometimes described as a graphical shell. The desktop environment was seen mostly on personal computers until the rise of mobile computing. Desktop GUIs help the user to easily access and edit files, while they usually do not provide access to all of the features found in the underlying operating system. Instead, the traditional command-line interface (CLI) is still used when full control over the operating system is required. A desktop environment typically consists of icons, windows, toolbars, folders, wallpapers and desktop widgets. A GUI might also provide drag and drop functionality and other features that make the desktop metaphor more complete. A desktop environment aims to be an intuitive way for the user to interact with the computer using concepts which are similar to those used when interacting with the physical world, such as buttons and windows. While the term desktop environment originally described a style of user interfaces following the desktop metaphor, it has also come to describe the programs that realize the metaphor itself. This usage has been popularized by projects such as K Desktop Environment (KDE), Mate and GNOME.
Window Manager: On a system that offers a desktop environment, a window manager in conjunction with applications written using a widget toolkit are generally responsible for most of what the user sees. The window manager supports the user interactions with the environment, while the toolkit provides developers a software library for applications with a unified look and behavior. A windowing system of some sort generally interfaces directly with the underlying operating system and libraries. This provides support for graphical hardware, pointing devices, and keyboards. The window manager generally runs on top of this windowing system. While the windowing system may provide some window management functionality, this functionality is still considered to be part of the window manager, which simply happens to have been provided by the windowing system. Applications that are created with a particular window manager in mind usually make use of a windowing toolkit, generally provided with the operating system or window manager. A windowing toolkit gives applications access to widgets that allow the user to interact graphically with the application in a consistent way.
X-Windows,Wayland and Mir: The X Window System (X11, or shortened to simply X. Not to be confused with Apple OSX) is a windowing system for bitmap displays, common on Linux operating system. X provides the basic framework for a GUI environment: drawing and moving windows on the display device and interacting with a mouse and keyboard. X does not mandate the user interface – this is handled by individual programs and desktop managers. As such, the visual styling of X-based environments varies greatly; different programs may present radically different interfaces. X originated at the Massachusetts Institute of Technology (MIT) in 1984. The protocol has been version 11 (hence “X11”) since September 1987. The X.Org Foundation leads the X project, with the current reference implementation, X.Org Server, available as free and open source software under the MIT License and similar permissive licenses.
Wayland is the new replacement windowing system for Linux. Wayland is developed by a group of volunteers initially led by Kristian Høgsberg as a free and open community-driven project with the aim of replacing the X Window System with a modern, simpler windowing system in Linux and other Unix-like operating systems. The project’s source code is published under the terms of the MIT License, a permissive free software license. As part of its efforts, the Wayland project also develops a reference implementation of a Wayland compositor called Weston.
Mir was a computer display server for the Ubuntu operating system that is under development by Canonical Ltd. (company that owns Ubuntu) It was planned to replace the currently used X Window System for Ubuntu, however the plan changed and Wayland was adopted for the next releases of Ubuntu.
Relationship between Linux kernel, Ubuntu OS and the desktop environment
To better explain the relationship between the kernel, OS and desktop environment in Linux we will explain this in diagram 1.0 below:
Diagram 1.0: Relationship between Linux Kernel, Ubuntu OS and Desktop Environment.
Linux kernel will act as the startup agent that talks to all the hardware in your system. Ubuntu OS will be loaded right after the boot process and relays the commands and setups to kernel. The desktop environment is the platform the displays your graphical user interface (GUI) which runs the windows and all the applications.
This setup will enable to you run more than one desktop environment on the same Ubuntu system. For example you can run KDE, Mate and Gnome on the same system but you have to choose which desktop environment the OS will display at the login screen. X windows or Wayland is the protocol that connects Ubuntu OS to DE and allows the graphical interface to be displayed.