What is this thread?

I like to define some terms to discuss installation using common language. I 
noticed many times that many people have different meaning behind common use 
terms. This makes discussion quite difficult because everybody talks on 
different languages.

So I think we need first define terms and based on this terms we can go ahead 
and discuss installation, packages, patches etc. Let me try to introduce some 
math kind of definition for installation.
---------------------------------------------------
[B]Software[/B]

Software is set of files which represents some service to the customer, 
something customers need to have on their computer to do their business.

Software may be in installed on computer - Installed state
Software may be not yet installed but on installation media, on CD, DVD, 
install server filesystem etc - Distribution state
Software may be not yet compiled as a source files - Source state.

Software examples:
Solaris OS - this is what we are dealing with in general, however I think that 
database like Oracle can be considered as Software also or Apache web server 
etc.

Software may provide many services to the customers and so sometimes customers 
may need only subset of this services. It may happen also that customers may 
specifically need not to have certain services on their computers. So software 
may be installed on computer as full image including all files represents all 
services and it may be installed partially and represent subset of their 
services.

[B]Dependency[/B]

Software files depends on each other. Some utility may need some libraries. 
This dependancy may be mutual or not. 

What does mean one file depends on other? It means that service represented by 
this file will not work as expected. Of course this mean that there is no 
algorithmic solution to determine dependancy - it is classical example of 
nonalgorithmic task from Algorithm Theory. This mean that in real life some 
dependancy will be always missed. However in theory we still may operate this 
term to understand problem better.

If we take one file and marks all other files which this one depends on and 
recursively mark their dependancy also, we will have subset of Software and 
this subset can be independently delivered on computer and services represented 
by this file and all other files included will work properly as expected and 
may be some services of Software will not be present, but what is present will 
work.

[B]Full Distribution Set[/B]

Lets for each file define this as Full Distribution Set (FDS). For some files 
this Full Distribution Sets will be identical, because of mutual dependencies. 
For some files FDS will be subset of other file FDS and in some cases they will 
intersect, but of course this intersection will be also some other file FDS. It 
will be nestling construction by construction method we choose.

Let assume that Software has 4 files A,B,C,D, E, F. 

A and B mutually dependant and represent service Sa
C and D mutually dependant and represent service Sc
E and F mutually dependant and represent service Se
A depends on C
C depends on F

If we draw FDS for each files we will have three different FDS - 

{A, B, C, D, E, F}
{C, D, E, F}
{E, F}

If we committed to deliver this Software to the customers each service then 
each of this set should be available to the customer. And we should make sure 
that customer will have only this three combination because any other 
combination of files will not work properly.

[B]Distribution Unit[/B]

One solution bundle all files in three unbreakable set and distribute them as 
three bundles. However it will be pretty natural to make next step and break 
this Full Distribution Sets to Distribution Units (DU):

{A, B}
{C, D}
{E, F}

And define and enforce dependancy between DU so customer will not be able to 
install {A, B} without {C, D} and {E, F}.

{A, B} DU for Sa depends on DU for Sc
{C, D} DU for Sc depends on DU for Se
{E, F}

This distribution bundling minimize space - which is not critical any more, but 
also gives flexibility for the customer to combine independent FDS into single 
image.

Let assume that in our example we have A depends on E not on C. Then we will 
have different FDS picture

{A, B, E, F}
{C, D, E, F}
{E, F}

Which does not cover case when customers want to have both Sa and Sc on the 
computer. But with DU available it will not be a problem to construct whatever 
customers need.

Also DU allows customer to add services to already installed Software.

So Software will be distributed by set of DUs with dependancy set and enforced
by installation software. Please not that by the we DU is constructed it will 
not be any mutual dependancy between DU.
----------------------------------------------------------
[B][I]Reality check[/I][/B]

Distribution Unit reflects what we call packages in real world. The real 
packages are not DU in terms I defined, the way files are bundled together now 
as I understand is in general up to the developers. However from installation 
point of view major idea is that it is something which may be delivered 
independently from other packages - may be on top of lower level packages. 
Packages must not be mutually dependent - if this happen they should be one 
package. 

In terms just introduced - packages should not break DU boundaries, however 
package may combine several DUs. For example it may turns out that all 
utilities like ls, cat etc may be single DU for each utility because they 
depends on common library but does not depends on each other, however having 
package for each utility is not practical.

Of course this was about initial software distribution. I will continue with 
Software updates -patching in following post.

vassun
 
 
This message posted from opensolaris.org

Reply via email to