This page will guide you to material that will help you get started as a Linux® programmer or Linux system administrator.
The Linux zone of developerWorks contains hundreds of articles, tutorials, and tips to help developers with Linux programming and application development, as well as Linux system administration.
But if you are trying to find your way in a new topic, all of that information can be overwhelming. This New to Linux page provides an overview for readers who would like to learn about Linux but don't know where to start. It places all the Linux basics in context and ties together relevant developerWorks articles, tutorials, and tips, as well as IBM learning services education, workshops, and IBM products for your further investigation.
In the simplest terms, Linux is an operating system. It was created in October 1991 by a University of Helsinki student named Linus Torvalds (Linux stands for Linus's UNIX). Linux itself is actually just the kernel; it implements multitasking and multiuser functionality, manages hardware, allocates memory, and enables applications to run.
The average user will never be interested enough in any operating system to want to know about things like kernel internals. Only the truly dedicated -- those who have no personal lives, or those who are being paid to do this kind of work -- are going to want to explore these intricacies.
But even if you never descend to the giddy depths of kernel hacking yourself, it is reassuring to know that you can easily hire a contractor or firm to do this work for you; to commission such modifications for a proprietary system is very often a more difficult and more costly undertaking.
For the novice to Linux programming, probably the most important thing about the kernel that you need to remember is that odd-numbered kernel versions (in other words, 2.3, 2.5, 2.7) are the experimental, development kernel. Stable, release kernels carry even numbers (in other words, 2.4, 2.6, 2.8).
A typical Linux distribution includes the Linux kernel, but it also contains many application programs and tools. For the most part, many system- and user-level tools found in a Linux distribution come from the Free Software Foundation's GNU project (GNU standing for "GNU's Not UNIX").
Both the Linux kernel and the GNU tools suite are released under the GNU General Public License, or GNU GPL. If you are not already familiar with the GNU GPL, the best way to begin to understand it is to go and read it. At the risk of summarizing away some important parts, the GNU GPL is a way of setting computer code free so that the people who use that code may meddle and experiment with it to their hearts' content.
Linux is not UNIX, although it is intended to be very UNIX-like. IBM has offerings in both the Linux and the UNIX spheres—as well as many others. Invented at AT&T Bell Labs in 1969, UNIX (the name is a play on the earlier "Multics" operating system) is a robust, flexible, and developer-friendly computing environment. Written originally for the Digital Equipment Corporation (DEC) family of PDP microcomputers, this most popular of multi-user, general-purpose operating systems has taken over roles in all areas of computing -- even those once held by mainframes.
IBM has offerings in both the Linux and the UNIX spheres -- as well as many others.
Some twenty-odd years into its history, UNIX began to be eclipsed -- in some of its roles, anyway -- by Linux. Linux is not UNIX; it is merely very UNIX-like. For some jobs, you want Linux -- for others, you still want UNIX. UNIX and Linux play very well together, and well-written programs are extremely easy to port between the two systems. For more information about UNIX at IBM, please see some of the following sites.
Because it is free software, licensed under the GNU General Public License, Linux obviates the need for programmers to keep reinventing the operations layer with each new project. To wax metaphorical, the GNU family of tools provide royalty-free bricks and mortar with which to begin building independent projects. Critics of free software often voice fears that the freedoms and low cost of free software will lead to economic disaster for the computing sector. However, it is just as likely -- if not more likely -- that free software will do for the world of computing what Gutenberg's printing press did for the world of Letters.
What you want out of your Linux system will determine which Linux system you want and how many layers of complexity you need to understand before you begin to work with it.
Linux is an excellent platform on which to learn Linux programming, kernel hacking, or even UNIX programming; many tools and applications are available to play games, to do desktop publishing, or just to hang out doing e-mail and Web browsing.
It is also an excellent platform for working systems, both open and closed, because it is so heavily customizable for free. Linux is a popular platform for everything from middleware to embedded computing and clusters, to parallel supercomputers and gadgets. IBM has been involved in projects to manufacture cash registers that run on Linux, as well as the Linux wristwatch. Other developers have used Linux on such devices as cell phones, Sony PlayStation, TiVo, and the Sharp Zaurus.
While the GNU General Public License requires altered code to be released to the customers who use it, it is not required that all altered code be released to the general public (this is a key point that some critics of free software fail to grasp). Indeed, in the case of Linux-based cash registers, it would in all likelihood be a security risk to release the code to a wide audience. The GNU GPL merely requires that the modified code be made available to the customers who use it.
If you are completely new to Linux, or if you are using Linux as a desktop operating system, you need to learn at least some basics about system administration and security. Unlike commercial personal operating systems that attempt to automate such operations, Linux does not promise to hold your hand or to clean up after you: you have to take care of the system yourself. Luckily, basic maintenance and basic security are pretty easy. In many ways, Linux and UNIX administration is today much easier than administration for popular commercial personal operating systems because it is much more transparent.
While Linux does have several windowing environments that allow you to perform administration, the most straightforward way to control the system is at the command line. Built in to the structure of the command-line environment are dozens of commands and several text-based help systems.
There are a great many resources on the Web and in the real world to help you get started with Linux. There are Web sites, articles, and books devoted to the subject, and Linux User Groups (also known as LUGs) meet in cities and countries around the world -- and are well-known for being very friendly even to very new users.
Linux is an excellent choice as a programming platform. It is GCC compliant, which means that you can use the GNU Project's excellent suite of programming and debugging tools -- absolutely free, and with all of the freedoms that the GNU GPL guarantees. Commercial programming packages, like commercial operating systems, can cost a great deal of money. True, they are often needed for one project or another and can be well worth the cost, but for a beginner or a learner -- and for many professionals -- free software is simply irreplaceable. If you are using Linux as a development platform, do not skip first learning administration and security. It is a foolish programmer indeed who is not master of his or her own computer.
Linux is by nature standards compliant. Linux developers as a rule place very high importance on keeping the operations layer, as well as those built atop it, open, interoperable, and standards friendly.
In addition to steadfast stalwarts like Fortran and C/C++, many scripting and other computer languages are at home on (or were even designed to work best with) Linux. The most popular include Perl, Python, PHP, and Tcl.
Dynamic new technologies such as the Java technology and XML run swimmingly on Linux, as do any number of more esoteric programming languages, from Logo and Rebol to Smalltalk and many more.
If you want to use Linux as a platform for a very advanced application or application set, you will be interested in aspects of the system such as kernel hacking, the differences between various filesystems, and other nitty-gritty details.
Another skill set that is often needed for high-end applications (or games) is fine-tuning a Linux machine, cluster, or network for optimum performance. This includes expertise in things such as multiprocessing, threading, clusters, and other arcane but sophisticated points of system administration. Understanding these aspects of Linux aren't quite as gritty as actual kernel hacking, but can nonetheless get pretty hairy.
IBM Learning Services offers classes that cover everything from the basics to development to highly specialized skills—as well as certification (more about this later). IBM Developer solutions offers articles and howtos on IBM products, and the greater IBM Web site offers many resources, many if not most of which also run on Linux. And IBM developerWorks offers articles, tutorials, and resources on Linux as well as several other open or free technologies including XML, Wireless, Web services, Java technology, and Grid computing.
Certification programs for Linux include consortium programs as well as independent skills tests and company-sponsored certification. IBM developerWorks and IBM Training offer certification tracks for building Linux expertise.
Linux is a superior operating system on which to run standard applications—from office applications such as word processors and spreadsheets; to database systems; to Web publishing and serving environments. IBM Products such as DB2, Lotus, Tivoli, and WebSphere all run on Linux, and IBM is not the only industry leader to recognize that Linux is an excellent platform for middleware. Though misunderstood and very often maligned—at least, among the self-proclaimed digerati—middleware is an essential (and for many computer users, the essential) reason for having computers around in the first place. The open nature of Linux allows middleware vendors to fine-tune solutions to meet users' needs in ways that no closed system allows.
Linux's openness and flexibility lend its use to work in laboratories and other research facilities on the bleeding edge of revolutionary technological change. Research at IBM includes all areas of information technology, from physics and cognitive science to leading-edge application research and more. But researchers at IBM are also involved, in many instances, in pure science. At IBM as elsewhere, Linux is frequently in use in these settings.
Linux can easily be clustered or customized for highly original experiments or prototypes, simulations, or tests; and the vast array of free software tools that Linux was created to work with can be used in the same creative way. Even with all of the exciting new technologies that are being developed today—from Grid computing and wireless voice applications to artificial intelligence and Quantum computing—the potential and promise of the computing age in which we live is still largely untapped. Linux's robust and open flexibility means that it will remain at the forefront of the development frontier for years to come.