About Husky Version Numbers and Dependencies
--------------------------------------------

Husky uses two libraries, "smapi" and "fidoconfig". You must combine Husky
programs with the matching libraries to produce working code, so you should
have some understanding of the version numbers:

Current Husky
-------------

Current Husky programs have two or three version numbers, and the
SECOND number is NOT divisible by 2 (1,3,5, ...).

fidoconfig 0.13
msged       6.1.1
hpt         1.1

              ^ second number

Current Husky also advertises a CVS source-code date, like:

hpt 0.9.8/lnx 01-06-01

              ^^ day
                 ^^ month
                    ^^ year

Dependency rules are simple hear: Get all software and all libraries with the
same date! If you upgrade any library or any software, upgrade all libraries
as well and recompile and -install everything from scratch. This is
cumbersome and only recommended for advanced users.

Stable Husky
------------

Stable Husky programs have three version numbers, and the SECOND part
is ALWAYS divisible by 2 (0,2,4, ....). In addition, the textual version
messages usually show a "-stable" or "-release" suffix, but this is not
technically necessary.

fidoconfig 0.12.0-stable
msged      6. 0.3-stable
              ^second number

The third version number is set to 0 and the (optional) suffix to
"-stable" when the stable branch of the software is created. The suffix is
set to "-release" when a release is made. Directly after that, the third
number is stepped by one and the suffix re-set to "-stable".

Dependencies are as follows: Each stable branch of a software requires
another stable branch. For example, any version of "msged 6.0" can be
combined with any version of "fidoconfig 0.12". "msged 6.0.1" will work
with "fidoconf 0.12.0", or "msged 6.0.4-stable" will work with
"fidoconf 0.12.7". You can upgrade each part WITHIN a stable branch
(i.E. only changing the third version number) wihtout having to upgrade any
other part of your installation. You can find out which stable branches are
required by viewing the VERSION file in each project archive/directory.

Exceptions
----------

Old Husky versions used letters instead of a third digit to represent
steppings inside a stable branch, and there was no rule regarding
divisibility by 2 of the version number. E.g., hpt 0.9.7 was the name of a
stable *branch*. This changed as of summer 2001.

Running Multiple versions of the same Library
---------------------------------------------

Suppose you want to use a fictional "msged 6.2" (e.g. msged 6.2.1-release)
which requires a fictional "smapi 2.4" (e.g. you choose smapi 2.4.3-release). On the
other hand, you want to use  "hpt 1.0.2-stable" which requires "smapi 2.0",
and you have a smapi 2.0.1-release.

Starting with smapi 2.0 and fidoconfig 0.12, Husky properly supports shared
object versioning on Linux and other gcc-based Unix systems. This means: When
you install smapi 2.0 and compile hpt 1.0, you will get

libsmapi.so -> libsmapi.so.2.0
libsmapi.so.2.0 -> libsmapi.so.2.0.1
libsmapi.so.2.0.1

and the "hpt" binary will be explictly linked to "libsmapi.so.2.0"

After that, you can install a newer smapi and will get the following
situation:

libsmapi.so -> libsmapi.so.2.4
libsmapi.so.2.4 ->libsmapi.so.2.4.3
libsmapi.so.2.4.3
libsmapi.so.2.0 -> libsmapi.so.2.0.1
libsmapi.so.2.0.1

After you have installed this newer smapi, all new programs that you compile
will be linked against the new smapi 2.4, but old programs that were linked
against the old smapi 2.0 will continue to work because they explicitly ask
for "libsmapi.so.2.0" and still get the old library.

However, if you need to recompile any of the old programs (and don't want to
upgrade it), you first must switch back the default smapi to be used to the
old smapi 2.0 instead of 2.4. To do so, you simply re-install smapi 2.0. This
will cause all future compilations to use smapi 2.0, but any programs already
linked against smapi 2.4 will still function.

Note that to swtich the default library to be used you must really reinstall
that library. Just switching the "libsmapi.so" symlink is not enough because
for compiling, you need not only proper .so files, but also the matching
proper include files. And in contrast to .so files, there can always be only
one set of include files for a library.

Combining Msged 6.0, Smapi 2.0, Smapi 1.6.4 and Hpt 0.9.7-stable
----------------------------------------------------------------

As of now, from the new Husky stable branch we have only released Huskybse
0.2, Smapi 2.0 and Msged 6.0.  There are no stable releases of hpt and
Fidoconfig that can be used with Smapi 2.0.  So, if you don't want to
use Msged 6.0, you must combine older stable versions of Husky
(e.g.  Hpt 0.9.7 with Fidoconfig 0.10 and Smapi 1.6.4) with newer ones (e.g.
Msged 6.0 with Smapi 2.0). Here is how to do it:

a) Compile and Install Smapi 1.6.4, Fidoconfig 0.10 and Hpt 0.9.7 as usual.
b) Compile and Install Smapi 2.0
c) Compile and Install Msged 6.0
d) Compile and Install Smapi 1.6.4

Now, both your old Hpt 0.9.7 and your new Msged 6.0 will work.  If you want
to recompile Msged (e.g. a newer version like Msged 6.0.1), you must repeat
steps b), c) and d).

