comp.lang.ada
 help / color / mirror / Atom feed
From: "Nick Roberts" <nickroberts@adaos.worldonline.co.uk>
Subject: Re: Attributes 'Version and 'Body_Version
Date: Sun, 25 Nov 2001 20:49:06 -0000
Date: 2001-11-25T20:49:06+00:00	[thread overview]
Message-ID: <9trpj1$4e6v2$1@ID-25716.news.dfncis.de> (raw)
In-Reply-To: yecsnbjdrh0.fsf@king.cts.com

I think there's some mileage in the idea that it might be useful for
'Version and 'Body_Version to (be able to) return something more than just a
checksum (or the like). I think Tony Gair's comment hints at why.

Supposing an Internet web page is offering a download of a partition
(program) called Whizzo (which solves all your marital problems by
psychology).

Different potential users of Whizzo may well have different versions of the
partitions (which contain units) that Whizzo depends on. Suppose those units
are: Psychospeak; Technobabble; and Generally.Dodgy.Stuff. Each is in a
separate partition.

To support as many users as possible (before they jump off a bridge), Whizzo
has been built in multiple versions supporting the various versions of
Psychospeak, Technobabble, and Generally.Dodgy.Stuff, and a table is shown
on the web page allowing the user to select the correct version of Whizzo to
download. E.g.:

Psychospeak   Technobabble   Generally.Dodgy.Stuff     Whizzo
2f10e401      5ea109d0       4ea23310                  > 5a1b207a <
7bc195a2      d4216eee       40abba31                  > 8a90001b <
f9fa51ef      5201ac48       216b6d48                  > 21a68c5c <
6d33a902      5201ac48       39b278b7                  > d409b12b <
etc

Which is okay, but it would be nicer if the versions were in a slightly more
human-readable form. E.g.:

Psychospeak      Technobabble      Generally.Dodgy.Stuff     Whizzo
V:2 R:7 (472)    V:3 R:11 (1027)   V:Pub:1 R:2 (29)          > V:1 R:1
(10052) <
V:2 R:7 (479)    V:3 R:11 (1028)   V:Pub:1 R:2 (30)          > V:1 R:1
(10051) <
V:2 R:7 (480)    V:4 R:1 (2475)    V:Pub:1 R:2 (32)          > V:1 R:1
(10050) <
V:2 R:8 (20)     V:4 R:1 (2475)    V:Pub:1 R:2 (39)          > V:1 R:1
(10049) <
etc

The idea behind the versions shown here is that the build tool (source
controller, version manager, whatever) maintains a version and revision
number (which the user changes, and can enter prefixes for), and
automatically maintains an 'iteration' number (build number), and generates
the version string from all of these. But this is just an idea.

Recalling back to some of the comments made in this thread, there was the
suggestion that a unit could support multiple versions of a service unit,
which offered different levels of service.

I would suggest that this is best done (in Ada 95) by the technique of the
service unit exporting objects of a class (hierarchy) to its clients (via a
remote access-to-classwide type and a repository/directory/agency unit or
object).

This has to be a classic Ada 95 'pattern': the clients are versionistically
decoupled* from the servers; servers which add functionality can do it in a
totally forwards-compatible way (by deriving from the originally published
type, and exporting objects of the derived type); old clients are 'fooled'
into getting the old type (and service) they expect; new clients can take
advantage of the added functionality; an 'intelligent' client can test the
type of the object it gets, and perhaps adapt to the functionality the
object provides.

--
Best wishes,
Nick Roberts



*term obtained from the Technobabble unit (C) 2001 Technobabble Inc. All
rights reserved.

;-)





  reply	other threads:[~2001-11-25 20:49 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-11-06 20:58 Attributes 'Version and 'Body_Version Marin David Condic
2001-11-07  3:39 ` Robert Dewar
2001-11-07 15:08   ` Marin David Condic
2001-11-07 20:51   ` Tony Gair
2001-11-07 16:45     ` Marin David Condic
2001-11-07 18:32       ` Vincent Marciante
2001-11-07 19:00         ` Marin David Condic
2001-11-07 23:11           ` Robert Dewar
2001-11-08 17:28             ` Stephen Leake
2001-11-08 17:43               ` Larry Kilgallen
2001-11-08 19:03                 ` Marin David Condic
2001-11-08 19:37                   ` Larry Kilgallen
2001-11-09  3:50                   ` Robert Dewar
2001-11-09  3:55                   ` Robert Dewar
2001-11-08 18:55             ` Marin David Condic
2001-11-07 19:54       ` Larry Kilgallen
2001-11-07 21:49         ` Marin David Condic
2001-11-07 23:08     ` Robert Dewar
2001-11-07 22:04 ` Keith Thompson
2001-11-08 16:34   ` Frank
2001-11-09  3:53   ` Robert Dewar
2001-11-10  0:07     ` Keith Thompson
2001-11-10  2:16       ` Larry Kilgallen
2001-11-11 15:18         ` Marin David Condic
2001-11-12 23:06           ` Tony Gair
2001-11-12 21:51       ` Robert Dewar
2001-11-13  8:07         ` Keith Thompson
2001-11-25 20:49           ` Nick Roberts [this message]
2001-11-26  2:30             ` Robert Dewar
2001-11-26  3:31               ` Nick Roberts
2001-11-26 15:42                 ` Robert Dewar
2001-11-26 20:05                   ` Nick Roberts
2001-11-27  3:56                     ` Robert Dewar
2001-11-27 17:51                       ` Nick Roberts
2001-11-28  0:44                       ` Larry Kilgallen
2001-11-28 15:49                         ` Robert Dewar
2001-11-28 16:53                         ` Larry Kilgallen
     [not found]                         ` <5ee5b646.0111280749.77fabe6c@posting.google.coOrganization: LJK Software <PFcoNrf74AeG@eisner.encompasserve.org>
2001-11-29  3:49                           ` Robert Dewar
2001-11-29 11:52                           ` Larry Kilgallen
     [not found]                           ` <5ee5b646.0111Organization: LJK Software <Kg7U2sTGDFyI@eisner.encompasserve.org>
2001-11-30  2:26                             ` Robert Dewar
2001-11-30  2:55                               ` Larry Kilgallen
2001-11-27 17:04                     ` Georg Bauhaus
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox