1.2 Major Open Source Applications

1.2 Major Open Source Applications

Weight: 2

Description: Awareness of major applications as well as their uses and development.

Key Knowledge Areas:

  • Desktop applications

  • Server applications

  • Development languages

  • Package management tools and repositories

The following is a partial list of the used files, terms and utilities:

  • OpenOffice.org, LibreOffice, Thunderbird, Firefox, GIMP

  • Nextcloud, ownCloud

  • Apache HTTPD, NGINX, MariaDB, MySQL, NFS, Samba

  • C, Java, JavaScript, Perl, shell, Python, PHP

  • dpkg, apt-get, rpm, yum

The Linux operating system comprises several different pieces:

  1. Bootloader – The software that manages the boot process of your computer. For most users, this will simply be a splash screen that pops up and eventually goes away to boot into the operating system.

  2. Kernel – This is the one piece of the whole that is actually called ‘Linux’. The kernel is the core of the system and manages the CPU, memory, and peripheral devices. The kernel is the lowest level of the OS.

  3. Init system – This is a sub-system that bootstraps the user space and is charged with controlling daemons. One of the most widely used init systems is systemd, which also happens to be one of the most controversial. It is the init system that manages the boot process, once the initial booting is handed over from the bootloader (i.e., GRUB or GRand Unified Bootloader).

  4. Daemons – These are background services (printing, sound, scheduling, etc.) that either start up during boot or after you log into the desktop.

  5. Graphical server – This is the sub-system that displays the graphics on your monitor. It is commonly referred to as the X server or just X.

  6. Desktop environment – This is the piece that the users actually interact with. There are many desktop environments to choose from (GNOME, Cinnamon, Mate, Pantheon, Enlightenment, KDE, Xfce, etc.). Each desktop environment includes built-in applications (such as file managers, configuration tools, web browsers, and games).

  7. Applications – Desktop environments do not offer the full array of apps. Just like Windows and macOS, Linux offers thousands upon thousands of high-quality software titles that can be easily found and installed. Most modern Linux distributions (more on this below) include App Store-like tools that centralize and simplify application installation. For example, Ubuntu Linux has the Ubuntu Software Center (a rebrand of GNOME Software) which allows you to quickly search among the thousands of apps and install them from one centralized location.

Desktop Applications

Modern GUI Linux distributions bundle with essential applications to help users get started without much of a hassle. This means that you don’t need to install them in the first place.

Despite that, developers are constantly coming up with newer and more innovative applications which streamline workflows and make the life of the ordinary desktop user much easier. Here, we look at some of the most essential applications for desktop Linux users.

Open Office

Apache OpenOffice is a free, open-source office software suite that serves as a powerful alternative to proprietary suites like Microsoft Office; it includes applications for word processing (Writer), spreadsheets (Calc), presentations (Impress), drawing (Draw), databases (Base), and mathematical formula creation (Math), providing users with a comprehensive set of tools for most common document and data tasks without any cost.

LibreOffice Suite

LibreOffice suite is a feature-rich and user-friendly office suite that is a perfect alternative to Microsoft Office. It bundles a number of office productivity applications including Writer (Word processing), Impress (Presentations), Draw ( Flowcharts and drawing), Math (Formula editing), and Base (Databases).

LibreOffice uses the ODF (Open Document Format) by default. However, it can still open and save Microsoft Office-compatible files.

Thunderbird Email Client

Mozilla Thunderbird is a free and open-source email client developed by Mozilla Foundation. It’s a small, lightweight, and cross-platform email client that can be installed on Linux, Windows, and macOS 10.12 and later versions.

It provides a neat and intuitive UI that allows users to easily add and manage email accounts. The setup wizard is simple and lets you add your account with ease. It supports mail servers that use IMAP and POP, although IMAP is the default protocol. To use POP, you must manually configure it.

