Deployment of Pre-Packaged Apps

Deployment of Pre-Packaged Apps

Post by Jethro Wright II » Fri, 30 Apr 1999 04:00:00



    Given the range of choices and configurations (egcs v. pgcc,
libc5 v. glibc, etc) available for free Unix, is it practical
to deliver pre-packaged apps w/ everything need to use an app
system, by tailoring the installation pkg to ignore most, if
not all, of the pre-installed sware on the system ?  That is,
why worry about whether the user has KDE/Qt on his/her system,
since one can't be sure if it's installed and configured or
even operational or if they have the "right" compiler/shared
libs (relative to what the developer has chosen, which from
his/her perspective, *is* the right compiler/lib system) ?
Why not create a closed environment (delivered via modem or
most likely CD-ROM, which has everything needed to operate a
given system) and ignore the std, pre-config'd lib paths and
other pre-existing env issues ?

--

================================================================
  In Paris, they simply stared when I spoke to them in French;
  I never did succeed in making those idiots understand their
  own language.         - Mark Twain, The Innocent Abroad,1869

 
 
 

Deployment of Pre-Packaged Apps

Post by George MacDonal » Fri, 30 Apr 1999 04:00:00



>     Given the range of choices and configurations (egcs v. pgcc,
> libc5 v. glibc, etc) available for free Unix, is it practical
> to deliver pre-packaged apps w/ everything need to use an app
> system, by tailoring the installation pkg to ignore most, if
> not all, of the pre-installed sware on the system ?  That is,
> why worry about whether the user has KDE/Qt on his/her system,
> since one can't be sure if it's installed and configured or
> even operational or if they have the "right" compiler/shared
> libs (relative to what the developer has chosen, which from
> his/her perspective, *is* the right compiler/lib system) ?
> Why not create a closed environment (delivered via modem or
> most likely CD-ROM, which has everything needed to operate a
> given system) and ignore the std, pre-config'd lib paths and
> other pre-existing env issues ?

In a word, leverage.

Configuring or localizing applications on *nix and for that matter any
multi-version OS is always problematic and there are many tradeoffs.
Do you use new feature X, which forces users of Y not to be able to use
your program any more? Can you write an app that works on both, and
detects the difference? Let's say your app was bound to DirectX 3
and now Direct X 4 is incompatible, do you drop all DirectX 3 customers,
or just require them to download new libraries? Really it's the same
issue. Packaging a highly localizable application is a craft that
requires time and patience. It's difficult and error prone, and in
response to that you have "java" which brings it's "virtual machine"
along for the ride. But even java suffers from the multiple version
problem, although orders of magnitude less so.

Fortunately on *nix there are a number of standards that define
the command and library interface. This helps greatly in porting
code. However issues such as which desktop is used are more complicated.
I have an app that runs on Linux and initially I wrote an install that
worked for fvwm2 as it was what I used. However I just added another
script to install for KDE when it detects it's presence. It would be
useful to have a tool, perhaps called desktopInstall, that is fed
some common info and then localaizes properly for the users desktop(s).
For example

        Adding program menu items
        Specifying what the program icon is
        Defining where help files are located ...

Each desktop seems to have a different hierarchy for organizing apps, perhaps
a mapping could be defined. KDE does a useful default, in that it wraps any
existing app menu hierarchy(on red hat, the KDE menu's point to the red hat menus,
i.e. the fvwm2 menus).

As for libraries, the version numbering on *nix handles most of the problems
with dynamic libraries. A host can have multiple versions of a library if
need be.

What one really needs is a decent maping service to localizable entities that has a standard
interface. Thus when an app runs, it accesses such values via it's mapping, hopefully
defined as data.

--
We stand on the shoulders of those giants who coded before.
Build a good layer, stand strong, and prepare for the next wave.
Guide those who come after you, give them your shoulder, lend them your code.


 
 
 

Deployment of Pre-Packaged Apps

Post by Jethro Wright II » Sun, 02 May 1999 04:00:00




[snip]

>Fortunately on *nix there are a number of standards that define
>the command and library interface. This helps greatly in porting
>code. However issues such as which desktop is used are more complicated.
>I have an app that runs on Linux and initially I wrote an install that
>worked for fvwm2 as it was what I used. However I just added another
>script to install for KDE when it detects it's presence. It would be
>useful to have a tool, perhaps called desktopInstall, that is fed
>some common info and then localaizes properly for the users desktop(s).
>For example

> Adding program menu items
> Specifying what the program icon is
> Defining where help files are located ...

    Too much trouble.  What I'm talking about is to ignore
