Major open source applications

The Linux ecosystem has a wide variety of desktop applications. The basic productivity applications known as an office suite are very important. LibreOffice is a successor to OpenOffice.org, commonly known as OpenOffice, which in turn was based on StarOffice. Today, LibreOffice is by far the most active continuation of the OpenOffice.org. Also, it is included by default in many Linux distributions. LibreOffice is compatible with a wide range of document formats such as Microsoft's Word (.doc, .docx), Excel (.xls, .xlsx), PowerPoint (.ppt, .pptx) and its native support for the Open Document Format (ODF). You can export your work in many different formats including PDF. LibreOffice is a powerful and free office suite that includes Writer (word processing), Calc (spreadsheets), Impress (presentations), Draw (vector graphics and flowcharts), Base (databases), and Math (formula editing). Thunderbird is a free and open source email and calendaring client, that's easy to set up and customize. Thunderbird is an independent project with its legal and financial home at the Mozilla Foundation. The Mozilla Foundation is also the sole shareholder in the maker of Firefox, the Mozilla Corporation. Mozilla Firefox (or simply Firefox) is a free and open-source web browser that is fast, feature rich, and have excellent support for web developers. Firefox is included by default in many Linux distributions. For the creative types, there is GIMP. GIMP is an acronym for GNU Image Manipulation Program. It is a free program for such tasks as photo retouching, image composition and image authoring.

Nextcloud and ownCloud are open source file sync and share software. They provide a file synchronization and sharing solution on servers that you control. Today, most people have their digital life stored on online servers from various companies like Google, Apple, Facebook, Instagram and many others. Some people prefer to have more control over who gets to see their photos or who gets to read their documents. This is where Nextcloud, ownCloud and similar technologies come in. ownCloud was founded by Markus Rex, Holger Dyroff and Frank Karlitschek, but Karlitschek left and founded a new company and project called Nextcloud with some former ownCloud developers.

Linux excels at running server applications because of its reliability and efficiency. One of the early uses of Linux was for web servers. The Apache HTTP Server, colloquially called Apache, is the dominant web server in use today. The Apache HTTP Server is a project of The Apache Software Foundation. Another web server is nginx, pronounced "engine x", originally written by Igor Sysoev. Over 60% of all websites are powered by either nginx or Apache. The most popular databases are MariaDB and MySQL. MariaDB is made by the original developers of MySQL and guaranteed to stay open source. A database stores information and also allows for easy retrieval and querying. The native file sharing protocol for UNIX is NFS (Network File System). For file sharing with Microsoft Windows, Samba is the standard interoperability suite for Linux and Unix. Samba allows a Linux machine to look like a Windows machine so that it can share files and participate in a Windows domain.

Linux has excellent support for software development. Many development languages are supported. There are also many development tools available and included on every system. Linux itself was written in a language called C. The Java language takes a different compile approach. It is intended to let application developers write once, run anywhere, meaning that compiled Java code can run on all platforms that support Java. JavaScript was introduced as a way to add programs to web pages in the browser. The language has been adopted by all major graphical web browsers. It has made modern web with which you can interact. It is important to note that JavaScript has almost nothing to do with the Java language. The similar name was inspired by marketing considerations. Perl is a language originally developed for text manipulation and now used for a wide range of tasks including system administration and more. The language is intended to be practical rather than beautiful. Python language combines remarkable power with very clear syntax and it is also portable. It runs on many Unix variants, on the Mac, and on Windows 2000 and later. PHP is a language that is especially suited for web development and can be embedded into HTML. The main goal of the language is to allow web developers to write dynamically generated web pages. PHP is mainly focused on server-side, but you can do much more. The shells are built to be programmable. At the basic level, you interact with a Linux system through a shell. The shell's job is to accept commands and to pass those to the Linux kernel for execution. Linux offers a variety of shells to choose from. The first Unix shell was the sh, written by Ken Thompson, but the most widely distributed and influential of the early Unix shells were the Bourne shell and the C shell. There are more modern versions, the Bourne-Again shell (bash) and the TENEX C shell (tcsh). bash can be found installed and is the default interactive shell for users on most Linux systems. Z shell (zsh) is a relatively modern shell. It's the default shell in macOS since 10.15 Catalina.

In Linux, there are many different package management tools, but the two most popular are from Debian and Red Hat distributions. Package management tool can install, update or remove software, and track dependencies between packages. Tracking dependencies ensures that when you install a package, the system will also install any packages needed by that package to function correctly. Dependencies also ensure that software updates and removals are performed properly. Debian distribution and its derivatives use the Debian package manager. For Debian and Debian-derived distributions, software packages are files ending in '.deb'. The tool for managing these files is the dpkg. apt makes management of packages even easier. There are other tools as well. The Debian repositories contains more than 59000 packages of software. To update packages listings from package repositories, execute

apt update

To install packages from repositories with all dependencies, execute

apt install package-name

If you want to install newest versions of all packages currently installed, execute

apt upgrade

If you want to remove packages, execute

apt remove package-name

For Red Hat and Red Hat-derived distributions, software packages are files ending in '.rpm'. The tool most commonly used for '.rpm' is the rpm. While the rpm can install, update and remove packages, tools such as yum automate the process of resolving dependency issues. If you want to update all packages, execute

yum update

To install a package, along with its dependencies, execute

yum install package-name

If you want to remove package, execute

yum remove package-name