Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
From: Gabriel Scherer <gabriel.scherer@gmail.com>
To: Gerd Stolpmann <info@gerd-stolpmann.de>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] Camlp4/p5 type reflection [was: OCaml maintenance status / community fork (again)]
Date: Sun, 11 Dec 2011 12:38:42 +0100	[thread overview]
Message-ID: <CAPFanBHSOFCkT=P5n22PuNovkbOzSgbovbsEzKxceCGBj-JMQQ@mail.gmail.com> (raw)
In-Reply-To: <1323602633.6079.49.camel@samsung>

Gerd, you are summing up in a few paragraphs what I tried to say in a few pages.

There are other parts of Camlp4 that I would also welcome:
- the OCaml quotation parsers that reads quoted OCaml expression (and
patterns) and translate them to their ASTs (as an OCaml expression);
this makes generating OCaml code easy
- controlled extension points such as 'type-conv' and 'deriving',
hopefully generalized to most AST nodes; this goes in the direction of
Alain's annotation proposal

> There could be still camlp4 or p5 as a separate add-on,
> but it will be a second-class citizen, and it would be clear that it is
> a bit behind with the newest syntactical features.

It's not a big problem if the second-class extensions have trouble
processing and producing pieces of OCaml AST using the newest
syntactical features (eg. the OCaml quotations don't have sugar for
them). But it's a problem if they simply can't be run on files using
those features, forcing their users to keep older versions of OCaml.
It's not a *new* problem as it already appears at version transitions,
but it also won't go away as long as people use a preprocessor that
insists on understanding the whole AST, whether those tools are first-
or second-class.

On Sun, Dec 11, 2011 at 12:23 PM, Gerd Stolpmann <info@gerd-stolpmann.de> wrote:
> Many people are still frustrated with the camlp4/p5 situation. IMHO, we
> should give up on camlp4 inside the distribution, and only implement a
> few of its features in the regular parser:
>
> - Antiquotation syntax (i.e. << >> expressions) because this makes it
>  very easy to incorporate foreign syntax elements. Of course, we
>  would also need the ability to recursively invoke the ocaml parser
>  for parts of the antiquoted expression (this would also open the
>  door for transformations of the AST).
>
> - A simple macro language (ifdef at least), for the cases antiquotations
>  would be too complex.
>
> That means we would give up on arbitrary syntax extensions in the core
> distribution. There could be still camlp4 or p5 as a separate add-on,
> but it will be a second-class citizen, and it would be clear that it is
> a bit behind with the newest syntactical features. Also, it could be
> developed outside the core team.
>
> Gerd
>
>
> Am Sonntag, den 11.12.2011, 11:29 +0100 schrieb Gabriel Scherer:
>> > And Xavier's mail suggests that camlp4 is a maintenance burden for the OCaml team.
>> > Why is it such a bad idea to drop camlp4 out of the distribution, and
>> > just let camlp5 live?
>>
>> First of all, I don't have a strong opinion here: I just voiced
>> doubt. My reasoning for going so goes along two lines of argument:
>>
>> 1. I'm not exactly sure how Camlp4 being in or out of the distribution
>>    will change the maintainance burden. The main maintainance
>>    difficulty with camlp{4,5} is that it needs to evolve its own
>>    parser in parallel with the 'official' one (that's by design), with
>>    changes to the language syntax. You need to change Camlp{4,5} when
>>    Ocaml 3.N+1 introduces a new syntax, or it won't be usable on OCaml
>>    3.N+1 code.
>>
>>    There are already users relying on Camlp{4,5}, and those user
>>    generally wish to use the new, exciting features of the next
>>    version. If they can't, they will complex, regardless of whether
>>    their preprocessor is in or out the distribution. That means that
>>    when the OCaml team is about to release a new version with
>>    syntactic changes, they have to worry about the preprocessor
>>    anyway, or make users unhappy.
>>
>>    So there is a "preprocessor burden" on the OCaml team, independently
>>    of where the code is maintained and located. If the change means
>>    "make it easier to distribute camlp4 fixes without bumping OCaml's
>>    version number", why not. If it means "now we won't care about
>>    Camlp4 state before releasing a new versions", this may mean
>>    a degradation in the life of Camlp4 users. I doubt that's the idea.
>>
>>    Being in or out the distribution also wouldn't change much, I think,
>>    the possibility of external contributions. In my experience Nicolas
>>    Pouillard and now Xavier Clerc have a good track record of
>>    integrating external contributions (I have sent one or two bugfixes
>>    on the tracker), and I'm confident they would be able to work with
>>    Jérémie Dimino if he wished to contribute to camlp4's evolution more
>>    frequently.
>>
>> 2. I suppose -- purely personal guess -- the intention being the
>>    consortium's suggestion is to try to move away slowly from
>>    Camlp{4,5}, towards alternatives such as Alain Frisch's
>>    "annotations" proposal. As I said previously, I would personally
>>    welcome such a move, but I don't see said alternatives released
>>    yet. I haven't had the opportunity to play with alternate tools,
>>    have an idea of how a transition would work out, see if the
>>    documentation is reasonably complete, etc.
>>
>>    It would make more sense, in my opinion, to downplay camlp{4,5}
>>    *once* we have played with alternatives and are confident that they
>>    are mature enough to make a transition.
>>
>>    Please also remember that the consortium members represent
>>    relatively large, well-educated, experienced players in the OCaml
>>    community. It probably wouldn't bother them much if, say,
>>    ocamlbuild, ocamldoc, or ocamldbg where taken out of the official
>>    distribution. They have important tooling in place and would adapt
>>    relatively easily. The end user or OCaml beginner may not adapt to
>>    such changes that easily. Now this is a matter where distributions,
>>    such as Debian, can be of great help, by providing "complete"
>>    packages regardless of what is or isn't in the official
>>    distribution. However, I have handled just enough users reports
>>    wondering why they didn't have "camlp4o" available, or
>>    graphics.cma, or whatever, to know that this can also be a barrier
>>    to use and adoption.
>>
>>
>> Again, no strong opinion. I will welcome any change that strenghten
>> the OCaml language. If you think distributing camlp4 out of the
>> distribution would ease the live of OCaml developpers and maintainers,
>> at no cost to the users, nor complicating the distribution side, then
>> all is good. I just feel that it may be a bit too soon.
>>
>>
>> On Sun, Dec 11, 2011 at 10:04 AM, Stéphane Glondu <steph@glondu.net> wrote:
>> > Le 11/12/2011 00:34, Gabriel Scherer a écrit :
>> >> The original Camlp4 tool was mostly developped by Daniel de
>> >> Rauglaudre.
>> >> [...]
>> >> (I'm thinking of
>> >> eg. Martin Jambon, which had extensive Camlp4 extensions, and the Coq
>> >> team which has user-defined notations using Camlp4 and, huh, I really
>> >> don't want to know the details); basically they didn't upgrade to
>> >> 3.10 -- instead of porting the extensions, as was originally hoped.
>> >> [...]
>> >> Daniel, which apparently did not agree with some of the changes made,
>> >> relatively suddenly restarted developpment of "his" branch of Camlp4,
>> >> taken from the old sources, before refactoring. This was done as
>> >> a separate project, outside the OCaml distribution (apparently Daniel
>> >> and the OCaml team prefer not to work together).
>> >> [...]
>> >> Camlp4 is a piece of devil beauty. It does incredibly clever things,
>> >> and is incredibly complex inside: Daniel is clearly a remarkable
>> >> hacker, but his code is not easy to understand. I know that
>> >> maintaining the whole thing is very hard; and that is the reason why
>> >> Camlp4 tends to have problems to bump from one version to another,
>> >> when non-neglectible syntaxic changes are made to the language.
>> >> [...]
>> >> (And I'm not sure it's a good idea to move Camlp4 out of the
>> >> distribution as long as we don't have a viable alternative proposal
>> >> and some users have started moving to it. Camlp4 will still need to be
>> >> supported by someone anyway, and it needs to evolve in lockstep with
>> >> OCaml language changes.)
>> >
>> > Coq has been adapted to work with both camlp4 and camlp5. In my
>> > experience, Daniel has been much more responsive on camlp5 matters than
>> > the OCaml team on camlp4 matters. And Xavier's mail suggests that camlp4
>> > is a maintenance burden for the OCaml team.
>> >
>> > Why is it such a bad idea to drop camlp4 out of the distribution, and
>> > just let camlp5 live? My feeling is that people using camlp5 care about
>> > it, but people using camlp4 do so just because it's in the official
>> > distribution and wouldn't care switching to camlp5 (or stop using this
>> > kind of syntax extension) if camlp4 was officially deprecated in favor
>> > of camlp5. At worst, someone will start maintaining camlp4 independently.
>> >
>> > Daniel already maintains and develops camlp5. I guess Jérémie would also
>> > volunteer to join him (but he already offered to maintain camlp4
>> > independently). In Debian, there are currently 49 packages depending on
>> > camlp4, and 7 depending on camlp5. That also increases incentive /
>> > possible help for maintaining it.
>> >
>> >
>> > Cheers,
>> >
>> > --
>> > Stéphane
>> >
>>
>>
>
>


  reply	other threads:[~2011-12-11 11:39 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-08  9:10 [Caml-list] OCaml maintenance status / community fork (again) Benedikt Meurer
2011-12-08  9:54 ` Alain Frisch
2011-12-08 10:28   ` Benedikt Meurer
2011-12-08 10:46     ` Alain Frisch
2011-12-08 11:08       ` Benedikt Meurer
2011-12-08 16:42       ` Fabrice Le Fessant
2011-12-08 10:47     ` ivan chollet
2011-12-08 14:07       ` oliver
2011-12-08 11:11     ` Pierre-Alexandre Voye
2011-12-08 18:18       ` Török Edwin
2011-12-09 21:42         ` oliver
2011-12-08 10:16 ` Gabriel Scherer
2011-12-08 11:07 ` Stéphane Glondu
2011-12-09  2:11 ` Jacques Garrigue
2011-12-09 10:37   ` Jérémie Dimino
2011-12-09 11:03     ` Gabriel Scherer
2011-12-09 11:17       ` Stefano Zacchiroli
2011-12-09 11:50         ` Jonathan Protzenko
2011-12-09 12:36           ` Alain Frisch
2011-12-09 23:22         ` Goswin von Brederlow
2011-12-09 22:33       ` oliver
2011-12-09 14:24     ` Benedikt Meurer
2011-12-09 17:00       ` Mehdi Dogguy
2011-12-09 17:36         ` Benedikt Meurer
2011-12-09 17:45           ` Mehdi Dogguy
2011-12-09 23:24             ` Goswin von Brederlow
2011-12-10  9:31               ` Benedikt Meurer
2011-12-10 14:45 ` Xavier Leroy
2011-12-10 15:58   ` Benedikt Meurer
2011-12-12 10:21     ` Xavier Leroy
2011-12-12 10:59       ` Benedikt Meurer
2011-12-12 12:20         ` Mehdi Dogguy
2011-12-12 15:17           ` Goswin von Brederlow
2011-12-19  4:09           ` Romain Beauxis
2011-12-19 17:35             ` Alain Frisch
2011-12-12 12:57         ` Gerd Stolpmann
2011-12-10 17:06   ` Török Edwin
2011-12-10 18:28   ` Jérémie Dimino
2011-12-10 18:34     ` Wojciech Meyer
2011-12-10 19:10       ` Wojciech Meyer
2011-12-10 20:55         ` Jérémie Dimino
2011-12-10 21:40           ` [Caml-list] Camlp4/p5 type reflection [was: OCaml maintenance status / community fork (again)] Wojciech Meyer
2011-12-10 23:34             ` Gabriel Scherer
2011-12-11  0:47               ` [Caml-list] Camlp4/p5 type reflection [ Wojciech Meyer
2011-12-11 11:19                 ` Gabriel Scherer
2011-12-11 18:14                   ` Jérémie Dimino
2011-12-11  9:04               ` [Caml-list] Camlp4/p5 type reflection [was: OCaml maintenance status / community fork (again)] Stéphane Glondu
2011-12-11  9:36                 ` Török Edwin
2011-12-11 10:29                 ` Gabriel Scherer
2011-12-11 11:23                   ` Gerd Stolpmann
2011-12-11 11:38                     ` Gabriel Scherer [this message]
2011-12-11 10:20               ` Fabrice Le Fessant
2011-12-11 10:47                 ` Gabriel Scherer
2011-12-11 13:27               ` Alain Frisch
2011-12-11 13:35                 ` Gabriel Scherer
2011-12-11 13:42                   ` Alain Frisch
2011-12-11 13:36                 ` Arnaud Spiwack
2011-12-11 13:46                 ` Stéphane Glondu
2011-12-10 23:28   ` [Caml-list] OCaml maintenance status / community fork (again) Jesper Louis Andersen
2011-12-11 11:02     ` Gerd Stolpmann
2011-12-13 19:36       ` oliver
2011-12-14 12:13         ` Gerd Stolpmann
2011-12-16 10:03           ` Stéphane Glondu
2011-12-11 13:33   ` Goswin von Brederlow
2011-12-11 13:59     ` [Caml-list] Community distribution [was: OCaml maintenance status / community fork (again)] Benedikt Meurer
2011-12-12 17:48   ` [Caml-list] OCaml maintenance status / community fork (again) Stéphane Glondu
2011-12-13 20:39     ` [Caml-list] New experimental ARM backend [was: OCaml maintenance status / community fork (again)] Benedikt Meurer
2011-12-14  9:18       ` Mark Shinwell
2011-12-14 21:51         ` Benedikt Meurer
2011-12-18 11:57       ` [Caml-list] " Benedikt Meurer
2011-12-18 13:08         ` Benedikt Meurer
2011-12-18 14:50           ` Alexandre Pilkiewicz
2011-12-18 16:42             ` Benedikt Meurer
2011-12-18 17:23           ` Stéphane Glondu
2011-12-21 10:11             ` [Caml-list] " Benedikt Meurer
2011-12-18 13:16         ` [Caml-list] " Benedikt Meurer
2011-12-17 18:36   ` [Caml-list] OCaml maintenance status / community fork (again) Stéphane Glondu
2011-12-18  4:25     ` Till Varoquaux

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='CAPFanBHSOFCkT=P5n22PuNovkbOzSgbovbsEzKxceCGBj-JMQQ@mail.gmail.com' \
    --to=gabriel.scherer@gmail.com \
    --cc=caml-list@inria.fr \
    --cc=info@gerd-stolpmann.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