Thunderbird provides an array of features including support for RSS feeds, search tools, smart folders (for instance inbox, sent & Archive folders) robust privacy, phishing protection, and tabbed email that loads emails in separate tabs. Moreover, it provides a backup feature that allows you to retrieve deleted emails.

Firefox Browser

While Google Chrome commands an impressive 65.86% of the web market share, it is not without its shortcomings. It is notorious for high CPU and RAM (Random Access Memory) utilization which causes a resource deficit that consequently slows down other applications on your system.

Thankfully, modern Linux distributions ship with the Firefox browser, which, in fact, is the default browser. It is more private, and secure and embraces the open-source philosophy which is essentially what Linux is built on. It has made its source code open for anyone to use and modify provided it adheres to the Mozilla License policy.

GIMP

GIMP, short for GNU Image Manipulation Program, is a free and open-source image manipulation/image retouching tool. It’s an extensible tool that offers multiple capabilities. For example, you can use it as a simple paint program, image refining tool, image renderer and so much more.

GIMP offers a myriad of image editing functionalities including free-form drawing, image editing, transcoding between different image file formats, and many more complex tasks.

It can be enhanced using plug-ins and extensions to do just about anything. Its advanced scripting interface enables you to perform anything; from the simplest of tasks to the most complex image editing operations.

It’s a great alternative to Photoshop given its small installation size and support for Photoshop plugins.

VLC Media Player

Another essential application that every Linux desktop user should consider having is the VLC media player, which is a free, open-source, cross-platform media player that amassed a huge liking over the years due to its simplicity and ease of use.

VLC is a powerful media player and framework that supports a vast array of multimedia formats including MP3, MP4, Wav, FLV, MPEG, MKV, WMA, OGG, and many others.

The media player allows you to do several other things including streaming from YouTube, creating playlists, and listening to podcasts and online radio stations


NextCloud

Nextcloud allows you to manage your data on your own cloud server without having to hand over data sovereignty to companies such as Google or Apple. With Nextcloud, companies without an IT department, as well as private individuals, benefit from the advantages of a location- and device-independent cloud on their own private or hosted servers.

Nextcloud is a high-performance, non-commercial cloud software used for self-hosting and cloud computing, which is suitable for both private and business purposes. The software is a fork, i.e., a parallel development branch of the OwnCloud project. OwnCloud and Nextcloud serve as open-source alternatives to commercial cloud storage, such as Amazon AWS, Google Drive or iCloud. The same development team around founder and developer Frank Karlitschek is behind both cloud solutions. Just like OwnCloud, Nextcloud is available in a free, comprehensive version as well as a paid enterprise solution.


Server Applications

Apache HTTPD

Ever wondered how a website loads when you enter a URL in your browser? In the background, web servers serve your requests and send you the content you view. One of the most popular web servers is Apache HTTP Server, commonly referred to as simply Apache. Apache is the top choice for websites and applications worldwide due to its open-source, reliable, secure, and highly customizable.

What is Apache HTTP Server?

Apache HTTP Server is an open-source and free web server that is written by the Apache Software Foundation (ASF). It is among the most widely used web servers, serving millions of websites on various platforms such as Linux, Windows, and macOS, and forms an integral part of the LAMP stack (Linux, Apache, MySQL, PHP), which is commonly utilized for web hosting and development.

Nginx

NGINX, pronounced as “engine-x,” is an open-source web server software used for reverse proxy, load balancing, and caching. It gained widespread popularity in the world of web hosting and application delivery.

Originally created by Igor Sysoev in 2004, Nginx has since become an essential component in the technology stack of many websites and online services due to its impressive performance, scalability, and rich feature set.

Nginx Plus

Nginx Plus is the commercial, paid version of the popular Nginx open-source software. It is built directly on the same core as the open-source version but is enhanced with enterprise-grade features aimed at large-scale, mission-critical applications. Think of it as a premium product that includes official support from the company behind Nginx (now F5), advanced load balancing, application monitoring, configuration management tools, and professional services, making it suitable for businesses that require high reliability, security, and easier management.