most of what's already there (ie. pre-installed sware) and provide
a pre-packaged distribution that has all of the config stuf
done when the pkg is created.  E.G.:

    XFree86 is in place and we can safely reason that the
purchaser of our GlobalGalactic GUI app already has that
operating.  Now, we pkg GlobalGalactic w/ KDE or (GNOME)
pre-config'd and localization scripts, so that multiple
users of GG can use the same setup.  Now, KDE/GNOME rely on
certain shared libs normally provided w/ the OS.  Simply provide
the shared libs in the kit and replace the defalt lib paths
w/ our localized paths.

    This would be a little more costly in terms of disk
space (but that's cheap nowadays), however the cost could be
justified by the advantage of having pkgs that are certain
to meet the users' expectation of being fully-operational w/
GG and KDE/GNOME.

    The effort of developing/testing GG against different Linux
variants is costly enuf w/o expending additional resources
for the effort of trying to be compatible w/ infinite possible
combinations of libs, installed pkgs, customized menus, etc.

    It would be doable to offer a "pioneer's" kit for GG, which
would provide instructions for the pioneer who wants to tweak
and play w/ things to get them just right for his/her customized
system.  Provide them w/ the specs (ie. GG needs libc5 x.1.0
and libpng y.2.0, etc.) and scripts to get them started and
put the burden of making it work on the power user.

- Show quoted text -

Quote:

>Each desktop seems to have a different hierarchy for organizing apps,
perhaps
>a mapping could be defined. KDE does a useful default, in that it wraps any
>existing app menu hierarchy(on red hat, the KDE menu's point to the red hat
menus,
>i.e. the fvwm2 menus).

>As for libraries, the version numbering on *nix handles most of the
problems
>with dynamic libraries. A host can have multiple versions of a library if
>need be.

>What one really needs is a decent maping service to localizable entities
that has a standard
>interface. Thus when an app runs, it accesses such values via it's mapping,
hopefully
>defined as data.

    I'm trying to figure out *how* to do this, in parallel
w/ getting up to speed w/ new dev tools and a new OS.  I want
to focus on the most important issues:  becoming operational.
I've been lurking on the various Linux NGs, bilding a documentation
base of solutions for the common probs, learning about how development
is done and how things work in the Linux world.  Whenever I post
something, it's a general inquiry about broader issues like this
question about app deployment.  There's *so* much to learn that
unless one focuses on the critical path items, you'll never get
started.  Thanx for the feedback....Jet

--

================================================================
  In Paris, they simply stared when I spoke to them in French;
  I never did succeed in making those idiots understand their
  own language.         - Mark Twain, The Innocent Abroad,1869

 
 
 

Deployment of Pre-Packaged Apps

Post by George MacDonal » Sun, 02 May 1999 04:00:00


Jethro Wright III wrote:

> George MacDonald wrote in message <3728CE6D.47EE...@slip.net>...
> >Jethro Wright III wrote:

> [snip]

> >Fortunately on *nix there are a number of standards that define
> >the command and library interface. This helps greatly in porting
> >code. However issues such as which desktop is used are more complicated.
> >I have an app that runs on Linux and initially I wrote an install that
> >worked for fvwm2 as it was what I used. However I just added another
> >script to install for KDE when it detects it's presence. It would be
> >useful to have a tool, perhaps called desktopInstall, that is fed
> >some common info and then localaizes properly for the users desktop(s).
> >For example

> > Adding program menu items
> > Specifying what the program icon is
> > Defining where help files are located ...

>     Too much trouble.

Well for you perhaps, but it woulld ease the burden of those who
wish to support multip desktops. Making things configurable in
this manner is a good thing, not a bad thing.

> What I'm talking about is to ignore
> most of what's already there (ie. pre-installed sware) and provide
> a pre-packaged distribution that has all of the config stuf
> done when the pkg is created.  E.G.:

It sounds like your heading towards a virtual machine, which is
what java is all about. Think of it like a spectrum on one
end you have hand tuned assembler, on the other you have
OO based virtual machine environments. In between are
X11 apps, Xt Apps, Motif Apps, KDE, GNOME ... GNOME and
KDE are farther towards a OO VME. Each of these has
advantages and disadvantages, it's always been that
way. Much of the progression of computer science is to
build sufficiently well designed layers that allow
one to solve problems in the language of the problem space
v.s using a machine/assembly/computer language. So you
pick the tools that solve the problem for the target
hardware/software environment. In doing so you eliminate
other choices. MS windows targeted the PC hardware
which brought with it near/far memory pointers,
segmented memory, programs doing there own swaping ...
Despite the fact that virtual memory systems had been arround
for years and were well known to provide more stable environments.
Today the Win 9* series carries this baggage.

Likewise, when you are targeting to a particular hardware/software
combination( from what you say this is Linux ), then you will
bind with the tools that get you there. Fortunately Linux is
based on unix which was exceptionally well designed. You have to
decide what your target audience is, what the hardware/software
combo is, how much work you want to put in, and what tradeoffs
you are willing to put up with. Using the higher level environments
of GNOME/KDE buy you very rich environments to leverage off of.
But they can bind you to them if you are not careful. For many
this is a simple equation, simply live withing the environment
of GNOME or KDE, either will cover 90+ % of your needs. The
remainder you will have to live without.

If you want portability to both, then you have to write at
a lower level, or split your code into a gui part and a
app part(not a bad idea anyhow). Both of these take more
work, so it's up to you to decide. Much of the beauty of
Linux is that a lot of the app part is already written
in shell based programs, these can often have a gui
wrapper written on top of them. i.e. a gui app can
open a pipe to any shell based command and read it's
output.

>     XFree86 is in place and we can safely reason that the
> purchaser of our GlobalGalactic GUI app already has that
> operating.  

This is your first decision, already you rule out shell based
users, servers, and low end machines.

> Now, we pkg GlobalGalactic w/ KDE or (GNOME)
> pre-config'd and localization scripts, so that multiple
> users of GG can use the same setup.  Now, KDE/GNOME rely on
> certain shared libs normally provided w/ the OS.

Again more decisions, more reduction of your target space.
You rule out non GNOME/KDE users, if you produce executables
you rule out other architectures sparc, mips, ppc ...

This is why providing the source is so powerful.

> Simply provide
> the shared libs in the kit and replace the defalt lib paths
> w/ our localized paths.

Again more reduction of target space. If you ship the libs,
then what happens as users migrate forward, you endager
overwritting there newer libraries. But you can always
create statically linked apps. These are only bound to
an architecture and a kernel interface(which is more stable).

>     This would be a little more costly in terms of disk
> space (but that's cheap nowadays), however the cost could be
> justified by the advantage of having pkgs that are certain
> to meet the users' expectation of being fully-operational w/
> GG and KDE/GNOME.

>     The effort of developing/testing GG against different Linux
> variants is costly enuf w/o expending additional resources
> for the effort of trying to be compatible w/ infinite possible
> combinations of libs, installed pkgs, customized menus, etc.

That's why java was created. If you take your approach you have to
start somewhere, go for the largest target for the least cost,
or if you are time constrained, go for the most return for the
least effort. Being flexible to all environments is costly in
terms of time, it's only worth it for some apps. Sometimes
it's cheaper just to rewrite for each environment you want to
target. How many apps were tossed going from windows 3.1 to
windows 95? A lot of them were rewritten without the segmented
memory code which became redundant.

>     It would be doable to offer a "pioneer's" kit for GG, which
> would provide instructions for the pioneer who wants to tweak
> and play w/ things to get them just right for his/her customized
> system.  Provide them w/ the specs (ie. GG needs libc5 x.1.0
> and libpng y.2.0, etc.) and scripts to get them started and
> put the burden of making it work on the power user.

This is what the Linux distributions are about, they perform the
compilations and packaging for the environment. Another approach
for you is to bind to distributions, i.e. Red Hat or SUSE ...
Then just follow their upgrade path.

People do take sources and create binary packages for different
configs. If you don't release the sources then you have to do
all that work yourself.

- Show quoted text -

> >Each desktop seems to have a different hierarchy for organizing apps,
> perhaps
> >a mapping could be defined. KDE does a useful default, in that it wraps any
> >existing app menu hierarchy(on red hat, the KDE menu's point to the red hat
> menus,
> >i.e. the fvwm2 menus).

> >As for libraries, the version numbering on *nix handles most of the
> problems
> >with dynamic libraries. A host can have multiple versions of a library if
> >need be.

> >What one really needs is a decent maping service to localizable entities
> that has a standard
> >interface. Thus when an app runs, it accesses such values via it's mapping,
> hopefully
> >defined as data.

>     I'm trying to figure out *how* to do this, in parallel
> w/ getting up to speed w/ new dev tools and a new OS.  

Just start with one, say KDE, learn QT, then write your app. After
your done, look at GNOME and GTK, then port your app to it. Or vice
versa. If you want to support both, then start at a lower level with
X/Xt and one of the many toolkits. Motif if you want to go to workstations,
or one of the other excellent toolkits, some of which port to MS platforms.
The later will not use all the features of KDE/GNOME but will run and you
can still add them to menus ... This will take more work that the first option,
but gives you more portability.

Or just bypass all of this problem and write a java app, taking the slight
performance hit, and living withing it's gui limitations(what limitations
have you seen 2.0?).

> I want
> to focus on the most important issues:  becoming operational.
> I've been lurking on the various Linux NGs, bilding a documentation
> base of solutions for the common probs, learning about how development
> is done and how things work in the Linux world.  Whenever I post
> something, it's a general inquiry about broader issues like this
> question about app deployment.  There's *so* much to learn that
> unless one focuses on the critical path items, you'll never get
> started.  Thanx for the feedback....Jet

If you know C++, i'd say go with KDE. If you prefer C, then try GNOME.
Either of these will work. You might also take the GUI's for a test drive and
decide which one you like best. If you are concerned about the KDE open
source issue then go with GNOME, if you are loyal to the GNU projects you
should also go with GNOME.

--
We stand on the shoulders of those giants who coded before.
Build a good layer, stand strong, and prepare for the next wave.
Guide those who come after you, give them your shoulder, lend them your code.
Code well and live!   - g...@slip.net (7th Coding Battalion)

 
 
 

Deployment of Pre-Packaged Apps

Post by Jeffrey L Straszhei » Sun, 02 May 1999 04:00:00


<snip>

Quote:>     XFree86 is in place and we can safely reason that the
> purchaser of our GlobalGalactic GUI app already has that
> operating.  Now, we pkg GlobalGalactic w/ KDE or (GNOME)
> pre-config'd and localization scripts, so that multiple
> users of GG can use the same setup.  Now, KDE/GNOME rely on
> certain shared libs normally provided w/ the OS.  Simply provide
> the shared libs in the kit and replace the defalt lib paths
> w/ our localized paths.

So, will your "localized paths" play nicely with other apps
on the system that use the same libraries? Will they use
shared RAM for instance? If not, you've lost one of the
cheif advantages of Linux's memory management.

Quote:>     This would be a little more costly in terms of disk
> space (but that's cheap nowadays), however the cost could be
> justified by the advantage of having pkgs that are certain
> to meet the users' expectation of being fully-operational w/
> GG and KDE/GNOME.

Right now, if I load in an app that uses QT and then load in
seven more, QT gets loaded exactly once. The apps share the
memory where it lives. This is nice. This is why when I switched
from {fill-in-name-of-popular-operating-system} to Linux, all
of a sudden my memory usage was cut in half. I just ran "free"
and I'm using NO swap file at the moment. Does that ever happen
with Windows? Also, my system is has 42 megs of "shared" memory
in use now. Those are libraries that are being shared by
multiple apps. If they lived in separate load paths, I have no
idea what would happen; however, whatever scheme you come up
with must not destroy this behavior; it is too important to
Linux's performance.

Quote:>     The effort of developing/testing GG against different Linux
> variants is costly enuf w/o expending additional resources
> for the effort of trying to be compatible w/ infinite possible
> combinations of libs, installed pkgs, customized menus, etc.

--
--Jeffrey Straszheim
---Systems Engineer, Programmer
----stimuli AT shadow DOT net
 
 
 

1. Does debian come with all the X11 binaries pre-packaged?

I'm very confused as to how to install X11 for debian. The HOWTO
document talks about getting a certain set of files from xfree86.
There is no debian specific docco on how to do it that I can find. I
had assumed that if I installed the xbase, xserver and xlib6g packages
plus everything they depended upon that I would not need to get all
the stuff from xfree86 because they would be in the debian packages.

I installed xlib6g 3.3.2 and all the other dependent packages but when
I came to install xbase I got the following error :

ln: cannot symbolic link '../../../doc/X11' to
'/usr/X11R6/lib/X11/doc': no such file or directory.

So how does it work on Debian? Do we have to install the xfree86 stuff
AND then install xbase etc, or is it one or the other. If anyone has
the answer or can point me to some debian docco on this then that
would be great. I've checked out the Debian Documentation Project and
there's no mention of X11 install there.

Thanks,
-- Phill --

2. IPmasqing, portfw'ing, and pcanywhere and mail servers

3. news: Dell to ship Linux pre-packaged PC's

4. Can't add a filesystem

5. M$ word descrabler---pre-pre-pre-release

6. cron fails to run jobs

7. Sun workshop EA compiler problem - options invalid for pre-unix 03 X/open app...

8. recieving fax via gsm and Linux

9. Pre-compiled apps/where?

10. Xlib problems with pre-compiled apps off of tsx-11 : Xfig and Seyon

11. Pre-emptive Thread Packages

12. Suggestions for a Linux package for a total Linux pre-newbie

13. pre-compiled qmail package?