According to Wikipedia. computer software (or simply software) is that part of a computer system that consists of encoded information (or computer instructions). The term software is often used for a computer program, and vice versa. Software can consist of a single computer program, especially in recent micro-computer science, where raw processor performance and cheep memory capacity allow to run big programs. Over all, software is prevalently composed of one or more programs, but also of data that allow it to function. These programs can take different forms: executables, dynamic libraries ('dll' under Windows or 'so' under GNU/Linux), or just source files for an interpreter (e.g. Perl or PHP scripts). The data comes in different formats also: classic files, databases (relational, hierarchical, etc.), ... In micro-computer science, images, especially icons, are often integrated in the executable. General Definition of "Software"
Software contains instructions that are executed by a computer, as opposted to the physical device on which it functions (the 'hardware'). A 'program' is a list of instructions, written by a programmer in programming language (e.g. C language, C++ language, Java language, Python language). Often they are stored in a simple file. 'Software' however, is used to indicate a set of instructions consisting of several programs. A person with the right knowledge can read the program; this is called the 'source code' and is the receipt of the program. Closed-source software developers guard these secrets well; only Open-source software make their source code available to the public. The characteristics of the software are clearly described in the source code (translation of the binary 0 and 1, which are the only instructions the machine grasps). Compilers are used to translate source code into machine language. After this transformation we have what we call 'binaries', which can be interpreted by a machine. We still need to adapt them to the system software however (MS Windows, Mac OS, GNU/Linux, BSD, etc.) to make it function. Once it has been adapted to the host system, the software is ready to be installed and executed.
Software can be classified as follows:
The origins of free software
History begins at the start of the eighties, when Richard Stallman, a researcher of the MIT (Massachusetts Institute of Technology, U.S.A.), faced an ethical dilemma. His IT research section had been closed down; for years, he had shared his knowledge with his colleagues. Now, did he have to sell his knowledge to the highest bidder, or would he take the occasion to share his knowledge with the world? To appease his conscience, he created the principle of 'free software'. This concept is defined by the following four principles:
The GNU Project
After writing this statement, Stallman create the "Free Software Fondation" The objective of this foundation is promoting and developing free software; for his foundation, Stallman started writing applications. His ultimate goal: create an entirely free system. To protect the GNU software from commercial enterprises, Stallman created a licence, the GNU Public License. The licence reincorporates the four elementary principles mentioned above, with a solid judiciary background. The first real test for the GPL was a German trial in 2004, where a judge ruled a company violated it. GNU, as many acronyms in the *nix world, an abbreviation – GNU's Not Unix (the first word, GNU, doesn't really mean anything). In the eighties, when Microsoft and Windows were still midgets, Unix was the proprietary system number one.
The Open Source initiative
Another movement arose during the ninetees of the past century. They consider themselves more flexible than the FSF. The new current took form when in 1998 Netscape went free software – at that time, a group of people decided to support Netscape's move. They follow the Debian concept of free software.You can find their ten criteria here: original version of the OSI licence (version 1.9).
Where does "free software" come from ?
The first free software was developed by Stallman himself. To start out with building an operating system, you need real basic software (like the GNU compiler collection). But after the FSF wrote the whole base of the new OS, still one thing was lacking: a kernel. Stallman choose an extremely ambitious concept for the new kernel: it should become a micro-kernel (Windows for example uses a macro-kernel; Linux, however, uses a micro-kernel). However, the development of his kernel, didn't went as smooth as planned. As we speak, this system (called GNU/Hurd) is still not operational. At that point Linus Torvalds jumped in. This student from Finland was studying the inner workings of x386 CPUs, and had written a POSIX compatible program to understand the functioning of this processor generation. Just for fun, he wrote a kernel, using the GNU software. Last but not least, he distributed the kernel under the GNU Public License. The newly bred GNU/Linux combo seemed the perfect match; the development shifted up incredibly fast, thanks to the contributions of the hacker community (the term ‘hacker’ means an IT passionate, as opposed to a ‘cracker’, which is a person aiming at destroying (or cracking) other’s systems; however, the widespread term ‘hacker’ is mainly used by the general public with the meaning of ‘cracker’, thus giving it a negative connotation). When announced officially (version 1.0 is born in March 14th, 1994), the GNU/Linux system already has a solid reputation. Despite being usable by a hackers elite only, it looks very promising. A lot of kernels follow; in 1996, kernel 2.0 is released, in 1999, 2.2 follows. While 2.2 is rather buggy initially, with 2.2.13 it makes its way to the enterprise world, thanks to IBM’s mainframe patches. In 2001, the 2.4 kernel comes out. At the end of 2006 follows the 2.6 kernel. While 2.6 is the only one actively maintained, 2.4 still receives security updates. The focal point of Linux’ development is the internet; it’s the lifeblood of the free software community. The GNU/Linux system being one of its biggest achievements, it could well have never seen the light without the exchange of information between the developers spread all over the world. The free software offers a lot of quality apps – heck, most of the worldwide web runs on Linux servers, using software like Apache and PHP... Many apps are not only available on Linux, but have been ported to the BSD’s, Windows, and even Mac OS X. A quick summary of some of the most known apps: