The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
From: lm@mcvoy.com (Larry McVoy)
Subject: [TUHS] Non-US Unix Activities
Date: Fri, 7 Apr 2017 15:36:24 -0700	[thread overview]
Message-ID: <20170407223624.GI14089@mcvoy.com> (raw)
In-Reply-To: <1e89d5607378028b7e5c493f8389e51327587033@webmail.yaccman.com>

On Fri, Apr 07, 2017 at 03:08:48PM -0700, Steve Johnson wrote:
> One lesson learned that I've never forgotten is how smooth it is to
> evolve a language using the following process:
> 
> 	* Announce that the change is coming and explain why
> 	* Change the compiler to accept both the old and new syntax
> 	* Produce a simple warning message when the old syntax was used, but
> make it still work
> 	* Produce a more complicated, verbose message, but still make it work
> 	* Produce a message that says "After date xxxx, the old stuff won't
> work any more"
> 	* On the date, change the warning to fatal, but keep recognizing the
> old syntax and emit "Error: You used the old xxx, change to the new
> one"
> 	* Eventually, stop recognizing the old syntax and remove the message.
> 
> 	Dennis was a master at this strategy, so things like the otherwise
> painful evolution of changing =+ to += went well.

That's interesting that that sort of thing dates back (at least) to the 
Labs.  

We did a distributed source management system which has

	- a file format (I can think of 3 different major versions)
	- a network protocol (also had major revisions)
	- various per repository features

All that started back in 1998 and we were extremely good about backwards
compatibility.

That said, we eventually had too many things to be compat with and we
took the approach of supporting 

	- our original ascii file format which was SCCS compat plus extensions
	- our original (once stable) network protocol
and
	- our latest and greatest stuff

Every version of the software supports a 

	bk clone --downgrade repo repo.old

which gets you back to the old ascii format, and then there is a

	bk clone --upgrade repo.old repo

which gets you to the latest and greatest.

What did this buy us?  We only had two targets, the original (not moving)
formats and the latest and greatest.  If you had some halfway repo you 
could use the old release to clone it down to the old format and the new
release to clone it forward to the latest and greatest.

It worked really, really well.  

Sort of off topic but thought I'd share, I wish someone had told me this
picture when we started, especially the feature bit idea (which was that
if a repo uses some optional feature you stuck that on disk.  If all 
versions of the software know to read in the feature bits, see if they
know all of them, if not, spit out "This repo uses feature XYZ which is
not understood by this version of BitKeeper".  We called them bits, they
were actually strings, but internally they were bits).


  reply	other threads:[~2017-04-07 22:36 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-05 22:22 [TUHS] A decision Warren Toomey
2017-04-06 20:08 ` Josh Good
2017-04-06 20:32   ` Kurt H Maier
2017-04-06 21:23     ` Aram Hăvărneanu
2017-04-06 21:46       ` Josh Good
2017-04-07 11:56         ` Steffen Nurpmeso
2017-04-07 12:20           ` William Corcoran
2017-04-07 14:05             ` Andru Luvisi
2017-04-07 15:09             ` Kurt H Maier
2017-04-07 15:23               ` Larry McVoy
2017-04-07 15:25                 ` ron minnich
2017-04-07 20:25                   ` Josh Good
2017-04-09  5:57                     ` Michaelian Ennis
2017-04-06 23:09   ` [TUHS] Non-US Unix Activities Warren Toomey
2017-04-07  5:15     ` Dave Horsfall
2017-04-07 19:56       ` Dave Horsfall
2017-04-07  8:44     ` Alec Muffett
2017-04-07  9:32       ` Robert Swierczek
2017-04-07 10:24         ` Alec Muffett
2017-04-07 11:35           ` jsteve
2017-04-07 16:09           ` Alec Muffett
2017-04-09  6:34             ` Random832
2017-04-09 11:03               ` Alec Muffett
2017-04-09 16:57                 ` Toby Thain
2017-04-09 19:20                   ` Random832
2017-04-10 13:06                   ` Tim Bradshaw
2017-04-09 22:45                 ` Steve Johnson
2017-04-10  5:40                   ` Robert Swierczek
2017-04-10 13:10                     ` Tim Bradshaw
2017-04-07 17:57           ` Robert Swierczek
2017-04-07 18:24             ` Toby Thain
2017-04-07 20:23               ` Robert Swierczek
2017-04-07 20:53                 ` Toby Thain
2017-04-07 21:51                   ` Robert Swierczek
2017-04-07 22:08                     ` Steve Johnson
2017-04-07 22:36                       ` Larry McVoy [this message]
2017-04-07 22:01                   ` Alec Muffett
2017-04-08 17:28                   ` Lawrence Stewart
2017-04-07 10:40         ` Lars Brinkhoff
2017-04-07 12:09     ` Tim Bradshaw
2017-04-07 12:25       ` jsteve
2017-04-07 13:55         ` tfb
2017-04-07 14:36           ` George Ross
     [not found] <mailman.729.1491557525.3779.tuhs@minnie.tuhs.org>
2017-04-07 14:29 ` Arrigo Triulzi
2017-04-07 23:31 Richard Tobin
2017-04-08 10:57 ` Tim Bradshaw
2017-04-08 11:13   ` Jason Stevens
2017-04-08  9:46 Berny Goodheart
2017-04-08 10:28 ` Jason Stevens
2017-04-08 14:31 Doug McIlroy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170407223624.GI14089@mcvoy.com \
    --to=lm@mcvoy.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).