The Perfect Linux Application

Article by Tolga BALCI (23,398 pts ) , published Nov 7, 2009

In the previous installment of this series we looked at the challenges that a developer faces when building a distribution from scratch. Now we go one step further and look at the application selection.

Applications in the Linux and UNIX-Type Operating Systems

The applications in the Linux and Unix-type (*NIX) operating systems are fundamentally different from other systems. UNIX systems have small applications that do one task and do this task perfectly. You can think about Lego blocks, which one of the blocks are perfect for its task (being rigid, allowing connections and displaying color) but when you combine with the other blocks, the things that you can build are endless. This is the same in Linux and all the UNIX derivates.

The front-ends to the command-line programs bring these powerful small applications together. For example, consider that you have downloaded one application which does not have any dependencies in an rpm-based distribution, say openSUSE. To install this application, you can open up a terminal, switch to root account and type rpm -ivh application.rpm. Or, you can go to YaST, select the downloaded folder as a software source, tick the application’s name and click install. What YaST does is to execute the rpm -ivh application.rpm command and output the results in its window.

When programs get a little complicated, they tend to do the things on their own. For example, consider Datacrow, a media cataloging application that I use to catalog my books, CDs, movies, e-books etc.. It has its own database to store various items, an engine to output PDF/HTML/XML reports, which all are performed within the program.

So we see two fundamentally different application types. For system management you have your Lego blocks, for user-level applications you have self-contained programs. So where does the “perfect application” fit in?

The Perfect Linux Application: System Management

For system management, the perfect Linux application will be CLI-based (Command Line Interface). I do not mean installing/uninstalling programs or tasks a user performs on his personal computer. Rather the tasks that a system administrator will perform, such as monitoring the system state or top ten applications that are using the most system resources. There are graphical user interfaces to many of the command-line programs but none of them can combine the power of combining many commands into one by redirection. If you want a simple example, just think about your Documents folder, which probably contains more than one folder. Now, imagine that you need to have a simple text file that has all the folders and files inside them. How can you do that with a graphical interface? Open each folder, type the folder name and copy->paste the file contents? You must be joking: open up a terminal and type tree ~/Documents > files.txt and have the file.txt that contains all the information you need; in less than a second.

That’s why, contrary to all the criticism, I think that the power of the UNIX-type systems lies in the small applications that does one task perfectly and which can be combined with other CLI-based applications to do complicated tasks in just seconds.

All the command line programs conform to the following universal design principles, making them perfect for system administration:

  • Scalability
  • Efficiency
  • Simplicity
  • Extensibility
Showing page 1 of 2