Hi Luke,

There are others that are far better at walking through this than I am,
but as someone who has experienced source based Unixes and Solaris alike...

Luke wrote:

>Any system based on binary package management cannot be as flexible as a 
>system which works with source-based packages.  At least in the world of 
>open-source software, there are often important configuration options which 
>must be chosen at the start of the build process of a certain piece of 
>software.
>
Sometimes these build options are entirely valid things to be
configuring before building a binary.  Sometimes it's just a method of
admitting you don't want to do the hard work of handling different
binary execution environments in your program.  As you're probably also
familiar with, just because you have the source does not mean it will
work with your systems particular 'genome'.

With some "source based" linux distributions, upgrade of one particular
package will cause a cascade of upgrades.  In some cases, this will
break a number of other things unintentionally (and without any way to
go back).

>  Additionally, the target CPU for a particular binary must be selected before 
> the build - the performance penalty of using binaries targetted to a 
> different CPU vary, but in some cases it is quite significant (such as on the 
> Pentium 4).
>
Ah, but there are other solutions for that problem.  Some of which
OpenSolaris already handles.  Admittedly, it's more complex in the mixed
32/64 bit area, but one can still get the capabilities one desires
without having to resort to everyone needing a compiler and the skills
to operate it. 

http://cvs.opensolaris.org/source/xref/usr/src/cmd/sgs/rtld/common/cap.c
http://blogs.sun.com/roller/page/rie?entry=shared_object_filters
http://docs.sun.com/app/docs/doc/817-1984/6mhm7pl19?a=view#chapter2-19

OpenSolaris even uses this for libc, meaning applications can benefit
from different hardware capabilities without needing to be recompiled. 
And the application developer didn't even need to know about it or
"configure" it.  It also means even old binaries created before the
existence of the new hardware capabilities can benefit from said
capabilities.

>Distributing packages as binaries may be necessary for closed source software, 
>but there's no need for such a limitation with open source software.
>
True, but you can, in some cases, run into other limitations.  Just
because you have source, does not mean interdependencies do not exist. 
Does the end user know how to handle this source package?  Does the end
user know the right flags to throw at the config/makefile (GNU autoconf
doesn't get this right for me on most distros).

Also, it's arguable that for some things (i.e. apps from ISVs that won't
provide source, device drivers source is not available for, etc.) you
will inhibit your own flexibility by expecting to be able to rebuild
dependencies from new source every time you upgrade one component.

Take a look at this article, I think it's an excellent read:
http://www.acmqueue.org/modules.php?name=Content&pa=showpage&pid=305&page=1

Just a few thoughts,

- Matt

-- 
Matt Ingenthron - Technical Specialist, Web Services 
Sun Microsystems, Inc. - Client Solutions
http://blogs.sun.com/mingenthron/
email: [EMAIL PROTECTED]             Phone: 310-242-6439


_______________________________________________
opensolaris-discuss mailing list
opensolaris-discuss@opensolaris.org

Reply via email to