Linux:Distributions

From xbe wiki

Jump to: navigation, search

Contents

[edit] What is a distribution?

[edit] The term

Short: a distribution is a mix/composition of software tools, which play nicely together (if everything goes well) and form an entire operating system. Every little program (binary executable to be precise) masters his part within the whole system. So the Kernel works for the basic system, tools like bash provide a shell to login, hotplug reacts on USB-events, and so on.

The distributions differ in:

  • What tools are used (a "tool" is often equalized with "package")
  • How they interact
  • What kernel is used (which version and if it's modified for the distribution)
  • How new versions of the packages can be installed
  • The directory structure (some are more strict to follow the standards, some less)

[edit] Getting concrete

Needless to say that any thing that can be distributed originates from a distributor. There are corporate distributors and community distributors and stuff in between.

Well known corporate distributors are:

  • SuSE (aka Novell)
  • RedHat
  • Mandrake

Well known community distributors are:

  • Debian
  • Gentoo
  • Fedora (community driven RedHat)

The difference between corporate and community driven distributors is seen in the goal of development. Corporate distributions are profit-based and the distributor needs to make some money with it because they mostly have own commercial infrastructure (like real offices and support centers) to pay. Community distributions on the other hand rely on volunteer activity by individuals, mostly coordinated through mailing lists, bugtrackers and such. They don't really have costs in developing or are founded by infrastructure or financial donations.

[edit] Choosing a distribution

[edit] Think twice (or even more)

Be aware that the decision which distribution you take is by far the most important one. If you choose a "wrong" distribution you might be pissed off and throw "Linux" away, thinking it's a shit. So think twice (or more often) before you choose a distribution.

I'm careful about recommending a distribution: I often recommended a specific distribution to friends. And in some cases, it went wrong. Some people simply want a system that "just runs", so they are set better with commercial distributions - I recommended community distributions for ethnical reasons and that doesn't go well all the times.

To wrap it up: I (and nobody) can't give you a distribution hint without knowing you. The decision can only be made with the circumstances in mind, in which the system should operate later. If you know your requirements ("what I need to work"), it helps a lot in the choosing process.

So let's go through some criterias that are important if you want to choose one. Maybe you could note your requirement to any point on a piece of paper or something - trust me, it helps ;-)

[edit] Important thoughts

Below you see some "points of decision" - depending on the requirements you have in each point, it gives you a help which distro to choose. It actually shows differences between major distros.

  • Package management
    A major point. I can't tell how important this one is in the daily work reality. Every distribution has a different approach how they handle "software installations". In some systems, you install binary packages (like Debian's *.deb or Fedora's/SuSE's *.rpm packages), other provide "on-station-compiling" (like FreeBSD or Gentoo).
    You'll be glad if the system you choose has a decent package management system that let's you install actual software without hassles. Also, depending on the activity and mentality of a distribution, you may have access to different packages and versions. For example, if you use a more "conservative" distribution, you'll probably find older (but often more stable) releases and less packages. And there are distributions where you have access to 100'000's of packages, but often a lot are not available or they are simply not stable enough.
  • Commercial support
    I'm sure you've heard from a Windows salesmen, that the lack of commercial support is a downpoint from Linux. Forget that, the Microsoft guy is cheating (like everytime) - most commercial distributions like SuSE, RedHat or Mandrake offer commercial support for their products like every company. They take full responsibility about their products - you'll have the company support besides the massive community information ressources you'll find on the web. Be aware that when you need real commercial support, you'll mostly have to stick with a distribution offering it. You have to be clear that if you take a Debian or Gentoo and something goes wrong, you'll completely on your own feets and you have to fix your problems with the help of mailing list archives, websites or forums. Not every company can afford to fix all issues themselves - but also, not every company can afford a support contract. So be clear what you want. Anyway, you could find "consulting companies" - they are not directly affiliated to a given distribution, but are experts in the field. You could use a Debian and sign up for a support contract with an external consulting company - they'll then help you out if you got any problems. So this way, you could also let you support using a community distribution - but you'll have to find trustable supporters for it ;-)
  • Learning curve
    Today there are many claims, that Windows is cheaper (and has a better ROI) as Linux, because Windows needs no courses or long introducing time. That is not exactly true. Every distribution needs different skills. There are some that are exactly as simple as Windows (i.e. RedHat), but they lack in flexibility. In general you could state: There more flexibility you need (look at the paragraph below), the more you'll probably have to teach to your employees. Look at Windows: setting up a server is as simple as drinking a beer, but doesn't give you any flexibility at the end.
    In general, commercial distribution offer more comfort in the field of installation (the operating system) while community distributions often have "home baked" and "geeky" installation interfaces. So, yes, if you don't want to spend a dollar for the system, you'll have to stick with a textual installation procedure - but who cares?! Eye candy is useless anyway during the installation - most distributions have the same features in the end.
  • Flexibility
    Every longterm SuSE-user (as example) knows it: if you want to install a software that has a lot dependencies (libraries and helper programs), working with RPM's (SuSE's package manegement) can be stressful and ugly ;-) Beneath lack of package availability, you also have to mess your time with version incompatibilities and so on. Exactly this situations reflect the bad sides of binary distributions: flexibility. I bet you won't experience such silly stuff with a BSD distribution or Gentoo for example. That's because they are designed to be flexible and open - but require more time until you're really in it and know how everything works. Once you've got in, it's a pleasure to work with a little "geeky" distribution like Gentoo or Debian. You'll see the real flexibility of a distribution when you try to compile an external program (sources that are not in their official package tree) or try to compile your own kernel version. Some distributions force you to use a given kernel with a given release of the distribution - those are bad ;-)
  • Maintenance
    Not only is it important how you install a package, also it's important how you update it. That's not the same ;-). See, open source development is really vital - new releases come out every day. This is kind of a problem for the distributors. On one hand, they want to provide a "secure" product with the latest security patches (fixes for found problems), on the other hand, they want to provide a "stable" product with tested software that is known as being stable, meaning that it doesn't crash every few hours. This situation is problematic and is handled differently by every distributor. Some just use older software and release a new version every few months. Others provide their updates through their package management system after testing the newer versions. Others give their users the option to really be on the "bleeding edge" and integrate new versions within hours, but mark some as "stable" while others are "unstable" - the user installs stable stuff by default, but has also the option to install something unstable. So this is important and goes together with "Package Management" (upper paragraph).
  • Integration/Migration
    Also think about your existing infrastructure. Especially if you have Windows environment (what most people/companies do) inside the network, think about the consequences. Generelly, every Linux distro works nice within a Windows network as its integrates nicely. But how is it the other way?! How deals the Windows with the new Linux inside the network? As funny it sounds, but also that is a task of Linux to assure that. As we can't really change Windows, we have to adapt Linux to these requirements. Some distributions work better with Windows out of the box, others have to be "tweaked" or just configured to do that. Think how many time you want to invest in the field on integration.
  • Reliability
    A really important point. Nobody wants a system that crashes as soon I do something useful. Every system is stable as long you do nothing with it. The popularity gain of Linux in the server market shows that Linux (as Kernel) is reliable and stable, but some distributions are more than others. An important rule: as less flexibility you've got, as more problems do you have if something is not reliable. I don't give any statements which distro is reliable or not, but if you've got a serious problem, you're thankful if you have flexible workaround/solving possibilites. Think about the possibilites the distro gives you within the worst case scenarios.
  • Scalability
    Generally, Linux is very scalable. You just put in more CPU's (if you can) or make a cluster of some machines that work together, forming a "distributed brain" ;-). But some distros (or editions of them) are just thought as office toolset and thus not really scalable.
  • Security
    Most people consider Linux as secure. Generally, this is a job for the kernel to be secure. Most distributions do a good job there as the kernel is not mainly their work (they make patches and that's it). But then, the real issue in the practical world are daemons. Every daemon that opens a port of network socket also opens a door for security flaws. This includes programs like Apache, Sendmail, Samba and so on. Every distribution has another user focus and as such has different daemons that come with it. A SuSE i.e. has a lot more brought-in daemons then a Debian install. This is not because the Debian folks care more about security, it's just because they think that the user has to add those daemons himself. Because if you - the user - manually installs a daemon - you know that it's running and you (should) know about the risks. But if SuSE installs some daemons at system install, you may not notice it. It just runs. And that could be bad..
  • Community
    A great point about open source software (OSS) is, that security flaws get fixed fast. This has a lot to do with community efforts. The Linux kernel itself is the best proof of a working community effort. If you have a problem and have to solve it fast, you're thankful if you've got web forums, mailinglist, IRC channels to help you out. There's were community distributions are strong. If you're a Debian/Gentoo user (as an simple example), you can login to an IRC server 24/7 and get "live support" for free if you ask for it. As commercial distro user, you mostly have access to knowledge bases and forums too, but mostly the real community support is not as strong as with the community distros (logical). Also think of one point: Let's imagine SuSE (which means Novell) goes down and has to close its doors. With that, you not only loose the future development, you also loose your support contract (worst case). A real working community distribution is nearly unable to die because the possibility that all individuals quit their work at the same time is near to zero. And if someone quits, the position goes to another one, continuing the work.
  • The ethical part
    Actually, I don't see any big difference in giving Microsoft 200$ for license or SuSE 200$ for a license - it's the same cost. Both are worldwide corporations and want to make money. Sure, Microsoft has an evil history and bad karma. That's where ethnic stuff comes into play. If you can "invest" the _time_ to use a community distribution, do it. It doesn't cost you any money, it's just time. And you have to pay this time to your workers anyway. But you don't put money in dirty Microsoft asses, maybe supporting evil activities. You also get real independence if you invest some time - you can build up own knowledge and master it without external help, if you just invest some time. In the end you're the winner (ethnical and financial) and can smile if the whole world complains about a new Windows/SQLServer/Outlook worm and drink a coffee while the others download stuff from Windows Update.

[edit] And what now?

I hope you're curious now to try out something. There are good resources on the net that help you to get a overlook over all available distributions. And well, the're a lot. Lot of junk, lot is unmantained, lots are unusuable, but some are good. Go into the forest and find your tree ;-)

  • Linux.org distro Index
    Has a good index, let's you specifiy some search criteria and find good suited distributions. You can also exclude unmantained projects.
  • DistroWatch
    Is a bit messy and it seems they have to make money with it, but is a good overlook method to see "what people use". Features a "Top 10" of distributions which is not really objective (impossible to do it objectivly). Also has actual news and is multilingual.
  • LinuxISO
    Is the place to find ISO's ready to burn to a CD. Features the actual releases and helps you to get the ISOs burned.
  • Linux Distributions @ Freshmeat
    Freshmeat is always a good resource, they also have an own category for distributions. Check it out ;-)

