The dictatorship of versioning

Robert Goldman rpgoldman at sift.net
Tue Jun 16 15:01:07 UTC 2015


On 6/16/15 Jun 16 -9:31 AM, Didier Verna wrote:
> Robert Goldman <rpgoldman at sift.net> wrote:
> 
>> Now: a request for management purposes: Didier, would you be so kind
>> as to describe the proposal (I think cut and paste out of your earlier
>> emails would do admirably) in a ticket on launchpad.net?
> 
>   OK. I will also add Pascal's suggestion to have both a canonical and
>   human readable version slot.
> 

I'm inclined to put that one on the side, mostly because I find Pascal's
suggestion far less appealing.  I see two problems with this suggestion:

1. Further complicating an ASDF that's already grown far larger than the
original

2. Duplication of function.  Software engineering is replete with
failures where programmers are required to state the same information
twice (e.g., comments or javadoc together with source code).
Inevitably, the multiple forms of redundant information stray from each
other.  So what happens when the programmer updates the human readable
version and not the canonical version, or vice versa?  Wouldn't it be
better to functionally derive one of these two forms from the other?
E.g., (defgeneric formatted-version (component version-spec))


I am also disinclined to add something like the proposed

   :version-major 1
   :version-minor 0
   :version-release 42

There are two reasons for my reluctance:

1. I don't think it's necessary.  If those slots are desired, it should
be possible to extend the SYSTEM class for specific systems in order to
accommodate these new flags, without changing the core of ASDF.

If that's *not* true, then we should fix the protocols to make it true
(and I'd welcome another ASDF ticket to this effect).

2. Adding this proliferation of version sub-flags to core ASDF seems
undesirable for a number of reasons:
* It would potentially radically complicate the parsing of systems.
* Developers are already disinclined to put in :version specifiers:
making the specification more complicated seems unlikely to improve that
situation.
* Adding more (and more verbose) flags would further detract from
readability of DEFSYSTEM forms by burying their true content in ever
more metadata.
* Finally, I don't see that this provides advantage over :version
"1.0.42" together with functions for manipulating said version string
(e.g., (defgeneric major-version (component version-string) ).

In sum, this seems like a lot of new hair for limited payoff to the
community.


Best,
Robert



More information about the asdf-devel mailing list