All actions in the operating system are performed using specially designed programs and applications. Linux is a popular operating system for embedded and IoT projects, and there are hundreds of Linux distributions — systems based on the Linux kernel. But unfortunately, the number of ready-to-use apps running on Linux is much lower compared to those for Windows or macOS. Therefore, there’s enough space to work for both newbies and experienced developers who want to try their hands at creating unique and useful apps for Linux users.
Why are there few apps for Linux?
When you develop an application for Windows, you only need to test it on a few systems: the latest and the previous versions of Windows, and, if your application is designed for very slow running, you may also need to test it on the version before. This is a relatively simple process.
Linux has an ocean of different versions (over 600) known as distributions. Even if you identify with the most famous of them, that could mean supporting half a dozen distributions. Let’s say you decide to only support Ubuntu, the most popular version on PC. With Ubuntu’s release schedule meaning an update every six months, this is a rather challenging task.
Another issue is an unclear financing model. The philosophy behind Linux is the concept of software freedom, i.e., the source code must be visible and freely redistributable. This is the only known way to make sure apps don’t do anything suspicious and give users the right to take ownership of their devices.
As a result, it is difficult to directly charge for applications. You can sell the app under a free software license, but because the code is in the public domain, there’s nothing to stop someone else from compiling and distributing another copy of your app for free. Thus, teams developing Linux and related applications had to experiment with different ways of funding their work.
Languages and tools for Linux app development
If you are planning to develop an application that you lack on Linux, you should take into account one important nuance: most Linux distributions do not regulate the technologies that can be used to develop software. This means that you can use any available programming language, graphical toolkit, multimedia framework, or database server, taking care only that your application functions correctly in most distributions.
There are many programming languages for Linux. But developers don’t use all of them with equal frequency, because to create a reliable, flexible, efficient, and most importantly, secure application, you need to choose the right language. The following is a list of the most popular options.
C
C is a simple, portable programming language that is used to develop software for a wide range of devices, from servers to embedded devices. It was designed in the 1970s specifically for the Unix kernel (basis of Linux). In those days, programs and operating systems were written in Assembler, and it was necessary to write a program for each architecture separately, because the instruction sets were different. The Unix developers needed a high-level programming language in which they could write Unix once and build it for all platforms. C became such a language.
C++
However, for writing modern Linux programs, C is more rarely used. It has been replaced by its objectively oriented modification, C++. This is an improved version of C, which appeared not much later than C. In 1980, Bjarne Stroustrup was working on his research and was missing standard C features, so he came up with a couple of improvements to it. Suddenly, this language became popular among his colleagues, and he could no longer follow its development himself.
C and C++ are the most popular programming languages for Linux.
Python
There are a number of system scripts and utilities written in Python for managing Linux. This is the apt utility for installing software on Ubuntu, the Emerge package manager in Gentoo, and a huge number of small scripts. The reason for this is the simplicity of the language. A Linux developer spends several hours on creating a program in Python, and it works fine for several years.
Perl
A lot of the old Linux code is written in Perl. These are various kernel build scripts, parts of the dpkg package manager, init system scripts, and much more. Of the modern programs written in Perl, one can note the script for viewing information about the inxi system. As a rule, everything new is written in Python, but there is not much point in rewriting the old.
Besides languages, you need an appropriate integrated development environment (IDE) for easy and convenient coding. Among the best environments for Linux app development are Eclipse, Bluefish, NetBeans, Komodo IDE, and more.