[edit] Personal recommendations

[edit] Objectivity

If you're searching your distribution and talk with people about that, keep one fact in mind: Nobody is really objective when it comes to distributions. Every Linux user has a given preference through his experiences and this leads to unobjective recommendations. Really.

This rule also includes me. I'm a bit frustrated from stuff like RedHat or SuSE as I experienced their lack of flexibility (in my sight) and maybe that changed. I never tried it again with a commercial distro, so I'm really not objective.

[edit] The "best"

Also keep in mind that there is no "best" distribution. I often get askek which is "the best" distribution - a Linux "Pro" should never answer this question directly ;-). I told you some important points which you should look at in this article. The best one is which best covers your needs - it's that easy ;-).

And if you talk with someone which tells you that "Distro X is the only one you should use", ask him how many distributions he has tried. If he tells you that he tested through all known major distributions, his opinion is worth a lot. If the distro he mentions is the only one he ever tried, don't trust him ;-).

I personally really tried through nearby all known distributions (I tried SuSE, RedHat, Mandrake, Debian, FreeBSD, Knoppix, Lindows [ehm, Linspire], Slackware and Gentoo) and I'm a happy Gentoo user since the year 2002. It's community is great, the package management is fantastic and you have the maximum amount of flexibility you can have. But that's only my opinion..

[edit] Evangelism

As already mentioned, nobody is really objective on the net regarding to distributions. You often see a lot of guys really "promoting" their distros in a missionary way, like Saulus (or was it Paulus?!) did for the Christians. Especially the community distribution fans are known for true evangelism, meaning, that they recommend their distribution in every given occasion. Also Gentoo Linux users are known for that (what includes me once again *g).

This is not really bad or something. You just have to analyze the advantages they give you and track it down to your case. For example, Gentoo users often refer to the "enhanced performance tweaking possibilities", meaning they can specify their own compiler flags. Actually, nobody ever experienced a "real boost" in performance just because of that - but the distro fans promote it as a real enhancement. It isn't really, at least for the typical desktop usage.

Personal tools