Database

My SQL

MySQL is an open-source, relational database management system (RDBMS) that uses Structured Query Language (SQL) to manage and manipulate data. It is one of the most popular database systems used in web applications, known for its speed, reliability, and ease of use. MySQL is commonly used in conjunction with programming languages such as PHP, Java, and Python to build dynamic websites and applications.

MariaDB

MariaDB is an open-source relational database management system. As with other relational databases, MariaDB stores data in tables made up of rows and columns. Users can define, manipulate, control, and query data using Structured Query Language, more commonly known as SQL.

MariaDB is a fork of MySQL, and thus the two share many features and design choices. Interestingly, MariaDB’s lead developer is Michael Widenius — the original author of MySQL — and MariaDB is named after Widenius’s younger daughter Maria, similar to how MySQL is named after his older daughter, My.


NFS

The Network File System (NFS) is a mechanism for storing files on a network. It is a distributed file system that allows users to access files and directories located on remote computers and treat those files and directories as if they were local.

For example, users can use operating system commands to create, remove, read, write, and set file attributes for remote files and directories.

Network File System (NFS) is a collaboration system developed by Sun Microsystems in the early 80s. The first version of NFS was used as an internal process for Sun employees, and it wasn’t until NFS version 2 (NFSv2) was released that the public could start to benefit from its features. When NFS version 2 was released to the public, it was used extensively for file sharing, particularly with UNIX operating systems. This was followed by NFSv3, NFSv4, NFSv4.1 and NFSv4.2, with each version introducing significant improvements in performance, security and scalability. The latest versions support larger files and has many other fueatures.

Server Message Block (SMB)

Samba

Samba is an open-source software suite that allows Linux and other Unix-like systems to share files and printers with Windows clients using the Server Message Block (SMB) protocol. It is a standard tool for integrating different operating systems on a network by providing file and print services, acting as a domain member, or even functioning as a domain controller in a Windows Active Directory environment.


Development languages

What is a Programming Language?

A programming language is a set of instructions, written in a specific syntax, that tells a computer what tasks to perform and how to perform them. By mastering a programming language, you can create software applications, websites, and other digital tools.

Types of Programming Languages

Programming languages are classified based on their level of abstraction:

  • High-Level Languages: Human-readable and are portable across computers. Examples: Python, Java, JavaScript. They need a compiler or interpreter to run.

  • Low-Level Languages: Close to machine code, giving more control over hardware but harder to write. Examples: Machine code.

  • Assembly Languages: A mix between high- and low-level, using simple symbolic instructions for a computer. An assembler converts it into machine code.

C

C is a fundamental and powerful programming language often called the "mother of modern programming." It was created in the early 1970s at Bell Labs by Dennis Ritchie to develop the UNIX operating system. Because it allows programmers to give instructions very close to the machine's hardware, it is extremely fast and efficient. This is why C is still widely used today for building operating systems (like Windows and Linux), embedded systems (in cars, appliances, and microcontrollers), and performance-critical applications like game engines and databases. Learning C helps you understand how a computer really works.

Shell

A shell scripting language is used to write a series of commands for a computer's operating system to execute automatically. It's not a single language but a family of languages, with Bash (Bourne-Again SHell) being the most common on Linux and macOS. Shell scripting originated with the first Unix shells in the 1970s. It is primarily used for automating repetitive command-line tasks, such as file management, program execution, and system maintenance. For system administrators and developers, shell scripts are essential tools for gluing together other programs and automating workflows.

Python

Python is a high-level programming language praised for its clear, readable syntax that almost looks like plain English. It was created by Guido van Rossum and first released in 1991. Python's design philosophy emphasizes code readability and a simplicity that allows programmers to express concepts in fewer lines of code. This has made it incredibly popular for beginners and experts alike. It is a general-purpose language used in web development (with frameworks like Django), data science, artificial intelligence, machine learning, scientific computing, automation, and scripting. Its large collection of libraries makes it a versatile tool for almost any project.

