Linux
is a generic term referring to
Unix-like
computer operating systems based on the Linux kernel. Their development
is one of the most prominent examples of free and open source software
collaboration; typically all the underlying source code can be used,
freely modified, and redistributed by anyone under the terms of the
GNU
GPL and other free licenses.
Linux is predominantly known for its use
in servers, although it is installed on a wide variety of computer
hardware, ranging from embedded devices and mobile phones to
supercomputers. The popularity of Linux distributions as desktop and
laptop operating system has been growing lately due to the rise of
netbooks and the Ubuntu distribution of the operating system. The name
"
Linux"
comes from the Linux kernel, originally written in 1991 by
Linus
Torvalds. The rest of the system, including utilities
and libraries, usually comes from the GNU operating system announced in
1983 by Richard Stallman. The GNU contribution is the basis for the
alternative name .
A Linux-based system can be controlled by one or more of a text-based
command line interface (CLI), graphical user interface (GUI) (usually
the default for desktop), or through controls on the device itself
(common on embedded machines). On desktop machines,
KDE,
GNOME and
Xfce
are the most popular user interfaces, though a variety of other user
interfaces exist. Most popular user interfaces run on top of the X
Window System (X), which provides network transparency, enabling a
graphical application running on one machine to be displayed and
controlled from another.
Other GUIs include X window managers such as
FVWM,
Enlightenment and
Window
Maker. The window manager provides a means to control
the placement and appearance of individual application windows, and
interacts with the X window system. A Linux system typically provides a
CLI of some sort through a shell, which is the traditional way of
interacting with a Unix system. A Linux distribution specialized for
servers may use the CLI as its only interface. A “headless
system” run without even a monitor can be controlled by the
command line via a remote-control protocol such as SSH or telnet.
Most low level Linux components, including the GNU Userland, use the
CLI exclusively. The CLI is particularly suited for automation of
repetitive or delayed tasks, and provides very simple inter-process
communication. A graphical terminal emulator program is often used to
access the CLI from a Linux desktop.Most Linux distributions support
dozens of programming languages. The most common collection of
utilities for building both Linux applications and operating system
programs is found within the GNU toolchain, which includes the GNU
Compiler Collection (GCC) and the GNU build system. Amongst others,
GCC
provides compilers for
Ada,
C,
C++,
Java,
and
Fortran. The Linux kernel itself is
written to be compiled with
GCC.
Proprietary compilers for Linux include the Intel C++ Compiler and IBM
XL C/C++ Compiler. Most distributions also include support for
Perl,
Ruby,
Python
and other dynamic languages. Examples of languages that are less
common, but still well-supported, are C# via the Mono project,
sponsored by Novell, and Scheme. A number of Java Virtual Machines and
development kits run on Linux, including the original
Sun
Microsystems JVM (HotSpot), and IBM's J2SE RE, as well
as many open-source projects like
Kaffe.
The two main frameworks for developing graphical applications are those
of
GNOME and
KDE.
These projects are based on the GTK+ and Qt widget toolkits,
respectively, which can also be used independently of the larger
framework. Both support a wide variety of languages. There are a number
of Integrated development environments available including
Anjuta,
Code::Blocks, Eclipse, KDevelop, Lazarus, MonoDevelop,
NetBeans,
and
Omnis Studio while the
long-established editors Vim and Emacs remain popular.
The Free Software Foundation views Linux distributions which use GNU
software as GNU variants and they ask that such operating systems be
referred to as GNU/Linux or a Linux-based GNU system. The media and
common usage, however, refers to this family of operating systems
simply as Linux, as do many large Linux distributions (e.g. Ubuntu and
SuSE Linux). Some distributions use GNU/Linux (particularly notable is
Debian GNU/Linux), but the term's use outside of the enthusiast
community is limited. The naming issue remains a source of confusion to
many newcomers, and the naming remains controversial.
Linus
Torvalds is against the GNU/Linux naming, stating that
Linux is not a GNU project.