8

Linux comes most often to your computer as a distribution. This distribution contains a lot more than only Linux: Browser, Editor, Games, Terminal, Spreadsheet and so on. But nearly all software in distributions is open source. Why is open source software often spread via distributions? There is no Windows-distribution, with all the important software like Office and so on, so why is it so common for open source?

  • You might be confusing linux distros with package management tools here. – Sparr Jul 6 '15 at 21:01
  • @Sparr: Distros (often) use package management tools. That's the connection. Package management tools could manage proprietary software, why isn't it used that was? – Mnementh Jul 6 '15 at 21:04
  • Another point that hasn't been mentioned yet is that proprietary software comes in binary form, which will necessarily link to a specific version of libraries, which means they're not portable across distributions. – nyuszika7h Jul 6 '15 at 21:23
  • @nyuszika7h: Make an answer from that. – Mnementh Jul 6 '15 at 21:28
4

There are two factors at play that make Linux teem with distributions, both loosely related to being open source: it's freely redistributable, and it has a bazaar development model.

Making a software distribution requires having the permission to distribute the software. When the software is freely redistributable, the distributor doesn't need to seek permission, so they can stick to technical issues and not worry about legal issues.

Being open source is not necessary, but it can help for some common objectives of distributions. For example, distributions bear the responsibility for sharing timely security fixes; having the source available allows the distributor to make a security fix if a flaw is discovered, even if the original author is unresponsive. Having the source available also broadens the offer by allowing, for example, binary distributions for platforms that the original author cannot or is unwilling to support directly.

Note that there are distributions of non-redistributable software, even for-pay software. They tend to be called app stores. App stores got started only when most people were downloading their software from the Internet; Apple's store for iPhone software made them mainstream. Windows got onto the act later because it started out when software was bought on floppies, but there is a Windows store nowadays (since Windows 8).

Now on to the second point: what makes the Linux ecosystem different from BSD, when they're all free software? It's the bazaar vs the cathedral. BSD systems follow a cathedral-type model, where a team develops a core system. There are three main BSD systems (Free, Open and Net) and a lot of minor ones. Each system comes with a port collection: a distribution of third-party software, with a package manager. BSD systems make a clear distinction between the core software (not always written in-house, but maintained in-house) and the third-party software built through ports and managed by the package manager.

Linux distributions, on the other hand, put together a large assemblage of software that's maintained separately. Even a minimal Linux installation needs to assemble a lot of different products: at least a kernel, a bootloader, an init system, a shell, some system utilities, some file and text processing utilities, various hardware management and network configuration utilities, — and that's just to have the bare minimum with a system that does nothing useful. A desktop or server Linux system needs a lot more — web server, email, scheduled tasks, graphical user interface, … all come from one or more different providers. Linux distributions typically don't maintain any utilities themselves other than the system installer, a few configuration tools and the package manager and a few configuration tools (and sometimes even none of these.). Most Linux distributions don't make a sharp distinction between the core system and additional packages, if at all, and even if they do the core system consists of far more software than the distribution maintains by itself.

| improve this answer | |
3

Linux distributions use package management tools to handle what you describe. It is very difficult to manage the legal hurdles involved in packaging and redistributing software that is not free, or is not allowed to be redistributed under broad terms. No one can put Microsoft Office in a package manager except Microsoft, because Microsoft won't give anyone a license to re-sell or re-distribute their software in that fashion.

There has been a lot of smaller-community and commercial progress in package management for Windows in the last ten years or so, but it will be a very long time before there is anything equivalent to the systems for operating systems that are themselves open source.

Existing package management systems for Windows:

Potential package management functionality in Windows 10: http://www.howtogeek.com/200334/windows-10-includes-a-linux-style-package-manager-named-oneget/

| improve this answer | |
2

A large distribution like Debian has tens of thousands of packages, from thousands of original development teams. Distributions take care of most of the hassle involved in downloading the source files and compiling them for you - rather than everyone figuring it out themselves you can rely on the cooperative work of the community.

Some things that distributions handle for you:

  • Ensuring all the different types of files (binaries, libraries, shared header files, documentation, icons) end up in conventionalised locations, which differ depending on the distribution
  • Handle locating the correct version of a compiler or interpreter. You could have Python programs which need to run in versions 2.5, 2.6, 2.7, 3.0 and 3.1, each of which expect to run with a simple "python" command. The distribution handles whatever changes are needed so that each package runs the version it needs.
  • Handles dependencies for you. Want to install some scientific Python program? The distribution will automatically install both Python, NumPy and SciPy for you, and it will set them up to know where each other is.
  • Speed! You can get distributions that don't use binaries by default (Gentoo) but most will install binaries if they can, saving you a lot of compile time.
  • Distributions will promptly give you important security updates. Before you read about the next SSL vulnerability you will probably already have installed a patch to fix it. If you had to manually patch it then it would take you longer, leaving you vulnerable for longer, and there's the risk you wouldn't patch it correctly.

Windows and OS X do have distributions, in their app stores, and in Windows Update (and the Apple equivalent.) It's just harder to get stuff into them. Actually it's hard to get stuff into Debian too, but if a project is open source/free software you should be able to eventually.

| improve this answer | |
1

Windows software is as a whole far more closed source than Linux software is, especially the essential software.

Windows itself is sold-source. The code is sold to people who can pay. To use the OS you require a license that you've paid for. The essential software, such as Office, is also proprietary, licensed, paid software.

It's more common to distribute open source software in a package because it's much easier. With closed source software you'd have to get explicit permission from every software author; with open source the license just allows you to do it. Think this piece of software goes well with this one? Sure, bundle them and distribute.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.