Perl

Perl is a highly practical and flexible scripting language known for its powerful text-processing capabilities. It was created by Larry Wall in 1987. Perl's motto is "There's More Than One Way To Do It" (TMTOWTDI), which highlights its design goal of giving programmers freedom. It became extremely popular in the early days of the web for writing Common Gateway Interface (CGI) scripts to make websites dynamic and for system administration tasks. While its use in web development has decreased, Perl remains a strong tool for quick scripting, parsing log files, and in the bioinformatics field.

PHP

PHP is a server-side scripting language designed specifically for web development. It was created by Rasmus Lerdorf in 1994 to manage his personal homepage (which is what "Personal Home Page" originally stood for). PHP code is executed on the web server, and it generates HTML which is then sent to the user's browser. It was one of the key technologies that powered the dynamic web in the early 2000s and remains the backbone of many content management systems like WordPress. PHP is great for creating dynamic web pages that interact with databases, and it continues to be a widely used language for building websites and web applications.

Java

Java is a popular language designed with the principle of "write once, run anywhere." It was created by James Gosling at Sun Microsystems in 1995. The key idea behind Java is that you compile your code into a special format called bytecode, which can then run on any device that has a Java Virtual Machine (JVM). This makes it very versatile and platform-independent. Java is heavily used for building large-scale enterprise applications, server-side development for big companies, and Android mobile app development. It is known for being robust, secure, and object-oriented.

JavaScript

JavaScript is the language that makes websites interactive and dynamic. It was created by Brendan Eich in just 10 days in 1995 while he was working at Netscape. Despite its name, it is not related to Java; the name was chosen for marketing reasons. JavaScript runs directly in a web browser and allows developers to update content, animate images, and respond to user clicks without needing to reload the page. Today, with the help of platforms like Node.js, it is also used for building full-featured web servers and backend applications, making it one of the most essential languages for web development.


Installing software on Linux

Just as the operating system itself is easy to install, so too are applications. Most modern Linux distributions include what most would consider an app store. This is a centralized location where software can be searched and installed. Ubuntu Linux (and many other distributions) rely on GNOME Software, Elementary OS has the AppCenter, Deepin has the Deepin Software Center, openSUSE has their AppStore, and some distributions rely on Synaptic.

Regardless of the name, each of these tools do the same thing: a central place to search for and install Linux software. Of course, these pieces of software depend upon the presence of a GUI. For GUI-less servers, you will have to depend upon the command-line interface for installation.

Let’s look at two different tools to illustrate how easy even the command line installation can be. Our examples are for Debian-based distributions and Fedora-based distributions. The Debian-based distros will use the apt-get tool for installing software and Fedora-based distros will require the use of the yum tool. Both work very similarly. We’ll illustrate using the apt-get command. Let’s say you want to install the wget tool (which is a handy tool used to download files from the command line). To install this using apt-get, the command would like like this:

The sudo command is added because you need super user privileges in order to install software. Similarly, to install the same software on a Fedora-based distribution, you would first su to the super user (literally issue the command su and enter the root password), and issue this command:

That’s all there is to installing software on a Linux machine. It’s not nearly as challenging as you might think.

That's all.

.

.

.


sources: https://www.tecmint.com/essential-linux-desktop-applications/ https://www.geeksforgeeks.org/linux-unix/what-is-apache-server/ https://www.geeksforgeeks.org/operating-systems/what-is-nginx-web-server-and-how-to-install-it/ https://medium.com/@sami.alesh/what-is-nginx-7db76b2e79f8 https://www.oracle.com/database/what-is-database/ https://www.ionos.com/digitalguide/server/tools/what-is-nextcloud/ https://www.linux.com/what-is-linux/

Last updated