On Tue, Jan 7, 2014 at 4:37 AM, Jan Nijtmans <jan.nijtm...@gmail.com> wrote:

> 2014/1/7 Joseph R. Justice <jayare...@gmail.com>:
>


> > May I ask why that run-time check cannot or should not be made in the
> > release version of Fossil 1.28, rather than immediately after it is
> tagged
> > such that it will only take effect in a release version for Fossil 1.29?
>
> It's fully up to the Fossil-devs what should be the minimum SQLite
> version Fossil is supposed to work with, and when this minimum
> is updated to higher SQLite versions. My proposal is based on
> a SQLite 3.8.3 release in February 2014. If that changes or if
> the Fossil developers want to move forward faster than that,
> it is very well possible. For Cygwin that wouldn't be a problem, as
> SQLite 3.8.2 is already available now as Cygwin package. For
> other OS distributions I don't know, I'll leave it to others to comment on
> that.
>

I fully agree that it's up to the Fossil upstream devs as to what should be
the minimum version of SQLite supported with any given release version of
Fossil, and also as to when the minimum version of SQLite supported should
be changed (and what it should be changed to).

My thought here was that the devs (or at least Dr. Hipp as the architect)
seem to desire to make the minimum supported version of SQLite be 3.8.2
*now*.  If that's so, why make them wait for a full release version of
Fossil (e.g. until development begins for Fossil 1.29) before they can make
that change?  After all, it's the distributions' problem to provide the
SQLite library version Fossil upstream requires, or else to patch Fossil to
work with whatever version of SQLite the distribution is willing to
provide.  (But...  See below for a countervailing point.)



Ummm...  As a sort of aside, I'd like to point out one thing here for the
benefit of the Fossil upstream devs, on the off chance they have not yet
considered it.  It's something I think is a sort of corollary / consequence
of what we're talking about that's obvious when you think about it
carefully, but which might be easy to overlook at a first quick glance.
(Ron Wilson's message kind of refers to this, but does not state it
explicitly.)  I'd like to explicitly state it for the record.

Okay.  Again, Fossil upstream devs ARE NOT REQUIRED to support using a
given release version of Fossil with any random old version of SQLite a
end-user (or distribution) wishes to use.  The upstream devs have the right
to say "We only support using this release version of Fossil with at least
version XY.ZZ.Y of SQLite, and will not support using this version of
Fossil with any older version of SQLite".  The upstream devs are (in
general) all unpaid volunteers, and as such have the right to set whatever
limit on support they want to set.

However...  Just as are the Fossil upstream devs, the developers /
packagers of a given FOSS Unix/Linux distribution *are* *also* (in general)
unpaid volunteers, and as such *do* *also* have the right to set whatever
limit on support *they* (the distribution developers / packagers) want to
set!

In particular, *they* have the right to say "We only support SQLite with a
maximum release version of BL.EG.H, and any software which requires a
version of SQLite more recent than this version is not supportable by us
and we will not package and distribute it in our current version of the
distribution".  The distributions ARE NOT REQUIRED to support or distribute
software which needs any random new version of SQLite a developer wishes to
use!

This means that if the minimum supported version of SQLite the Fossil
upstream devs require for their new release version is XY.ZZ.Y, and the
maximum supported version of SQLite the distribution developers will
provide for their current release version of the distro is BL.EG.H, and
XY.ZZ.Y > BL.EG.H, then the new release version of Fossil will not be made
available for that version of the distribution (at least until they raise
their maximum supported version of SQLite), and the new release version of
Fossil may not even be *useable* on that version of the distribution!

Insofar as the Fossil upstream devs *desire* their current version of
Fossil to be packaged and distributed by the various distributions (as
opposed to requiring end-users to compile / install Fossil on their own),
*this* is the problem of Fossil upstream -- to limit themselves to using
only versions of libraries which are actually available within the various
distributions (the major ones anyway) they want to have distribute their
software.

Now, I'll grant that Fossil, by its intrinsic nature and primary intended
target audience (e.g. that it is a software development tool intended for
use by software developers), isn't as constrained by this as would be an
application intended for use by typical non-technical end-users, such as
say an office productivity application or a financial / bookkeeping
application, or a game, or whatever.  Fossil can say "you're a developer,
you know how to compile software on your own, just handle it" and expect a
sufficiently motivated end user to do just that.

However, insofar as the Fossil upstream devs wish Fossil to also be used by
more normal and non-technical end users, and insofar as they wish Fossil to
be made available by the various distributions, this *is* something they
have to take into consideration!  They may have to constrain themselves to
*not* use the latest and greatest bleeding-edge software available if they
wish to be available via distributions which do not support bleeding-edge
software.  (As to if this *should* be a consideration for Fossil upstream,
or how *strong* a consideration it should be for them, I decline to express
an opinion concerning -- this is for the upstream devs to decide amongst
themselves.)



Ummm...  One other quite possibly naive question.  I browsed in the Fossil
sources briefly related to the tag you mentioned previously, the
sqlite-min-to-3.7.17 tag, and if I'm understanding what I see correctly,
you're doing the check for the minimum supported version based on if SQLite
is reporting if specific capabilities are available, apparently on the
grounds that if a given capability is available then that means the version
of SQLite available is at least X.

Now, if that's the coding style and philosophy Fossil uses, then so be it.
I'm certainly not in a position to say it's wrong; I realize there might be
a very good reason which I simply haven't considered for doing it that way.

However, I *do* note that SQLite documents ways to check, at compile time
and/or run time, what version the SQLite library believes it is.  Would
this be of any use in terms of Fossil determining if the version of SQLite
available is sufficient for Fossil's purposes?

See http://www.sqlite.org/c3ref/c_source_id.html (SQLite C Interface:
Compile-Time Library Version Numbers);
http://www.sqlite.org/c3ref/libversion.html (SQLite C Interface: Run-Time
Library Version Numbers); and
http://www.sqlite.org/lang_corefunc.html#sqlite_version (SQLite Query
Language: Core Functions) for more information.




> > I would agree that, unless part of the purpose (either explicit or
> implicit)
> > for Fossil's existence is to act as a showcase and testbed for the latest
> > and greatest available version of SQLite, there is no need to tie
> releases
> > of Fossil to releases of SQLite.  Release versions of Fossil should be
> made
> > "when they are appropriate" and "when they are ready", which does not
> > necessarily have anything to do with the release schedule of SQLite.
>
> I agree. It would be possible to make a Fossil release at any time,
> independent from SQLite. As long as Fossil doesn't use any
> SQLite features which are not available yet in the latest SQLite
> release, either the latest SQLite amalgamation could be shipped
> with it, either the latest SQLite trunk amalgamation. The latter
> choice means more risk, however small in practice.
>

I think you are saying here that it would be reasonable for the Fossil
devs, for a *release* (e.g. supposed to be stable / production quality)
version of Fossil, to specify using and/or provide as an embedded code copy
*either* a release version of SQLite *or* a development (e.g. could change,
isn't guaranteed to be stable / production quality) version of SQLite?  (I
assume "the latest SQLite trunk amalgamation" means a development version
of SQLite.)

I disagree.

I'm pretty sure that, if you ask any significant distribution if they are
willing to ship, as part of a *stable* and *supported* version of the
distribution (as opposed to an "in development" and unstable version of the
distribution), a in-development version of a library such as SQLite, they
will usually if not always say "No, we are not, we are only willing to ship
stable release versions of this library with stable release versions of our
distribution".

So, insofar as you care about Fossil being provided by distributions as
part of their stable release, then I would not make Fossil depend on a
version of SQLite that is not a stable release version.

Now, for *development* versions of Fossil, I think it is perfectly
reasonable and appropriate for the Fossil devs to use a development version
of SQLite if they wish to!  That makes it easier and faster for Fossil to
be able to make use of new features provided by the latest version of
SQLite once that version is marked as stable, Fossil doesn't have to wait
for the stable version of SQLite to be released to start writing code that
will work with that version.

But, for *release* versions of Fossil, this is not reasonable or
appropriate, at least if Fossil wants any distribution to distribute it.



Hope this is of some use, interest.  Thanks for your time.



Joseph
_______________________________________________
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

Reply via email to