Answers to a random email

So, I was going to just respond to an email and then I thought…maybe this info has Google Juice!  I believe I’ve taken out any information that would make the emailer identifiable.  If you think I left something in I should take out, let me know!

First short question:

I got your email from the Madison Linux User Group site. I have a school project and want to learn more about Linux. If you could give me a little feedback that would be greatly appreciated! I am wondering what methods people use to learn how to develop Linux?

My first response

What class is it you are taking?  That will help determine how best to answer the question.

“develop Linux” can have a few different meanings.  Are you really talking about developing Linux, the kernel, or simply developing apps for Linux, or writing scripts in Linux?

For kernel development, the best place to go is kernel.org

For application development, things aren’t much different than any other language.  You have to pick a language (Python is popular on Linux) and you have to have a proper installer (this is a bit trickier on Linux as different distros have different installation methods).  If you don’t want to package for a specific distro, you can distribute code with a “makefile” so people can compile it.  While Linux (the kernel) is open source, there’s nothing that says your apps have to be FLOSS.  Now, most people on Linux more-or-less expect things to be FLOSS, but there’s nothing that requires you to release.  Also, the way the GPL works (the license for the kernel) you do NOT have to release source unless you distribute the source.  So, if you had some fix you wanted that in some way was insecure for you to release the source, you simply could not release the binary.  It’s really not as complicated as it sounds.  The GPL is very human readable and doesn’t have a lot of lawyery stuff.

Now, if you’re just talking about scripting, there are several books on the subject, many of which are distro specific but most of the concepts go across distros.  There is a plethora of information out on the web. Most packages have “man” pages, which is short for “manual”.  I personally find man pages hard to read.

Mostly, I’d encourage you to get involved in the community.  MadLUG has a facebook page, for instance: http://www.facebook.com/#!/group.php?gid=327643295229

The facebook isn’t used as much as the mailing list, but sometimes people don’t want to get all the help emails that come out over the list, so if you are just getting started maybe facebook is a better place.

Sorry to hit you with so many questions, but the beauty and the curse of open source is that there are a ton of options!

Second email

From a handful of speakers we’ve had speaking about open source software, we are asked to create a research type document similar to a white paper.

I believe what I am asking is about application development. In my mind, I was thinking of how a company would take the Linux base code and add/change code to make the system meet their business needs.
Are the different types of Linux, like Fedora, Ubuntu, Red Hat, etc. different in the sense of the kernel and applications?

Second response

I believe what I am asking is about application development. In my mind, I was thinking of how a company would take the Linux base code and add/change code to make the system meet their business needs.
Ah, you should really look into the Linux Foundation for info on that.  If you look at http://www.linuxfoundation.org/about/members you will see a ton of big-name companies involved.

The thing to remember about a Linux distro is that it is a collection of software.  An Ubuntu CD is roughly 700MB, but the kernel (the only thing properly know as “Linux”) is just about 4MB.  Now, the source is going to be much larger than that, but you can see there is a lot of other stuff in there.  The reason the term Linux is used broadly goes back to the beginnings of the GNU project.  Richard Stallman and the FSF wanted to build what they call a “free software” operating system.  If you’re curious about free software vs. open source there’s a ton of stuff online about it.  Anyway, Stallman and co had much of the work done…scheduler, text editor, etc, but they did not have a kernel.  I don’t know how many years later Torvalds started Linux, but when he did it was the last piece to the puzzle.  It’s like a basketball game with a game winning shot.  Let’s say it’s 81-80.   That one shot at the buzzer gets all the glory, but there were 79 points scored before that shot…and without all of those 79 points the game would be lost (or tied, but you get the point).

Applications are really going to very.  There are a lot of internal applications, like at my job we have home-grown time-logging software that runs on Linux (it may actually be Solaris in this case, don’t know).  There are application layers like JBoss, there are databases such as Oracle and MySQL.

For applications you are going to have to pick a language…Python and Java are two big ones, but C and C++ are used.  MindTouch is written on a newer language called Mono.  To me, Perl is mostly a scripting language, but the later versions of perl are also object oriented.

I’m really the wrong person to be discussion application development with.  I’m a systems administrator and thus spend my time writing scripts and configuring things, not building applications.  You might get more specific answers by emailing the mailing list.  You can join at http://www.madisonlinux.org/mailman/listinfo/madlug

If you decide to mail the list, try to be as specific as possible, or you’re likely to get a lot of questions asked, just like I asked some.

Are the different types of Linux, like Fedora, Ubuntu, Red Hat, etc. different in the sense of the kernel and applications?
Yes on both, with some caveats.  The biggest differences between the different versions of Linux are package management.

Debian & Ubuntu use apt and .deb
Fedora, Red Hat, CentOS and SUSE use yum and rpm (though I think SUSE may not actually use yum, they definitely use rpm)

If you’ve used Windows and Mac both, you can see the equivalent differences in package management.  Windows has .exe and .msi.  OS X uses .dmg.  Package Management on Windows and Mac is a joke though.  There is no equivalent to yum or apt.  BSD and Solaris also have *real* package management.

Also, there are other Linuxes that have different package management systems.  Gentoo has portage and Arch has pacman.  Most of the Linuxes fall into one of those four camps, but Slackware is another big one.

So, Ubuntu is Debian-based and you will see Ubuntu-based a lot too.

It’s a little more complicated on the Red Hat side.  CentOS is a binary equivalent to RHEL.  Fedora is, more-or-less, an alpha for RHEL.

Aside from that on the application side there’s GNOME and KDE though all major distros are capable of both (there are also other window managers).  The business world typically doesn’t care much about GUI stuff though.  They are more concerned about things like Oracle, MySQL and Apache.

If you go to kernel.org, you will get what is called the “mainline” kernel.  I really don’t know much about kernel development, but the distros do have different versions of the kernel.  The kernels are interchangeable though.  It’s like a car with a different engine.  One Corvetter may have a 300hp and another may have a 400hp engine.  That doesn’t make them any less corvettes though.  The question of hp is not just a question of cost, particularly with an open source project.  The 400hp engine is going to require more power. For instance, there are some problems with using the “real time” kernel (for instance, wireless drivers may not be compiled for it), but if you are doing something like audio editing, you are going to want that kernel.

Some pieces are easier than others to drop in and out and some distros make it easier to drop in and out than others do.

Again, this tends to be a lot less complicated than it sounds.  Most people are either Red Hat people or Debian people (and I’m including Ubuntu when I say Debian) so they know their ecosystem and what the other distros do doesn’t really matter to them.  Again, you can think of it like cars.  There are dealers that do domestic and dealers that do imports.  It really doesn’t matter to the import guys what Ford does, but both Fords and Aston Martins are cars.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: