2010-07-30

(gitolite) a non-techie explanation of "distributions"...

(...and why a couple of recent announcements have me sporting a 70-mm smile these days!)

When you install Windows, you're used to doing this:

  • install Windows from one CD
  • install drivers for all your hardware, one from each CD
  • install MS-Office from another CD
  • install CD-burning software from yet another CD
  • install PowerDVD or some other DVD player (maybe you don't like Windows Media Player or maybe someone told you WMP reports to MS on all movies you watch!)
  • install Yahoo messenger or Gmail chat or Skype from the websites
When people install Linux, (especially if it's from a DVD) most of these things come with it.  And most of them have more than one choice:
  • various web browsers (Firefox, Konqueror, Epiphany, ...)
  • word processors (OpenOffice, KOffice, AbiWord, ...)
  • chat clients (pidgin, empathy, ... -- by the way you can use one chat client for both Yahoo and Gmail chat!)
  • music and video players (mplayer, xine, vlc, ...)
  • common tools like cd-writers (k3b, xcdroast, gnome-burner, ...)
  • not to mention games (I like tuxracer, my wife and mom love kshisen, my kids and nephews/nieces like tuxkart or something.  And for Solitaire fans, the "kpat" game contains 12 variations of Solitaire, and if that's not enough, "pysol" contains 50 or so!)
Great.  So who writes all this stuff?

If you guessed "Linus Torvalds", you'd be wrong.  Of course, he created Linux, but he's only interested in the core of the operating system itself (called the "kernel").  Which is great because he's damn good at it, and really, if that doesn't work well, none of the others will.  When you hear people talk of Linux machines running for months together without a reboot, you can thank Linus and the hundreds of people all around the world that help him maintain the kernel.

So once again, who writes all the stuff you see, and how does it get to you?

Well there are people.  Lots of them.  Or, in some cases, there are organisations (like the Mozilla Foundation, which produces the Firefox browser and Thunderbird email client, etc.)

Just for fun, let's refer to all this software as upstream software and to their authors as upstream authors.

The problem is, each of them puts his software on their own website.  And most of the time they only give source code -- you're expected to compile and install it yourself.

Now how would someone who just installed Linux for the first time be expected to:
  • know that he needs to do this
  • figure out what software he needs (for example, who would ever guess that the best "photoshop"-like program on Linux is called "gimp"?  Or the best dvd/cd-writer software is called k3b?)
  • figure out where to go for each item on his list (what is the "upstream website"?)
  • be able to "compile" and "install" anything?
In fact, how would he solve the chicken-and-egg problem of not having the tools to build the tools?

What you want is to just pop in a CD, click Yes a few times, and have a brand new, working, Linux machine on your table.

That's where distributions come in.  Red Hat is one such company (perhaps the most famous), Mandriva is another, and recently Canonical (who make Ubuntu) is also becoming well-known.  There are many community-driven ones too, which are often better, depending on your special circumstances.  [Why there are so many distributions is a whole another story, but the short answer is that "one size does not fit all".  Some people want ease of use, some want raw power and a simple GUI, some want all sorts of whizz-bang, some want a rock solid system that they can use as a server and put it in a backroom, while some people want one that can fit within a 52-MB "business card CD" (see http://en.wikipedia.org/wiki/Bootable_business_card ) and so on and on...]

But whatever the size, scope,or goals, what a distribution does is:
  • take all the various pieces of software that a user might want
  • compile them all
  • put them all together in one CD
  • put a nice graphical "installer" tool to make things as painless as possible
  • take all the additional software they couldn't fit on the CD/DVD and put it on a series of websites/ftp servers
  • give you a nice graphical "package manager" to search for and grab stuff from those servers
All this is a lot of hard work.  Plus they have to:
  • keep track of all the upstream software
  • when a new version of the upstream software comes out, they get it, compile it, make sure it works ok, etc.
  • make any simple fixes if needed
  • make sure it works well with all the other software they're putting on the same CD
  • keep track of bug reports submitted by their users, determine the cause of the bug, and either fix it themselves or send it to "upstream" so that the upstream knows and has a chance to fix it.  (And once upstream fixes it, they have to bring those changes in, compile, test... the whole cycle repeats)
(In addition, they also have to look for security issues that get reported by the upstream author or by third parties, and if something comes up they have to do all this on an emergency basis).

[For those of you who know how the newspaper business works, I'd say this is not far from what goes into creating a newspaper or a weekly newsmagazine.  Each section has its own editor, they have to get stories from their sources, write them up, edit them, put pictures on them, and send it to someone who will put all of them together]

Now Fedora is one of the more popular distributions.  They have 10,000 repositories, and over 1000 "package maintainers".  Each of these maintainers is constantly working on one or more of the activities listed above, and, as the deadline for a major release comes closer, things get hectic.

Fedora needs a central sever to manage all this hectic activity, one where each of these package maintainers can log onto, and be able to change only the packages they volunteered to maintain.

Which means that server needs what is called "access control" -- prevent one person from changing stuff belonging to another, really.

And so we come to what gitolite does: it provides access control to a server hosting several thousand source projects with several hundred developers.  It wasn't originally designed for that -- I just wrote it for myself to use at work here.  It just turned out to be good enough, (with lots of help from others, of course, since that is how open source works) for something as ambitious as this!

----

Hope that helped.

And finally, the announcements themselves:
Fedora is one of the most popular distributions of Linux.

KDE is one of the 2 most popular/powerful "desktop environments" available for Linux.  See http://en.wikipedia.org/wiki/Kde for more on this.

1 comment:

Unknown said...

If you'd like an even bigger smile - look at development of corporate administration tools - like gui/web administration for managing gitolite permissioning... I think really thats the only reason my boss wants to implement git in our corporate environment with github:fi instead of the gitolite we have been testing with...