caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Jesper Louis Andersen <jesper.louis.andersen@gmail.com>
To: Olaf Hering <olaf@aepfle.de>, caml-list@inria.fr
Subject: Re: [Caml-list] removal of C compiler variables in in 4.06
Date: Tue, 18 Jul 2017 13:28:15 +0000	[thread overview]
Message-ID: <CAGrdgiUuntsjgRScpi38a3Umf6n_Qt3QQEa54hx=qK7Qmt1Qow@mail.gmail.com> (raw)
In-Reply-To: <20170718090258.GB2151@aepfle.de>

[-- Attachment #1: Type: text/plain, Size: 2476 bytes --]

On Tue, Jul 18, 2017 at 11:04 AM Olaf Hering <olaf@aepfle.de> wrote:

>

But if their usage is legitime,
> why the needless breakage?
>

I like to think of software as sometimes hitting a local optima. That is,
to move forward you have to stop the hill-climbing algorithm and  start
going in the "wrong direction" in order to hit a better spot later on.

Every feature in a system is also a liability later on. Hence, any change
is a balancing act of keeping backwards compatibility and moving forward.
I'd expect some breakage between software releases. Some of these are
potential incompatibilities, and in the unlucky case, an incompatibility
which noone foresaw sneaks in[0]. The goal is to manage the amount of work
it takes to upgrade systems, and possibly provide automated tools to help
doing so[1].

Removing features is a great way to move forward. I've often salvaged old
code by removing a lot of support for desirable features, revamped the
systems core, and then added those features which were truly needed later
on. We also learn in hindsight, so many changes eventually have to be
reverted. The larger your interface, the more brittle it tends to be.

That said, it certainly sounds like a too eager change since 4.06 is not
slated for release for a while. But I wanted to ramble a bit about
controlled change in a software system.

[0] 4 years ago, the Erlang serialization "external term format" was
changed to allow for certain symbols to be UTF-8 encoded. Releases would be
able to handle the decoding, but would not produce such terms. The recent
20.0-rc1 release enabled the feature since it was believed that backwards
compatibility was in place. Yet, it broke systems because they rely on
things like the lexicographic ordering of the marshalled serialization,
among other things. The final release had to avoid producing the new UTF-8
encoded form if the symbol (atom) was representable in the old (ASCII)
form. Erlang highly values its backwards compatibility because upgrades to
clusters tend to happen one machine at a time.

[1] The Go language used a tool 'go fix' to upgrade breaking changes to the
syntax before release 1.0 of the language. This enabled change, yet
provided an upgrade path for existing code. 'go fix' is simpler in Go
because all code has a default formatting through 'go fmt' so you can just
read the AST, change it, render it, and run 'go fmt' on it. The fixes are
also rather crude and syntactical. This was no Cocinelle.

[-- Attachment #2: Type: text/html, Size: 3048 bytes --]

      parent reply	other threads:[~2017-07-18 13:28 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-18  9:02 Olaf Hering
2017-07-18  9:23 ` Adrien Nader
2017-07-18 13:31   ` Olaf Hering
2017-07-18 11:37 ` Stéphane Glondu
2017-07-18 12:24   ` Gabriel Scherer
2017-07-18 12:59     ` Stéphane Glondu
2017-07-18 13:41   ` Olaf Hering
2017-07-18 13:49     ` Gabriel Scherer
2017-07-18 18:04       ` Olaf Hering
2017-07-18 13:28 ` Jesper Louis Andersen [this message]

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='CAGrdgiUuntsjgRScpi38a3Umf6n_Qt3QQEa54hx=qK7Qmt1Qow@mail.gmail.com' \
    --to=jesper.louis.andersen@gmail.com \
    --cc=caml-list@inria.fr \
    --cc=olaf@aepfle.de \
    /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).