Open-source software

Open-source software is software whose source code is published and available for editing. Source code is essentially the instructions for building the software, and it is what one edits for making changes to the software. One then rebuilds the software with some software-development tools.

History
In the early days of computer programming, the thought of making software proprietary never occurred to anyone. But as companies went into the software-writing business, they invented proprietary software so that their rivals will not rip them off. Proprietary software is almost always closed-source, with the source code either not published or else published in obfuscated form.

However, closed-source software has the problem of not being very portable, and of being vulnerable to hardware and software updates, all because its maintainers do not think it worth the money or effort to do. Around 1980, certain Richard Matthew Stallman (RMS) was bitten by this lack of support, and he set off to create a world of "free software", software that would be permanently open, thus making software permanently available for updating.

In the early 1980's, he started the GNU Project, a project for making a Unix imitation (GNU = "GNU's Not Unix"). By 1990, it had produced a lot of alternative Unix utilities, including a compiler, a program for building software from high-level-language instructions. It lacked a kernel, the lowest-level part of an operating system, the part that manages what's running and what memory each bit of software uses, and often also low-level I/O like files and networking, and GNU's "Hurd" kernel was far from ready to use at that time.

Unix itself was tied up in proprietary entanglements, with the BSD flavor of it only being freed from such entanglements in the early 1990's.

But in 1991, Linus Torvalds got impatient with Andrew Tanenbaum's version of Unix, Minix, AT seemed to want it to stay a teaching OS without further development. So Linus decided to write his own OS kernel. It was very rudimentary at first, and it needed to be loaded with Minix, but it worked. But it attracted many frustrated would-be Minix developers, and Linux became a Big Thing.

Also in the 1990's, Eric Steven Raymond (ESR) became an advocate of open-source software, and he even helped coin the term "open source". He wanted a term that was reasonably self-explanatory and not grossly ideological. He has argued that open-source software can sometimes make good business sense. He cites cases like shared development, doing services involving some software, and writing drivers and the like for hardware. Despite this advocacy, he thinks that proprietary software can be legitimate, and he thinks that RMS's stance is excessive.

So RMS represents the left wing of the open-source movement and ESR the right wing of it.

Open-Source Licenses
An important part of open-source software is licensing of it. Open-source licenses have proliferated, though they have a few basic themes and variations. Here are some of the most common ones.

The GNU General Public License
Composed by RMS, it mandates that source code licensed under it is to be permanently open, and that all source code created from it is also to be permanently open. RMS composed this as an imitation of a copyright-less world, and such a license is sometimes called "copyleft". A further provision is that any software that uses GPLed source code is itself to have GPLed source code, a "viral" sort of provision.

A weaker version of it is the Lesser General Public License (LGPL), which states that while modifications of source code must stay open, inclusion of LGPLed components in some software do not make the rest of that software's source code open. Thus, one can use LGPLed components in proprietary software.

BSD/MIT Licenses
These sorts of licenses generally state that while some source code is to be permanently open, but that modifications of it need not be, and that this source code and its modifications can be included in proprietary software without making its source code open.

These licenses may contain other conditions, like mentioning the license or the software's writers.