Home About us Products Services Contact us Bookmark
:: wikimiki.org ::
NetworkManager

NetworkManager

NetworkManager is a networking tool for linux using dbus and hal. The intention of the project is to make networking for linux "just work" and "not suck". The computer should use the wired network connection when its plugged in, but automatically switch to a wireless connection when the user unplugs it and walks away from the desk. Likewise, when the user plugs the computer back in, the computer should switch back to the wired connection. The user should, most times, not even notice that their connection has has been managed for them; they should simply see uninterrupted network connectivity. The most important pieces of NetworkManager are desktop environment and distribution agnostic, functioning just as well in Gnome, KDE, Xfce, etc. across distributions like Fedora Core, Debian, Gentoo, and Slackware. And since the NetworkManager components communicate with each other using dbus, its easy to rip out and replace any of the User Interface pieces at any time. Using the awesome power and flexibility of dbus and hal, NetworkManager provides facilities for other desktop applications like browsers and email clients to be aware of the network's state and adjust their operation accordingly for features like offline operation.

External links

[http://www.gnome.org/projects/NetworkManager/ NetworkManager Homepage]

Linux

:See Linux kernel for the kernel itself. See Linux (washing powder) for the Swiss brand of detergent. See 9885 Linux for the asteroid. asteroid frequently featured sitting, is the official Linux mascot.]] mascot Linux is a computer operating system and its kernel. It is one of the most prominent examples of free software and of open-source development: unlike proprietary operating systems such as Windows and Mac OS, all of its underlying source code is available to the public and anyone can freely use, modify, and redistribute it. In the narrowest sense, the term Linux refers to the Linux kernel, but it is commonly used to describe entire Unix-like operating systems (also known as GNU/Linux) that are based on the Linux kernel combined with libraries and tools from the GNU Project and other sources. Most broadly, a Linux distribution bundles large quantities of application software with the core system, and provides more user-friendly installation and upgrades. Initially, Linux was primarily developed and used by individual enthusiasts. Since then, Linux has gained the support of major corporations such as IBM,Sun Microsystems, Hewlett-Packard, and Novell for use in servers and is gaining popularity in the desktop market. Proponents and analysts attribute this success to its vendor independence, low cost, security, and reliability. Linux was originally developed for Intel 386 microprocessors and now supports all popular computer architectures (and several obscure ones). It is deployed in applications ranging from embedded systems (such as mobile phones and personal video recorders) to personal computers to supercomputers.

History

supercomputer project for a free operating-system.]] In 1983, Richard Stallman founded the GNU project, which today provides an essential part of most Linux systems (see also GNU/Linux, below). The goal of GNU was to develop a complete Unix-like operating system composed entirely of free software. By the beginning of the 1990s, GNU had produced or collected nearly all of the necessary components of this system—libraries, compilers, text editors, a Unix-like shell, and other software—except for the lowest level, the kernel. The GNU project began developing their own kernel, the Hurd, in 1990 (after an abandoned attempt called Trix). According to Thomas Bushnell, the initial Hurd architect, their early plan was to adapt the BSD 4.4-Lite kernel and, in hindsight, "It is now perfectly obvious to me that this would have succeeded splendidly and the world would be a very different place today" [http://www.groklaw.net/article.php?story=20050727225542530]. However, due to a lack of cooperation from the Berkeley programmers, Stallman decided instead to use the Mach microkernel, which subsequently proved unexpectedly difficult, and the Hurd's development proceeded slowly. Mach microkernel Meanwhile, in 1991, another kernel—eventually dubbed "Linux"—was begun as a hobby by Finnish university student Linus Torvalds while attending the University of Helsinki. Torvalds originally used Minix, a simplified Unix-like system written by Andrew Tanenbaum for teaching operating system design. However, Tanenbaum did not permit others to extend his operating system, leading Torvalds to develop a replacement for Minix. Linux started out as a terminal emulator written in IA-32 assembler and C, which was compiled into binary form and booted from a floppy disk so that it would run outside of any operating system. The terminal emulator was running two threads: one for sending and one for receiving characters from the serial port. When Linus needed to read and write files to disk, this task-switching terminal emulator was extended with an entire filesystem handler. After that, it gradually evolved into an entire operating system kernel intended as a foundation for POSIX-compliant systems. The first version of the Linux kernel (0.01) was released to the Internet on September 17, 1991, with the second version following shortly thereafter in October [http://groups.google.com/groups?selm=1991Oct5.054106.4647%40klaava.Helsinki.FI]. Since then, thousands of developers from around the world have participated in the project. Eric S. Raymond's essay The Cathedral and the Bazaar discusses the development model of the Linux kernel and similar software. By the 0.01 release, Linus had implemented enough POSIX system calls to make Linux run the GNU Bash shell; after this bootstrapping procedure, development accelerated rapidly. A computer running Minix was originally necessary in order to configure, compile, and install Linux. Initial versions of Linux also required an operating system to be present in order to boot from a hard disk, but soon there were independent bootloaders, the most well known being lilo. The Linux system quickly surpassed Minix in functionality; Torvalds and other early Linux kernel developers adapted their kernel to work with the GNU components and user-space programs to create a complete, fully functional, free operating system. Today, Torvalds continues to direct the development of the kernel, while other subsystems such as the GNU components are developed separately. The task of producing an integrated system, which combines all of these basic components along with graphical interfaces (such as GNOME or KDE, which in turn are based on the X Window System) and application software, is now performed by Linux distribution vendors / organizations. Tux the penguin is the logo and mascot of Linux (although there are other, less common representations; see OS-tan), based on an image created by Larry Ewing in 1996. The name "Linux" was coined, not by Torvalds, but by Ari Lemmke. Lemmke was working for the Helsinki University of Technology (HUT), located in Espoo near Helsinki, as an administrator of ftp.funet.fi, an FTP server which belongs to the Finnish University and Research Network (FUNET), which has numerous organizations as its members, amongst them the HUT and the University of Helsinki. He was the one to invent the name Linux for the directory from which Torvalds' project was first available for download [http://liw.iki.fi/liw/texts/linux-anecdotes.html]. (The name Linux was derived from Linus' Minix.) The name was later trademarked (see below).

Licensing

The Linux kernel, along with most of the GNU components, is licensed under the GNU General Public License (GPL). The GPL requires that all source code modifications and derived works also be licensed under the GPL, and is sometimes referred to as a "share and share-alike" (or copyleft) license. In 1997, Linus Torvalds stated, "Making Linux GPL'd was definitely the best thing I ever did." [http://kde.sw.com.sg/food/linus.html] Other subsystems use other licenses, although all of them share the property of being free/open-source; for example, several libraries use the LGPL (a more-permissive variant of the GPL), and the X Window System uses the permissive (non-copyleft) MIT License. The Linux trademark ([http://assignments.uspto.gov/assignments/q?db=tm&qt=rno&reel=&frame=&sno=&rno=1916230 U.S. Reg No: 1916230]) is owned by Linus Torvalds, registered for "Computer operating system software to facilitate computer use and operation." The licensing of the trademark is now handled by the Linux Mark Institute (LMI). LMI has also sought to enforce the Linux trademark in countries other than the US. In September 2005, Intellectual Property Australia, the trademark regulator in Australia, rejected an application to trademark Linux.

Pronunciation

Linux is commonly pronounced either to rhyme with minix , or to rhyme with my nicks . The first pronunciation is considered more correct, while the second has become popular for sounding more natural in English. Other variations are also possible, but less frequently heard. In 1992, Torvalds explained [http://groups.google.com/groups?selm=1992Apr23.123216.22024%40klaava.Helsinki.FI&output=gplain] (IPA pronunciations added to quote in braces): :"'li' is pronounced with a short [ee] sound: compare prInt, mInImal etc. 'nux' is also short, non-diphthong, like in pUt . It's partly due to minix: linux was just my working name for the thing, and as I wrote it to replace minix on my system, the result is what it is... linus' minix became linux." An [http://www.jx90.com/linux.html audio file] of Torvalds saying "Hello, this is Linus Torvalds, and I pronounce Linux as /linəks/" also exists [http://www.paul.sladen.org/pronunciation/]. Note that in English, "Linux" and "Minix" are usually pronounced with a short /I/ sound that is different from Torvalds's Finland-Swedish pronunciation of these words. See also List of words of disputed pronunciation for a discussion of the various ways "Linux" is pronounced.

Linux and GNU/Linux

Because the GNU libraries and programs, an essential part of nearly all Linux distributions, stem from a long-standing free operating system project that predates the Linux kernel, Richard Stallman and the Free Software Foundation ask that the combined system (regardless of distribution) be referred to as GNU/Linux or a Linux-based GNU system. Torvalds, the creator of the Linux kernel, has said that he finds calling Linux in general GNU/Linux "just ridiculous." Still, some distributions do use this name — notably Debian GNU/Linux — while most people simply refer to the system as Linux. The distinction between Torvalds' kernel and entire Linux-based systems that contain the kernel is a perennial source of confusion, and the naming remains controversial.

Litigation

In March 2003, the SCO Group (SCO) filed a lawsuit against IBM claiming that IBM had contributed some portions of SCO's copyrighted code to the Linux kernel in violation of IBM's license to use Unix. Additionally, SCO sent letters to a number of companies warning that their use of Linux without a license from SCO may be actionable, and claimed in the press that they would be suing individual Linux users. This controversy has involved lawsuits by SCO against Novell, DaimlerChrysler (partially dismissed in July, 2004), and AutoZone, and by Red Hat and others against SCO. To date, no proof of SCO's claims of copied code in Linux has been provided and SCO's claims have varied widely. A few of Novell's press releases seem to demonstrate serious problems with SCO's claims:
- [http://www.novell.com/news/press/archive/2003/06/pr03036.html 2003-May-15] Novell Statement on SCO Contract Amendment (good news for Linux users)
- [http://www.novell.com/news/press/archive/2003/05/pr03033.html 2003-May-28] Novell Challenges SCO Position, Reiterates Support for Linux
- [http://www.novell.com/news/press/pressroom/news_brief/archive/2003/05/pr03022.html 2003-May-30] Novell statement re: SCO press conference allegations
- [http://www.novell.com/news/press/archive/2003/06/pr03036.html 2003-Jun-06] Novell Statement on SCO Contract Amendment
- [http://www.novell.com/news/press/pressroom/news_brief/archive/2003/11/pr03042.html 2003-Nov-18] Novell Statement on SCO claims regarding a non-compete clause in Novell-SCO contracts The most comprehensive coverage of this suit is given by Groklaw.

Distributions

Linux is predominantly used as part of a Linux distribution (commonly called a 'distro'). These are compiled by individuals, loose-knit teams, and various professional organizations. They include additional system software and application programs, as well as certain processes to install these systems on a computer. Distributions are created for many different purposes, including localization, architecture support, real-time applications, and embedded systems, and many deliberately include only free software. Over 450 distributions are available [http://lwn.net/Distributions/]. A typical general-purpose distribution includes the Linux kernel, some GNU libraries and tools, command-line shells, and thousands of application software packages, from office suites and the graphical X Window System to compilers, text editors, and scientific tools. A variety of Linux distribution screenshots can be viewed [http://shots.osdir.com/ here].

Development efforts

[http://www.dwheeler.com/sloc/redhat71-v1/redhat71sloc.html More Than a Gigabuck: Estimating GNU/Linux's Size], a study of Red Hat Linux 7.1, found that this particular distribution contained 30 million source lines of code (SLOC). The Linux kernel contained 2.4 million lines of code, or 8% of the total. Using the Constructive Cost Model (COCOMO), the study estimated that this distribution required about eight thousand person-years of development time. Had all this software been developed by conventional proprietary means, it would have cost 1.08 billion dollars (year 2000 dollars) to develop in the United States. Slightly over half of the code in that distribution was licensed under the GPL. In a later study, Counting potatoes: the size of Debian 2.2, the same analysis was performed for Debian GNU/Linux version 2.2. This distribution contained over fifty-five million source lines of code, and the study estimated that it would have cost 1.9 billion dollars (year 2000 dollars) to develop by conventional proprietary means. The source code for the Linux kernel used to be maintained using the software application called BitKeeper but there was a dispute with its openness so now it is maintained via Git, the new directory content manager created by Linus Torvalds himself.

Applications

Git In the past, a user needed significant knowledge of computers in order to install and configure Linux. Because of this, and because of being attracted by access to the internals of the system, Linux users have traditionally tended to be more technologically oriented than users of Microsoft Windows and Mac OS, sometimes revelling in the tag of "hacker" or "geek". This stereotype has been dispelled in recent years by the increased user-friendliness and broad adoption of many Linux distributions. Linux has made considerable gains in server and special-purpose markets, such as image rendering and Web services, and is now making inroads into the high volume desktop market. geek Linux is the cornerstone of the so-called LAMP server-software combination (Linux, Apache, MySQL, Perl/PHP/Python) that has achieved widespread popularity among Web developers, making it one of the most common platforms on the Web. A prominent example of this software combination in use is MediaWiki — the software primarily written for Wikipedia. The multi-billion dollar video game industry will see widespread Linux use with the 2006 launch of the Sony PlayStation 3 video game console which will run Linux out of the box. Sony has previously released a PS2 Linux kit for their PlayStation 2 video game console. Linux is also often used in embedded systems. Its low cost makes it particularly useful in set-top boxes and for devices such as the Simputer, a computer aimed mainly at low-income populations in developing nations. In mobile phones, Linux has become a common alternative to the Symbian OS software. In handheld devices, it is an alternative to the Windows CE and Palm OS operating systems. The popular TiVo PVR also uses a customized version of Linux. A large number of network firewalls and routers, including several from Linksys, use Linux internally, taking advantage of its advanced firewalling and routing capabilities. It is also expanding into telecommunications equipment through efforts such as Carrier Grade Linux. Linux is increasingly common as an operating system for supercomputers, most recently on 64-bit AMD Opterons in the Cray XD1. As of June 2005, the 3 fastest supercomputers in the world (as recorded by the Top500) run Linux. Linux is rapidly gaining popularity as a desktop operating system. In desktop environments like GNOME and KDE, Linux may be used with a user interface that is similar to that of Mac OS, Microsoft Windows, other desktop environments, and its traditional Unix-like command line interface. Graphical Linux software exists for almost any area and in some areas there is a greater quality and quantity of software available than for proprietary operating systems.

Usability and market share

Once viewed as an operating system only computer geeks could use, Linux distributions have become user-friendly, with many graphical interfaces and applications. Its market share of desktops is rapidly growing. According to market research company IDC, in 2002, 25% of servers and 2.8% of desktop computers were already running Linux. However, argued advantages of Linux, such as lower cost, fewer security vulnerabilities [http://www.theregister.co.uk/security/security_report_windows_vs_linux/] , and lack of vendor lock-in, have spurred a growing number of high-profile cases of mass adoption of Linux by corporations and governments. The Linux market is among the fastest growing and is projected to exceed $35.7 billion by 2008 [http://www.techweb.com/wire/showArticle.jhtml?articleID=55800522]. Linux and other free software projects have been frequently criticized for not going far enough in terms of ensuring usability, and Linux was once considered more difficult to use than Windows or the Macintosh, although this has changed. Applications running within graphical desktop environments such as GNOME and KDE in Linux are very similar to those running on other operating systems. While some applications cannot be run, there usually exists a replacement that will, sometimes of better quality. A growing number of proprietary software vendors are supporting Linux, and open source development for Linux is also steadily increasing. Additionally, proprietary software for other operating systems may be run through compatibility layers, such as Wine. The area of hardware and services configuration is where user experience is most varied. GUI configuration tools and control panels are available for many system settings and services, but editing of plain-text configuration files is often required. On the command shell, many usability hangups from early Unix days generally remain, such as the difficulty in finding some commands, and the inability to undo many operations such as file deletion. Many older programs with text user interfaces (TUI) have wild inconsistencies between them, but they maintain loyal followings. It used to also be easier to find local technical support for Windows or Mac OS than for Linux in some places. It is worth noting that an operating system's usability is subjective and dependent on the background knowledge and needs of its users. For example, Gentoo Linux, a source-based distribution, is time-consuming to install, but can be more usable for advanced users than stereotypical beginner-friendly distributions, such as Mandriva or Ubuntu. Users might have to switch application software, and there may be fewer options, as in the case of computer games. Equivalents of some specific programs may not be available. However, general applications like spreadsheets, word processors, and browsers are available for Linux in profusion. Most distributions of Linux have two or more means of software installation, and more office and end-user applications now come with an automated installation program. Because of reluctance to change and the fact that many computers still come with Microsoft Windows pre-installed, there has been a slow initial adoption of new desktop operating systems. Linux is past that stage now, with numerous manufacturers installing Linux and many organizations having five or more years experience with Linux - since installation evolved to graphical user interfaces - or Unix, which has been around for decades. Linux is rapidly gaining popularity as a desktop operating system as it is increasingly used in schools and workplaces and more people are becoming familiar with it. Support for certain new and obscure hardware remains an issue. Though some vendors provide device drivers, many device drivers must be developed by volunteers after the release of the product. Often, this development requires reverse engineering of some sort, as certain manufacturers remain secretive and refuse to provide the hardware or firmware specifications for their products. Deliberately non-portable hardware drivers like Winmodems and Winprinters have been a general problem. There have been conflicting studies of Linux's usability and cost in the past. Microsoft-sponsored studies such as those by IDC and Gartner have argued that Linux had a higher total cost of ownership (TCO) than Windows. However, Relevantive, the renowned Berlin-based organization specializing in providing consultation to companies on the usability of software and Web services, concluded that the usability of Linux for a set of desktop-related tasks is "equal to Windows XP." Since then, there have been numerous independent studies that show that a modern Linux desktop using Gnome or KDE is on par with or superior to Microsoft Windows. Linux distributions have been criticized for unpredictable development schedules, thus making enterprise users less comfortable with Linux than they might be with other systems (Marcinkowski, 2003). However, some observers claim that the intervals between Linux distribution releases are no worse, and often better, than the project management "schedule slipping" that occurs with other operating systems and with software systems in general. The large number of choices of Linux distributions can also confuse users and software vendors. The paper [http://www.dwheeler.com/oss_fs_why.html Why Open Source Software / Free Software (OSS/FS)? Look at the Numbers!] identifies many quantitative studies of open source software, on topics including market share and reliability, with many studies specifically examining Linux.

Installation

In the past, difficulty of installation was a barrier to wide adoption of Linux-based systems, but the process has been made easy in recent years. Many distributions are at least as easy to install as a comparable version of Windows. It is unnecessary to file license numbers and enter them during installation. Also, personal computers that come with Linux distributions already installed are readily available from numerous vendors, including large mainstream vendors like Hewlett-Packard and Dell. The most common method of installing Linux, supported by all major distributions, is by booting from a CD that contains the installation program and installable software. Such a CD can be burned from a downloaded ISO image, purchased alone for a low price, or can be obtained as part of a box set that may also include manuals and additional commercial software. Some distributions, such as Debian, can be installed from a small set of floppy disks. After a basic system is installed, more software can be added by downloading it from the Internet or using CDs. Other distributions, such as Knoppix, can be run directly from a "live CD" running entirely in RAM, rather than installing it to the hard drive. With this, one boots from the CD and can use Linux without making any modification to the contents of the hard drive. Similarly, some minimal distributions, such as tomsrtbt, can be run directly from as little as 1 floppy disk without needing to change the hard drive contents. Still another mode of installation of Linux is to install on a powerful computer to use as a server and to use ordinary less powerful machines (perhaps without hard drives, and having less memory and slower CPUs) as clients over the network. Clients can boot over the network from the server and display results and pass information to the server where all the applications run. A Linux Terminal Server is a single machine to which many clients can connect this way, so one obtains the benefit of installing Linux on many machines for the cost of installing on one. The clients can be ordinary PCs with the addition of the network bootloader on a drive or network interface controller. Variations on this mode include using local drives and computing power to run applications. The cost savings achieved by using thin clients can be invested in greater computing power or storage on the server. Many distributions also support booting over a network, so an installation on a properly configured machine can be done remotely. Anaconda, one of the more popular installers, is used by Red Hat Linux, Fedora Core and other distributions to simplify the installation process. It is famous for its ability to automatically partition a hard drive using the Disk Druid utility.

Installation on an existing platform

Many distribution companies now are sparing no effort to provide users with advanced, easy and specific installations. Some beginners (especially those familiar with Microsoft Windows and Mac OS) may still feel that making the shift can be hard but many solutions have been created to solve this problem. Some let the user install Linux on top of their current system. Consider WinLinux, for example. After downloading the installer (more than 100MB), the user can install Linux just like any other Windows application. The software provides all the needed features; it is a real Linux distribution. The difference is that it is not necessary for the user to leave Windows, since Linux is installed to the Windows hard-disk partition. A Linux boot loader will boot the Linux system when the PC is restarted and the user chooses to boot Linux. Similar approaches include coLinux. Technology of virtual machines (such as Virtual PC or VMware) also enables Linux to be run inside another OS such as Microsoft Windows. The virtual machine software will simulate an isolated environment onto which the Linux system is installed. After everything is done, the virtual machine can be booted just as if it were an independent computer.

Demonstration

The difficulty in quickly demonstrating Linux on the computer of a potential new user remains still an obstacle, slowing its adoption as a personal computing platform. So-called "live CDs" that simply boot from CD and automatically load the necessary drivers for the user's respective system promise to change that. Linux User Groups or LUGS, still provide the primary face-to-face forum for demonstration of Linux. Commercial exhibitions provide Linux demonstrations to potential new users, especially corporate buyers. Many commercial distributions are hard to install, but with work, allow someone to re-use an old machine to see what the Linux desktop is like. The approach by Knoppix, which runs Linux directly from a CD without disturbing the PC's hard drive, is probably the most successful demonstration tool to date. MEPIS also runs from CD like Knoppix and they both can also be installed onto a PC like any other Linux distribution. Ubuntu also has a separate "Live" version of their distribution which runs from CD. The fastest approach is probably that of Workspot, which uses VNC to provide a free Linux desktop demo online.

Configuration

Configuration of most system wide settings are stored in a single directory called /etc, while user-specific settings are stored in hidden files in the user's home directory. A few programs use a configuration database instead of files. There are a number of ways to change these settings. The easiest way to do this is by using tools provided by distributions such as Debian's debconf, Mandriva's Control Center, or SUSE's YaST. Others, like Linuxconf, Gnome System Tools, and Webmin, are not distribution-specific. There are also many command line utilities for configuring programs. Since nearly all settings are stored in ordinary text files they can be configured by any text editor.

Running Windows applications

There are several ways to run applications written for Microsoft Windows on Linux, with varying levels of success. The popular Wine software, along with the commercial derivatives Crossover Office and Transgaming's Cedega create an application compatibility layer by reimplementing the Windows API inside of Linux. Many Windows programs run on Linux at approximately the same speed using these programs, and in some cases run faster. Since these programs are written without use of any Microsoft code, they do not require a Windows license. Although compatibility is improving, in many cases week-by-week, applications that make use of non-standard programming practices can experience problems. A similar alternative to running Windows applications inside Linux is to use the proprietary Win4Lin software, which converts Microsoft's version of the Windows API to run inside Linux rather than reimplementing it from scratch. Since a legal copy of the Microsoft implementation of the Windows API is needed, use of Win4Lin requires a copy of Windows. A third alternative for running Windows applications within Linux is to use a virtual machine program and run the desired application along with the entire virtual Windows operating system. VMware is a proprietary hardware virtualisation program that can run Windows in this way with near-perfect functionality, however this approach can carry a considerable speed and performance penalty. Full CPU emulators (such as QEMU or the slower counterpart Bochs) can be used, though to run a Windows program these emulators will also require a copy of Windows. Aside from the performance difficulties, virtual machine approaches to running Windows applications cannot integrate Windows programs into the Linux desktop, as they must instead run inside the virtual Windows desktop. A fourth alternative is to run the applications on a Windows machine but use remote access software such as VNC to view it on the Linux desktop. This is a good solution where applications are unable to be migrated, or an item of hardware such as a dongle, custom decoder card, or some USB devices will only run under Windows. At its simplest one or more people needing occasional access to Windows applications can share remote access to a single Windows PC for that purpose using VNC. In a corporate setting essentially the same can be done using a Citrix server, rdesktop to access a Microsoft Terminal Services server, or with NX technology.

Programming on Linux

A number of compilers are available for Linux. The GNU Compiler Collection (GCC) comes with the vast majority of distributions. GCC supports C, C++ and Java among other languages. There are also a number of IDEs available for Linux. Some of the most popular are Anjuta, KDevelop, NetBeans IDE, Glade (actually a user interface designer), Eclipse, the famous Emacs and Vim.

Support

Technical support is provided by commercial suppliers and by other Linux users, usually in online forums, newsgroups and mailing lists. GNU/Linux users are often organised in so called Linux User Groups or abbreviated LUG. The business model of commercial suppliers is generally dependent on charging for support, especially for business users. Companies, which offer a special business version of their distribution, add special support packages and special tools to administrate higher numbers of installations or do administrative tasks more easily.

References


- Glyn Moody: Rebel Code: Linux and the Open Source Revolution, Perseus Publishing, ISBN 0-713-99520-3
- Gedda. R. (2004). Linux breaks desktop barrier in 2004: Torvalds. Retrieved January 16, 2004 from [http://www.linuxworld.com.au/index.php?id=568003838&fp=16&fpid=0]
- Mackenzie, K. (2004). Linux Torvalds Q&A. Retrieved January 19, 2004 from [http://australianit.news.com.au/articles/0,7204,8407881%5E15841%5E%5Enbv%5E,00.html]
- [http://www.dwheeler.com/sloc More Than a Gigabuck: Estimating GNU/Linux's Size] by David A. Wheeler
- [http://people.debian.org/~jgb/debian-counting Counting potatoes: the size of Debian 2.2] by Jesús M. González-Barahona et al.
- [http://www.dwheeler.com/oss_fs_why.html Why Open Source Software / Free Software (OSS/FS)? Look at the Numbers!] by David A. Wheeler

See also

General


- Access control list
- List of Linux distributions
- Comparison of Linux distributions
- IPodLinux
- Shell account
- LiveCD
- PS2 Linux
- Vmlinux
- Linux consolidation

Lists


- List of file systems
- List of Unix programs
- List of Linux books

Magazines


- Linux Journal
- Linux Magazine
- Linux Format

Videos


-

External links

General
- [http://www.linux.org/ Linux.org] — contains comprehensive information and resources about Linux.
- [http://counter.li.org/ The Linux Counter] — estimates Linux usage around the world
- [http://www.tldp.org/ The Linux Documentation Project]
  - [http://tldp.org/HOWTO/HOWTO-INDEX/categories.html Categorized List of HOWTOs] Distribution related
- [http://eedok.voidofmind.com/linux/chooser.html Distro Quiz] — a test that recommends a distribution based on the answers.
- [http://www.linux.org/dist/ Linux Online] — distributions and FTP Sites (sortable by categories)
- [http://distrowatch.com/ DistroWatch.com] — distribution information & announcements.
- [http://www.linuxiso.org/ Linux ISO] — comprehensive but rather outdated site which has ISO download links for several distributions. Criticism of Linux
- [http://www.microsoft.com/windowsserversystem/facts/default.mspx Microsoft: Get the Facts] — Microsoft site that compares Windows Server software and Linux and comes up with the conclusion that Microsoft software has a lower TCO then Linux.
-
Category:Unix Category:Computing platforms Category:Free software operating systems Category:Operating systems als:Linux ja:Linux ko:리눅스 ms:Linux simple:Linux th:ลินุกซ์ zh-min-nan:Linux

Dbus

D-BUS is the name of a computer software system that provides a simple way for different applications to communicate with each other. It is developed as part of the freedesktop.org project.

Introduction

Architecture

It is a interprocess communication (IPC) system with three architectural layers:
- A library, libdbus, that allows two applications to connect to each other and exchange messages.
- A message bus daemon executable, built on libdbus, that multiple applications can connect to. The daemon can route messages from one application to zero or more other applications.
- Wrapper libraries based on particular application frameworks. D-BUS is designed for two specific cases:
- Communication between desktop applications in the same desktop session; to allow integration of the desktop session as a whole, and address issues of process lifecycle.
- Communication between the desktop session and the operating system, where the operating system would typically include the kernel and any system daemons or processes.

How D-BUS Works

Each application using D-BUS contains objects, which generally (but need not) map to GObject, QObject, C++ objects, or Python objects. An object is an instance rather than a type. When messages are received over a D-BUS connection, they are sent to a specific object, not to the application as a whole. To allow messages to specify their destination object, there has to be a way to refer to an object. In many programming languages, this is normally called a pointer or reference. However, these references are implemented as memory addresses relative to the address space of the application, and thus can't be passed from one application to another. To solve this, D-BUS introduces a name for each object. The name looks like a filesystem path, for example an object could be named /org/kde/kspread/sheets/3/cells/4/5. Human-readable paths are prefered, but developers are free to create an object named /com/mycompany/c5yo817y0c1y1c5b if it makes sense for their application. The D-BUS objects' name is namespaced to ensure different code modules are kept separated. Namespaces are generally prefixed with the developers domain name components (eg /org/kde).

External links


- [http://www.freedesktop.org/Software/dbus Freedesktop.org D-BUS]
- [http://dbus.freedesktop.org/doc/dbus-tutorial.html D-BUS Tutorial] Category:X Window System

Project

:For the form of US public housing, see housing projects. For project management software, see: Microsoft Project. For WikiPedia projects, see Wikipedia:WikiProject. A project is a temporary endeavor undertaken to create a unique product or service. Temporary means that the project has an end date. Unique means that the project's end result is different than the results of other functions of the organization. It can also comprise an ambitious plan to define and constrain a future by limiting it to set goals and parameters. The planning, execution and monitoring of major projects sometimes involves setting up a special temporary organization, consisting of a project team and one or more work teams. A project usually needs resources. The word project comes from the Latin word projectum from projicere, "to throw something forwards" which in turn comes from pro-, which denotes something that precedes the action of the next part of the word in time (paralleling the Greek πρό) and jacere, "to throw". The word "project" thus actually originally meant "something that comes before anything else is done". When the word was initially adopted, it referred to a plan of something, not to the act of actually carrying this plan out. Something performed in accordance with a project was called an object. This use of "project" changed in the 1950s when several techniques for project management were introduced: with this advent the word slightly changed meaning to cover both projects and objects. However in certain projects there may still exist so called objects and object leaders, reflecting the older use of the words. One may also think in terms of platonism, where ideas from the realm of ideals are projected onto the physical world. (See: Plato's allegory of the cave.) Particularly liked by Western business, projects can subdivide into sub-projects and spawn an industrial sub-culture of project planning and project management, all oblivious to more holistic developments. Some feel this habit of short-termism has permeated economic planning and personal growth to the detriment of cyclical and multi-cultural world views. Alternatives to project-centric planning include trend-oriented goal-setting and directional planning. However, this view is contentious, and indeed industrial program management and portfolio management represent ways of administering a range of projects to fulfil an over-arching strategy. Notable projects include:
- Manhattan Project: Developed the first nuclear weapon
- Polaris missile project: an ICBM control system
- Human Genome Project: To map the human genome
- Project Apollo: Landing a man on the moon

Compare

: campaign, process, program (management)

External links


- [http://www.sixsigmafirst.com/projectplan.htm Project Planning]
- [http://outsourceking.com/PM/Project-Management-Defined.aspx Project Management Tutorial]
- [http://www.pmkb.com/ Project Management Knowledge Base]

See also


- list of project management topics
- project planning
- Enterprise Project Management (EPM)
- Wikipedia development projects Category:Project management ja:プロジェクト th:โครงการ

Computer

A computer is a device capable of processing data according to a program — a list of instructions. The data to be processed may represent many types of information including numbers, text, pictures, or sound. Computers can be extremely versatile. In fact, they are universal information processing machines. According to the Church-Turing thesis, a computer with a certain minimum threshold capability is in principle capable of performing the tasks of any other computer, from those of a personal digital assistant to a supercomputer. Therefore, the same computer designs have been adapted for tasks from processing company payrolls to controlling industrial robots. Modern electronic computers also have enormous speed and capacity for information processing compared to earlier designs, and they have become exponentially more powerful over the years (a phenomenon known as Moore's Law). Computers are available in many physical forms. The original computers were the size of a large room, and such enormous computing facilities still exist for specialized scientific computation - supercomputers - and for the transaction processing requirements of large companies, generally called mainframes. Smaller computers for individual use, called personal computers, and their portable equivalent, the notebook computer, are ubiquitous information-processing and communication tools and are perhaps what most non-experts think of as "a computer". However, the most common form of computer in use today is the embedded computer, small computers used to control another device. Embedded computers control machines from fighter planes to digital cameras.

History of computing

Originally, a "computer" was a person who performed numerical calculations under the direction of a mathematician, often with the aid of a variety of mechanical calculating devices from the abacus onward. An example of an early computing device was the Antikythera mechanism, an ancient Greek device for calculating the movements of planets, dating from about 87 BCE. The technology responsible for this mysterious device seems to have been lost at some point. The end of the Middle Ages saw a reinvigoration of European mathematics and engineering, and by the early 17th century a succession of mechanical calculating devices had been constructed using clockwork technology. A considerable number of technologies that would later prove vital for the digital computer were developed in the late 19th and early 20th centuries, such as the punched card and the vacuum tube ((or valve). Charles Babbage was the first to conceptualize and design a fully programmable computer as early as 1837, but due to a combination of the limits of the technology of the time, limited finance, and an inability to resist tinkering with his design (a trait that would in time doom thousands of computer-related engineering projects), the device was never actually constructed in his lifetime. During the first half of the 20th century, many scientific computing needs were met by increasingly sophisticated, special-purpose analog computers, which used a direct physical or electrical model of the problem as a basis for computation. These became increasingly rare after the development of the digital computer. A succession of steadily more powerful and flexible computing devices were constructed in the 1930s and 1940s, gradually adding the key features of modern computers, such as the use of digital electronics (invented by Claude Shannon in 1937) and more flexible programmability. Defining one point along this road as "the first computer" is exceedingly difficult. Notable achievements include the Atanasoff Berry Computer, a special-purpose machine that used valve-driven computation and binary numbers; Konrad Zuse's Z machines; the secret British Colossus computer, which had limited programmability but demonstrated that a device using thousands of valves could be made reliable and reprogrammed electronically; and the American ENIAC — the first general purpose machine, but with an inflexible architecture that meant reprogramming it essentially required it to be rewired. The team who developed ENIAC, recognizing its flaws, came up with a far more flexible and elegant design, which has become known as the stored program architecture, which is the basis from which virtually all modern computers were derived. A number of projects to develop computers based on the stored program architecture commenced in the late 1940s; the first of these to be up and running was the Small-Scale Experimental Machine, but the EDSAC was perhaps the first practical version. Valve-driven computer designs were in use throughout the 1950s, but were eventually replaced with transistor-based computers, which were smaller, faster, cheaper, and much more reliable, thus allowing them to be commercially produced, in the 1960s. By the 1970s, the adoption of integrated circuit technology had enabled computers to be produced at a low enough cost to allow individuals to own a personal computer of the type familiar today.

How computers work: the stored program architecture

While the technologies used in computers have changed dramatically since the first electronic, general-purpose, computers of the 1940s, most still use the stored program architecture (sometimes called the von Neumann architecture; as the article describes the primary inventors were probably ENIAC designers J. Presper Eckert and John William Mauchly). The design made the universal computer a practical reality. The architecture describes a computer with four main sections: the arithmetic and logic unit (ALU), the control circuitry, the memory, and the input and output devices (collectively termed I/O). These parts are interconnected by a bundle of wires (a "bus") and are usually driven by a timer or clock (although other events could drive the control circuitry). Conceptually, a computer's memory can be viewed as a list of cells. Each cell has a numbered "address" and can store a small, fixed amount of information. This information can either be an instruction, telling the computer what to do, or data, the information which the computer is to process using the instructions that have been placed in the memory. In principle, any cell can be used to store either instructions or data. The ALU is in many senses the heart of the computer. It is capable of performing two classes of basic operations: arithmetic operations, the core of which is the ability to add or subtract two numbers but also encompasses operations like "multiply this number by 2" or "divide by 2" (for reasons which will become clear later), as well as some others. The second class of ALU operations involves comparison operations, which, given two numbers, can determine if they are equal, and if not, which is bigger. The I/O systems are the means by which the computer receives information from the outside world, and reports its results back to that world. On a typical personal computer, input devices include objects like the keyboard and mouse, and output devices include computer monitors, printers and the like, but as will be discussed later a huge variety of devices can be connected to a computer and serve as I/O devices. The control system ties this all together. Its job is to read instructions and data from memory or the I/O devices, decode the instructions, providing the ALU with the correct inputs according to the instructions, "tell" the ALU what operation to perform on those inputs, and send the results back to the memory or to the I/O devices. One key component of the control system is a counter that keeps track of what the address of the current instruction is; typically, this is incremented each time an instruction is executed, unless the instruction itself indicates that the next instruction should be at some other location (allowing the computer to repeatedly execute the same instructions). Physically, since the 1980s the ALU and control unit have been located on a single integrated circuit called a Central Processing Unit or CPU. The functioning of such a computer is in principle quite straightforward. Typically, on each clock cycle, the computer fetches instructions and data from its memory. The instructions are executed, the results are stored, and the next instruction is fetched. This procedure repeats until a halt instruction is encountered. Larger computers, such as some minicomputers, mainframe computers, servers, differ from the model above in one significant aspect; rather than one CPU they often have a number of them. Supercomputers often have highly unusual architectures significantly different from the basic stored-program architecture, sometimes featuring thousands of CPUs, but such designs tend to be useful only for specialized tasks.

Digital circuits

The conceptual design above could be implemented using a variety of different technologies. As previously mentioned, a stored program computer could be designed entirely of mechanical components like Babbage's. However, digital circuits allow Boolean logic and arithmetic using binary numerals to be implemented using relays - essentially, electrically controlled switches. Shannon's famous thesis showed how relays could be arranged to form units called logic gates, implementing simple Boolean operations. Others soon figured out that vacuum tubes - electronic devices, could be used instead. Vacuum tubes were originally used as a signal amplifier for radio and other applications, but were used in digital electronics as a very fast switch; when electricity is provided to one of the pins, current can flow through between the other two. Through arrangements of logic gates, one can build digital circuits to do more complex tasks, for instance, an adder, which implements in electronics the same method - in computer terminology, an algorithm - to add two numbers together that children are taught - add one column at a time, and carry what's left over. Eventually, through combining circuits together, a complete ALU and control system can be built up. This does require a considerable number of components. CSIRAC, one of the earliest stored-program computers, is probably close to the smallest practically useful design. It had about 2,000 valves, some of which were "dual components", so this represented somewhere between 2 and 4,000 logic components. Vacuum tubes had severe limitations for the construction of large numbers of gates. They were expensive, unreliable (particularly when used in such large quantities), took up a lot of space, and used a lot of electrical power, and, while incredibly fast compared to a mechanical switch, had limits to the speed at which they could operate. Therefore, by the 1960s they were replaced by the transistor, a new device which performed the same task as the tube but was much smaller, faster operating, reliable, used much less power, and was far cheaper. transistor In the 1960s and 1970s, the transistor itself was gradually replaced by the integrated circuit, which placed multiple transistors (and other components) and the wires connecting them on a single, solid piece of silicon. By the 1970s, the entire ALU and control unit, the combination becoming known as a CPU, were being placed on a single "chip" called a microprocessor. Over the history of the integrated circuit, the number of components that can be placed on one has grown enormously. The first IC's contained a few tens of components; as of 2005, modern microprocessors such from AMD and Intel contain over 100 million transistors. Tubes, transistors, and transistors on integrated circuits can be and are used as the "storage" component of the stored-program architecture, using a circuit design known as a flip-flop, and indeed flip-flops are used for small amounts of very high-speed storage. However, few computer designs have used flip-flops for the bulk of their storage needs. Instead, earliest computers stored data in Williams tubes - essentially, projecting some dots on a TV screen and reading them again, or mercury delay lines where the data was stored as sound pulses traveling slowly (compared to the machine itself) along long tubes filled with mercury. These somewhat ungainly but effective methods were eventually replaced by magnetic memory devices, such as magnetic core memory, where electrical currents were used to introduce a permanent (but weak) magnetic field in some ferrous material, which could then be read to retrieve the data. Eventually, DRAM was introduced. A DRAM unit is a type of integrated circuit containing huge banks of an electronic component called a capacitor which can store an electrical charge for a period of time. The level of charge in a capacitor could be set to store information, and then measured to read the information when required.

I/O devices

I/O is a general term for devices that send computers information from the outside world and that return the results of computations. These results can either be viewed directly by a user, or they can be sent to another machine, whose control has been assigned the computer: In a robot, for instance, the controlling computer's major output device is the robot itself. The first generation of computers were equipped with a fairly limited range of input devices. A punch card reader, or something similar, was used to enter instructions and data into the computer's memory, and some kind of printer, usually a modified teletype, was used to record the results. Over the years, a huge variety of other devices have been added. For the personal computer, for instance, keyboards and mice are the primary ways people directly enter information into the computer; and monitors are the primary way in which information from the computer is presented back to the user, though printers, speakers, and headphones are common, too. There is a huge variety of other devices for obtaining other types of input. One example is the digital camera, which can be used to input visual information. There are two prominent classes of I/O devices. The first class is that of secondary storage devices, such as hard disks, CD-ROMs, key drives and the like, which represent comparatively slow, but high-capacity devices, where information can be stored for later retrieval; the second class is that of devices used to access computer networks. The ability to transfer data between computers has opened up a huge range of capabilities for the computer. The global Internet allows millions of computers to transfer information of all types between each other.

Instructions

The instructions interpreted by the control unit, and executed by the ALU, are not nearly as rich as a human language. A computer responds only to a limited number of instructions, but they are well defined, simple, and unambiguous. Typical sorts of instructions supported by most computers are "copy the contents of memory cell 5 and place the copy in cell 10", "add the contents of cell 7 to the contents of cell 13 and place the result in cell 20", "if the contents of cell 999 are 0, the next instruction is at cell 30". All computer instructions fall into one of four categories: 1) moving data from one location to another; 2) executing arithmetic and logical processes on data; 3) testing the condition of data; and 4) altering the sequence of operations. Instructions are represented within the computer as binary code - a base two system of counting. For example, the code for one kind of "copy" operation in the Intel line of microprocessors is 10110000. The particular instruction set that a specific computer supports is known as that computer's machine language. To slightly oversimplify, if two computers have CPUs that respond to the same set of instructions identically, software from one can run on the other without modification. This easy portability of existing software creates a great incentive to stick with existing designs, only switching for the most compelling of reasons, and has gradually narrowed the number of distinct instruction set architectures in the marketplace.

Programs

Computer programs are simply lists of instructions for the computer to execute. These can range from just a few instructions which perform a simple task, to a much more complex instruction list which may also include tables of data. Many computer programs contain millions of instructions, and many of those instructions are executed repeatedly. A typical modern PC (in the year 2005) can execute around 3 billion instructions per second. Computers do not gain their extraordinary capabilities through the ability to execute complex instructions. Rather, they do millions of simple instructions arranged by people known as programmers. In practice, people do not normally write the instructions for computers directly in machine language. Such programming is incredibly tedious and highly error-prone, making programmers very unproductive. Instead, programmers describe the desired actions in a "high level" programming language which is then translated into the machine language automatically by special computer programs (interpreters and compilers). Some programming languages map very closely to the machine language, such as Assembly Language (low level languages); at the other end, languages like Prolog are based on abstract principles far removed from the details of the machine's actual operation (high level languages). The language chosen for a particular task depends on the nature of the task, the skill set of the programmers, tool availability and, often, the requirements of the customers (for instance, projects for the US military were often required to be in the Ada programming language). Computer software is an alternative term for computer programs; it is a more inclusive phrase and includes all the ancillary material accompanying the program needed to do useful tasks. For instance, a video game includes not only the program itself, but also data representing the pictures, sounds, and other material needed to create the virtual environment of the game. A computer application is a piece of computer software provided to many computer users, often in a retail environment. The stereotypical modern example of an application is perhaps the office suite, a set of interrelated programs for performing common office tasks. Going from the extremely simple capabilities of a single machine language instruction to the myriad capabilities of application programs means that many computer programs are extremely large and complex. A typical example is the Firefox web browser, created from roughly 2 million lines of computer code in the C++ programming language; there are many projects of even bigger scope, built by large teams of programmers. The management of this enormous complexity is key to making such projects possible; programming languages, and programming practices, enable the task to be divided into smaller and smaller subtasks until they come within the capabilities of a single programmer in a reasonable period. Nevertheless, the process of developing software remains slow, unpredictable, and error-prone; the discipline of software engineering has attempted, with some partial success, to make the process quicker and more productive and improve the quality of the end product.

Libraries and operating systems

Soon after the development of the computer, it was discovered that certain tasks were required in many different programs; an early example was computing some of the standard mathematical functions. For the purposes of efficiency, standard versions of these were collected in libraries and made available to all who required them. A particularly common task set related to handling the gritty details of "talking" to the various I/O devices, so libraries for these were quickly developed. By the 1960s, with computers in wide industrial use for many purposes, it became common for them to be used for many different jobs within an organization. Soon, special software to automate the scheduling and execution of these many jobs became available. The combination of managing "hardware" and scheduling jobs became known as the "operating system"; the classic example of this type of early operating system was OS/360 by IBM. The next major development in operating systems was timesharing - the idea that multiple users could use the machine "simultaneously" by keeping all of their programs in memory, executing each user's program for a short time so as to provide the illusion that each user had their own computer. Such a development required the operating system to provide each user's programs with a "virtual machine" such that one user's program could not interfere with another's (by accident or design). The range of devices that operating systems had to manage also expanded; a notable one was hard disks; the idea of individual "files" and a hierarchical structure of "directories" (now often called folders) greatly simplified the use of these devices for permanent storage. Security access controls, allowing computer users access only to files, directories and programs they had permissions to use, were also common. Perhaps the last major addition to the operating system were tools to provide programs with a standardized graphical user interface. While there are few technical reasons why a GUI has to be tied to the rest of an operating system, it allows the operating system vendor to encourage all the software for their operating system to have a similar looking and acting interface. Outside these "core" functions, operating systems are usually shipped with an array of other tools, some of which may have little connection with these original core functions but have been found useful by enough customers for a provider to include them. For instance, Apple's Mac OS X ships with a digital video editor application. Not all operating systems provide all of the above functions; operating systems for smaller computers typically provide fewer, such as the highly minimal operating systems for early microcomputers. Embedded computers may have a specialized operating system, or sometimes none at all. Instead, the custom programs written for their task perform all necessary functions that would be performed by an operating system in less specialized roles.

Computer applications

Embedded computer The first electronic digital computers, with their large size and cost, mainly performed scientific calculations, often to support military objectives. The ENIAC was originally designed to calculate ballistics-firing tables for artillery, but it was also used to calculate neutron cross-sectional densities to help in the design of the hydrogen bomb. This calculation, performed in December, 1945 through January, 1946 and involving over a million punch cards of data, showed the design then under consideration would fail. (Many of the most powerful supercomputers available today are also used for nuclear weapons simulations.) The CSIR Mk I, the first Australian stored-program computer, evaluated rainfall patterns for the catchment area of the Snowy Mountains Scheme, a large hydroelectric generation project. Others were used in cryptanalysis, for example the first programmable (though not general-purpose) digital electronic computer, Colossus, built in 1943 during World War II. Despite this early focus of scientific and military engineering applications, computers were quickly used in other areas. From the beginning, stored program computers were applied to business problems. The LEO, a stored program-computer built by J. Lyons and Co. in the United Kingdom, was operational and being used for inventory management and other purposes 3 years before IBM built their first commercial stored-program computer. Continual reductions in the cost and size of computers saw them adopted by ever-smaller organizations. Moreover, with the invention of the microprocessor in the 1970s, it became possible to produce inexpensive computers. In the 1980s, personal computers became popular for many tasks, including book-keeping, writing and printing documents, calculating forecasts and other repetitive mathematical tasks involving spreadsheets. spreadsheet (1989) marked the acceptance of CGI in the visual effects industry.]] As computers have become cheaper, they have been used extensively in the creative arts as well. Sound, still pictures, and video are now routinely created (through synthesizers, computer graphics and computer animation), and near-universally edited by computer. They have also been used for entertainment, with the video game becoming a huge industry. Computers have been used to control mechanical devices since they became small and cheap enough to do so; indeed, a major spur for integrated circuit technology was building a computer small enough to guide the Apollo missions and the Minuteman missile, two of the first major applications for embedded computers. Today, it is almost rarer to find a powered mechanical device not controlled by a computer than to find one that is at least partly so. Perhaps the most famous computer-controlled mechanical devices are robots, machines with more-or-less human appearance and some subset of their capabilities. Industrial robots have become commonplace in mass production, but general-purpose human-like robots have not lived up to the promise of their fictional counterparts and remain either toys or research projects. Robotics, indeed, is the physical expressions of the field of artificial intelligence, a discipline whose exact boundaries are fuzzy but to some degree involves attempting to give computers capabilities that they do not currently possess but humans do. Over the years, methods have been developed to allow computers to do things previously regarded as the exclusive domain of humans - for instance, "read" handwriting, play chess, or perform symbolic integration. However, progress on creating a computer that exhibits "general" intelligence comparable to a human has been extremely slow.

Networking and the Internet

In the 1970s, computer engineers at research institutions throughout the US began to link their computers together using telecommunications technology. This effort was funded by ARPA, and the computer network that it produced was called the ARPANET. The technologies that made the Arpanet possible spread and evolved. In time, the network spread beyond academic and military institutions and became known as the Internet. The emergence of networking involved a redefinition of the nature and boundaries of the computer. In the phrase of John Gage and Bill Joy (of Sun Microsystems), "the network is the computer". Computer operating systems and applications were modified to include the ability to define and access the resources of other computers on the network, such as peripheral devices, stored information, and the like, as extensions of the resources of an individual computer. Initially these facilities were available primarily to people working in high-tech environments, but in the 1990s the spread of applications like email and the World Wide Web, combined with the development of cheap, fast networking technologies like Ethernet and ADSL saw computer networking become ubiquitous almost everywhere. In fact, the number of computers that are networked is growing phenomenally. A very large proportion of personal computers regularly connect to the Internet to communicate and receive information.

Computing professions and disciplines

In the developed world, virtually every profession makes use of computers. However, certain professional and academic disciplines have evolved that specialize in techniques to construct, program, and use computers. Terminology for different professional disciplines is still somewhat fluid and new fields emerge from time to time: however, some of the major groupings are as follows:
- Computer engineering is that branch of electronic engineering devoted to the physical construction of computers and their attendant components.
- Computer science is an academic study of the processes related to computation, such as developing efficient algorithms to perform specific tasks. It has tackled questions as to whether problems can be solved at all using a computer, how efficiently they can be solved, and how to construct efficient programs to compute solutions. A huge array of specialties has developed within computer science to investigate different classes of problem.
- Software engineering concentrates on methodologies and practices to allow the development of reliable software systems while minimizing, and reliably estimating, costs and timelines.
- Information systems concentrates on the use and deployment of computer systems in a wider organizational (usually business) context.
- Many disciplines have developed at the intersection of computers with other professions; one of many examples is experts in geographical information systems who apply computer technology to problems of managing geographical information.

See also


- Computer hardware
- Computability theory
- Computer datasheet
- Computer expo
- Computer science
- Computer types: desktop, laptop, desknote, roll-away computer, embedded computer, cart computer
- Computing
- Computers in fiction
- Digital
- History of computing
- List of computing topics
- Personal computer
- Word processing
- Computer Programming
- Quantum Computer

References


- [http://www.andrew.mallett.net/tech Learn to configure your computer at Andy's Tech Page] category: computer science ja:コンピュータ ko:컴퓨터 ms:Komputer nb:Datamaskin simple:Computer th:คอมพิวเตอร์

User

User refers to:
- The word user, cf wiktionary:user
- User (telecommunications)
- User (computing)
- User of drugs, usually illegal ones.
- USER (recording artist)
- User control is the provision of a facility in educational software that allows the user of that resource to exercise control over how information is presented
- User of Wikimedia Foundation projects including Wikipedia. Users of Wikipedia are called Wikipedians. Each user has a user page - see Wikipedia:User page.

Desktop environment

In graphical computing, a desktop environment (DE) offers a complete graphical user interface (GUI) solution to operate a computer. The name is derived from the desktop metaphor used by most of these interfaces. A DE provides icons, toolbars, applications, applets, and abilities like drag and drop. As a whole, the particularities of design and function of a desktop environment endow it with a distinctive look and feel. The desktop environments for the popular operating systems Microsoft Windows and Mac OS X are, in their intended use, relatively static. This assures a consistent user experience. However, there are alternative themes and third-party software that can completely change both the appearance of common interface elements such as windows, buttons and icons and the interface model itself (in Windows this is accomplished by replacing the default Explorer shell). On systems running the X Window System (typically Unix systems), the desktop environment is much more flexible. In this context, a DE typically consists of a window manager, a set of themes, and programs and libraries for managing the desktop. All of these individual modules can be exchanged and individually configured to achieve a unique combination, but most desktop environments provide a default configuration that requires minimal user input. Not all of the program code that is part of a DE has effects which are directly visible to the user. Some of it may be low-level code. KDE, for example, provides so-called io slaves which give the user access to a wide range of virtual devices. These io slaves are not available outside the KDE environment.

Examples of desktop environments

Well-known desktop environments examples (specially for Unixes), include GNOME, KDE, Xfce, LG3D and CDE. However, a number of other desktop environments also exist, including (but are not limited to): EDE, UDE, Mezzo, ROX Desktop, GEM, PerlTop, XPde, Xito, IRIX Interactive Desktop and arm0nia. Some window managers also include elements reminiscent of those found in desktop environments, most prominently Enlightenment. Category:Graphical user interface simple:Desktop environment

KDE

KDE (K Desktop Environment) is a free desktop environment and development platform built with Trolltech's Qt toolkit. It runs on most Unix and Unix-like systems, such as Linux, BSD, AIX and Solaris. There are also ports to Mac OS X using its X11 layer and Microsoft Windows using Cygwin. Currently, a large portion of the primary KDE libraries and a few other applications can work natively on Microsoft Windows, thanks to the [http://wiki.kde.org/tiki-index.php?page=KDElibs+for+win32 KDElibs/win32 Project]. Ports of other KDE applications are being discussed. KDE is developed in conjunction with KDevelop, a software development suite, and KOffice, an office suite. The "K" originally stood for "Kool" (as the "C" as in "cool" was already used in the acronym for the Common Desktop Environment), but was changed soon after to stand simply for "K", which is "the first letter before 'L' (which stands for Linux) in the Latin alphabet." The project's mascot is a green dragon named Konqi. Konqi can be found in various applications, including when the user logs out and in the "About KDE" screen.

Early history

KDE was founded in 1996 by Matthias Ettrich, who was then a student at the University of Tübingen. He found a number of things wrong with the UNIX desktop at that time. Among his qualms, outlined in [http://groups.google.com/groups?selm=53tkvv%24b4j%40newsserv.zdv.uni-tuebingen.de a now-famous newsgroup post], were that none of the applications looked, felt, or worked alike. He proposed the formation of not only a set of applications, but rather a desktop environment, in which users could expect things to look, feel, and work consistently. He also wanted to make this desktop easy to use. One of his complaints with desktop applications of the time was that his girlfriend could not use them. That post spurred a lot of interest, and the KDE project was born. Matthias chose to use the Qt toolkit as the toolkit of choice of the KDE project. Other programmers quickly started developing KDE/Qt applications, and by early 1997, large and complex applications were being released. In mid-1997, the GNU project had concerns about the licensing of Qt, leading to their founding the GNOME Desktop project and Harmony, a now-abandoned project to clone Qt. Qt was later relicensed to provide the GNU General Public License as an option, which has eliminated the concerns of the GNU project. There is still considerable disagreement over the use of the full GPL for a library like Qt, and the restrictions this imposes on code linking to it. In particular, in order to develop proprietary software with KDE and Qt, it is necessary to purchase a commercial license from Trolltech. To prevent the codebase from being lost should Trolltech fail commercially, ownership of the code is held in a trust to be released under a BSD license should Trolltech cease to exist or stop updating the code. Both KDE and GNOME now participate in Freedesktop.org, an effort to standardise Unix desktop interoperability, although there is still some friendly competition between them.

Organization of the KDE project

Like many open source/free software projects, KDE is primarily a volunteer effort, although various companies, such as Novell (in the form of SUSE), Trolltech, and Mandriva employ developers to work on the project. Since a large number of individuals contribute to KDE in various ways (e.g. code, translation, artwork), organization of such a project is complex. Most problems are discussed on a number of different mailing lists. Important decisions, such as release dates and inclusion of new applications, are made on the kde-core-devel list by the so-called core developers. These are developers who have made significant contributions to KDE over a long period of time. Decisions are not made by a formal voting process, but by discussion on the mailing lists. In most cases this seems to work well, and major discussions (such as the question of whether the KDE 2 API should be broken in favour of KDE 3) are rare. While developers and users are now located all over the world, the project retains a strong base in Germany. The web servers are located at the universities of Tübingen and Kaiserslautern, a German non-profit organization (KDE e.V.) owns the trademark on "KDE", and KDE conferences often take place in Germany.

Release cycle and version numbers

As the project history below shows, the KDE team releases new versions on a frequent basis. It is rare that a release is delayed for more than one or two weeks. An exception was KDE 3.1, which was delayed for more than a month because of a number of security issues in the code base. There are two main types of releases:

Major release

There have been 11 major releases: 1.0, 1.1, 2.0, 2.1, 2.2, 3.0, 3.1, 3.2, 3.3, 3.4 and 3.5. trademark.]] A major KDE release has two version numbers, e.g. KDE 1.1. All KDE releases in the same major version (e.g. KDE1, KDE2 and KDE3) are both binary and source-compatible. This means for instance that software developed against KDE 3.0.x will work with all KDE3 releases. Only a major KDE release will incorporate new features. Changes requiring recompilation or porting never occur except during major version changes; this maintains a stable API for KDE application developers. The changes between KDE 1 and KDE 2 series were large and many, while the API changes between KDE 2 and KDE 3 were comparatively minor, meaning that applications could be easily ported to the new architecture. Up to now the KDE major version numbers follow the Qt release cycle. As soon as a major release is ready and announced, work on the next major release starts. A major release needs several months to be finished and many bugs that are fixed during this time are "backported" to the stable branch, meaning that these fixes are incorporated into the last stable release. The current major release is 3.5, which arrived on November 29, 2005. KDE 4 will succeed 3.5 sometime in 2006, and will be based on Qt 4.0 encompassing some major changes to the desktop.

Minor release

A minor KDE release has three version numbers, e.g. KDE 1.1.1, and the developers focus on fixing bugs, minor glitches and small usability improvements, as opposed to adding new features. For minor releases, a shortened release schedule is used. A minor release is based on a Subversion branch of a previous release and does not affect the "HEAD branch", the branch where the current development of the next major release takes place.
                     new features, 
                       bug fixes
 KDE 3.2 released -------------------->  KDE 3.3 (also called HEAD branch)
 (new development
  started)          bug fixes only
                  -------------------->  KDE 3.2 BRANCH (becoming a minor release)
The somewhat unusual name "3.0.5a" was used because of a lack of version numbers. Work on KDE 3.1 had already started and, up to that day, the release coordinator used version numbers such as 3.0.5, 3.0.6 internally in the main Subversion repository to mark snapshots of the upcoming 3.1. Then after 3.0.3, a number of important and unexpected bug fixes suddenly became necessary, leading to a conflict, because 3.0.6 was at this time already in use. More recent KDE release cycles have tagged pre-release snapshots with large revision numbers, such as 3.1.95, to avoid such conflicts. While development on KDE 2.x in general has stopped, important security fixes are backported to KDE 2.x, since many people still use it.

Criticism

The KDE interface is sometimes criticised for being too complex and including too many configurable options, as opposed to, say, Gnome, that actually reduces the configurable options available to the user (and is actually criticised for this [http://mail.gnome.org/archives/usability/2005-December/msg00021.html]). Although the subject is controversial, some areas of the user interface have been identified as being too cluttered and work has gone into reducing visual complexity for versions 3.4 and 3.5. One of the major goals of KDE 4.0 is to identify further areas that are lacking from a usability perspective and address these concerns. Other criticisms include the heavy integration of Konqueror into the desktop, which may not be the user's preferred browser and the way auto-detected removable media and samba shares must be mounted using konqueror. This type of behavior can make it seem like KDE is attempting to take over the operating systems. Despite the relative abundance of KDE-themed "K" applications some Linux users still prefer GNOME or desktop independant applications. Users may not like the style of such applications or the fact that these require the large KDE libraries to run when used outside the native KDE environment. Some of these applications suffer from long start up times when used with other window managers, however work is being done to correct this behavior. The default KDE looks very similar to Microsoft Windows and replicates some of the more controversial Windows features, such as integrating a web browser into a file manager and the removable media prompt dialogue recently added in KDE 3.5. While some say this might be a good thing to encourage Windows users to migrate to Linux, such "newbie" features are sometimes unappreciated by the hard-core Linux community. KDE is sometimes associated with distributions designed for less-experienced Linux users, though this is really not the case. Many other criticisms of KDE are addressed at the [http://kdemyths.urbanlizard.com/ KDE Myths] web site. However, the bottom line is that KDE is as functional as other environments (such as Gnome), and that criticisms usually originate from users of these other environments. Most KDE users are KDE users by choice, and are quite happy with the way their chosen environment is developing.

Architecture


- aRts - soundserver
- DCOP - system for communication between processes
- KHTML - HTML engine
- KIO - extensible network-transparent file access for KDE applications
- Kiosk - disable features within KDE to create a more controlled environment
- KParts - lightweight in-process graphical component framework
- Kwin - window manager
- KConfigXT - takes an XML file and produces source code to manage configuration options, including classes to glue the resulting code to configuration dialogs.
- Qt - cross platform graphical widget toolkit
- XMLGUI - allows defining UI elements such as menus and toolbars via XML files

Packaging

Due to the size of KDE, it is divided into several package categories to simplify installation. This is a reference scheme, packagers are free to use their own packages for KDE.
- aRts - KDE sound server.
- kdelibs - Primary libraries, containing most pieces of KDE architecture.
- kdebase - The base desktop and applications. Requires kdelibs.
- kdeaccessibility - Accessibility software.
- kdeaddons - Add-on software.
- kdeadmin - Administrative tools, intended for administering UNIX machines.
- kdeartwork - Additional artwork (widget style, screensavers, wallpapers, etc...)
- kdeedu - Educational software.
- kdegames - Games.
- kdegraphics - Tools for manip