On 10/16/2013 03:46 AM, Nico Kadel-Garcia wrote:
On Tue, Oct 15, 2013 at 2:03 PM, Yasha Karant <ykar...@csusb.edu
<mailto:ykar...@csusb.edu>> wrote:

     From a terminal application within gnome, my default Python is:

    [ykarant@jb344 ~]$ python
    Python 2.6.6 (r266:84292, Feb 21 2013, 19:26:11)
    [GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
     >>>

    despite having to install whatever the BlueGriffon build required.

    A number of the responses concerning the build of BlueGriffon
    further underscore the general lack of polymorphism and
    encapsulation in the Linux environment as distributed.  In a proper
    modern OS environment, an application that requires non-system
    versions of applications (other than the core libraries required by
    the OS itself, a more daunting problem) would have only these in the
    path of both the building steps and during the execution of the
    built application, preferably still allowing a dynamic rather than a
    static image of the built application.

You've gone on about this before, and it's just not going to happen with
this OS. SL is a rebuild of a server class operating system, not a
maximal flexibility operating system. The trade-off is that there is a
hope for stability and interoperability and consistent behavior from day
to day, due to the consistent library versions, package layouts, and
build environments. And such a multi-component, multi featured system is
vulnerable to serious incompatiblities between even minor library or
feature changes. Python 2.6 and Python 2.7, for example, have notable
feature and syntax differences. So at run-time of particular Python
modules, which is the default to select? Do all python scripts have to
be written as "/usr/bin/python2.6" or "/usr/bin/python2.7"? And how is a
tool author writing their Makefile or configure.ac <http://configure.ac>
to know? Or even just running a remote shell script.

Do not get me *started* on software tools that auto-update your local
workspace databases to enable new features and make it impossible to
revert back to the older binaries, such as Subversion and RPM. running
both versions on the same system at the same time is *fraught* with
adventure.

This is just not a "Linux" problem. It's a "consistent environment"
problem. there have been attempts to deal with the need for multiple
versions of components at the same time with the /usr/bin/Java and
/usr/bin/gcc symlink fun and games, but it's an unavoidable problem,
especially in a system for which the paying customers need a consistent
environment and a 10 year life cycle (which our favorite upstream vendor
currently provides.)


You may oppose modern software engineering design and implementation principles and practices. I have never proposed a lack of stability or reliability in any environment, whether that environment is an operating system or an end-user application specific to only one segment of the population.

Indeed, the designed language or environment that is required by a build should be specified in the build. If Application N.m is required, it should be specified.

As you factually point out, a number of the core applications (such as RPM or other production maintenance utilities) routinely are updated by TUV and even by the community (other software application maintainers, both for-profit and commons) and then auto-update, and do not necessarily maintain backward compatibility.

In some cases, there is no choice due to either an algorithmic shortcoming or a fundamental implementation shortcoming, typically one that results in the possibility of a major security compromise on a network-attached node ("hack" or "attack" vulnerability to exploit). In most cases, however, the cause merely is new capabilities or features, or a change in the underlying standard due to newer technologies and loss of other technologies from the wild.

One can have a stable environment with polymorphism and encapsulation, but this is not easy, particularly for heritage implementations.

Yasha Karant

Reply via email to