Binary incompatibility of Linux distributions
Amedee Van Gasse (Ubuntu)
amedee-ubuntu at amedee.be
Thu May 14 11:25:31 UTC 2009
On Thu, May 14, 2009 06:13, Christopher Chan wrote:
>
>> However, what I've seen here is complaints that installing software in
>> Linux
>> where there is no packaged binary is too hard and therefore Linux needs
>> an easier way to install software. I call rubbish on that train of
>> thought.
> With you here.
>
>
>> The difference here is that Linux actually makes installing
>> from source so easy, relatively speaking, it becomes a visible option to
>> the masses, whereas in Windows word, that kind of procedure would be
>> way too daunting to even be considered among non-developers.
>>
>>
>
>
> Are you saying run: 'tar zxf tarball.tgz, cd tarball, ./configure, make,
> make install' is installing from source made so easy? Do you want to try
> getting a Windows user to do: Start->Run. cmd. tarball.exe?
> (notwithstanding the fact that double clicking on tarball.exe would have
> been much easier)
>
>
> Please just stick with your previous line of thinking and don't try to
> push the envelope too much. You assume that people have no problems
> navigating a console but they cannot if they know next to nothing about
> the directory layout of their operating system.
Please let me make a couple of observations.
* Microsoft has made a lot of effort to make all versions of Windows
binary compatible.
* GNU/Linux has made a lot of effort to make all distributions of Linux
source compatible.
Do you agree?
Software doesn't come from nowhere. It is written by software developers.
Programmers. People who write source code. Not regular users but computer
experts.
Do you agree?
A Windows software developer has to write a program, compile it only once,
test it on several versions of Windows. If he is a good programmer, his
compiled software will work on all mainstream versions of Windows: 2000,
XP, 2003, Vista, 2008, 7; with every combination of service packs.
Do you agree?
For most "user" software this is the case. Software like media players,
picture viewers, accounting software,... I'm not talking about "system"
software like hardware drivers.
Do you agree that I make a difference between user software and system
software? But actually that doesn't matter much.
Now the Windows developer has to make his software available for his user.
A lot of software development environments like Visual Studio make this
very easy for the developer. They let him make an .msi or setup.exe or
install.exe and everything is done for him. If he likes a bit more
control, he can buy InstallShield or Wise or some other installer
software.
The end result is that the developer makes a .msi or setup.exe or
install.exe.
Do you agree?
For most Windows software, the packaged software installs on all
mainstream versions of Windows: from Windows 2000 to Windows 7.
Do you agree?
Now we go away from the developer and we come to the user. Because the
developer has made a package, the user just has to doubleclick.
Do you agree?
Away from the user and back to the developer, this time a Linux developer.
Linux is not binary compatible so she has to recompile on every distro. If
she is a good programmer, her code will compile without a problem.
Do you agree?
Now comes the phase where the Linux developer has to make the software
available for her users. As a binary package? She can do that, but that is
a lot of work. She has to make separate packages for Debian, Ubuntu,
Redhat, Suse, Gentoo,...
Do you agree?
If her program is popular enough, this packaging is done by the packaging
team of the distros. They take her source code, compile it, package it,
add it to their repository, and make it available to their users. Sure,
it's a lot of duplicate work, but the developer and the user don't care.
This is what distributions are for.
Do you agree?
When software is a repository, the user can just select it from a list. We
can argue that the current package selection software in Ubuntu could be
improved. But that is an abstract discussion when you compare it with
similar tools in other distributions.
On most mainstream Linux distributions, a user only has to select a
package from a list and enter his password, if the software is already in
in a repository.
Do you agree?
Now suppose the software is not very popular, and the distributions don't
package it. This means that the developer has to do all the packaging
herself. Will she do that? Perhaps only for her own distribution. For all
others, she makes the source availaible because she knows that the
recompiled source has a good chance of working.
Do you agree?
If the programmer wants her software to be successful, what is the best
thing she can do? Package it for all distros? Make her own .deb, .rpm or
other installation files? No, the best thing she can do, is to have it
packaged by the distro packagers.
Do you agree?
The difference between Windows and Linux:
Windows Linux
writing the source code developer developer
compiling the code developer distribution
packaging the program developer distribution
making program available for users developer distribution
So on Windows, the developer has to do (and usually does) all the work for
the user. On Linux, the developer only writes code. The distribution does
the rest of the work.
Do you agree?
If there is no distribution, the developer has to do all the work, or the
user has to play distribution.
Do you agree?
Now there may be a few Windows programs out there, that the developer
doesn't want to package into an installer. For example those special
programs that have problems with the very few binary incompatibilities
between different Windows versions, and the software project is too small
to bother with packaging. For example, a hobby project.
In those very few cases, the situation is identical to Linux.
Do you agree?
More information about the ubuntu-users
mailing list