[ghc-steering-committee] Base library organisation
Simon Peyton Jones
simon.peytonjones at gmail.com
Tue Jun 27 14:10:17 UTC 2023
I don't think we want to flag *individual *bindings in ghc-internals; they
are all there for a good, internal, non-deprecated reason. What we want to
discourage is for GHC clients to depend on *any module *in ghc-internals
casually, without having a Strong Reason to do so. Why discourage?
- Everything they want should be in base. And maybe it already is! If
not, and if they have a need, and base doesn't have it, then they may want
to depend on ghc-internals temporarily and petition CLC to extend base.
- If they casually depend on ghc-internals, they impose costs on
themselves (when we change the API) and on us (when they complain about us
changing the API).
I have no strong opinion about want form "discourage" takes. Certainly not
"prevent".
Simon
On Tue, 27 Jun 2023 at 14:59, Moritz Angermann <moritz.angermann at gmail.com>
wrote:
> I have some concern around the discouraging concept as well.
>
> Ideally we had some marker INTERNAL like DEPRECATED, that could be
> attached to individual bindings, complete modules or even packages. If this
> existed, we could have code either error if it used any INTERNAL binding,
> and no -fpermit-internals was provided. If this was attached to already
> exposed bindings we’d want a warning phase for at least two releases which
> I believe DEPRECATED could do?
>
> However, we don’t have this today, so I wouldn’t want this to block this
> proposal from progressing.
>
> I’m not so much for hiding it. Reading up on it and knowing the details
> (or even looking at the source) can be helpful at times. Making discovery
> harder by hiding it would not be my preferred route.
>
> Cheers,
> Moritz
>
> On Tue, 27 Jun 2023 at 3:09 PM, Arnaud Spiwack <arnaud.spiwack at tweag.io>
> wrote:
>
>> I don't have a strong opinion. I trust the people involved.
>>
>> The one thing I'll note is that the part about discouraging people from
>> depending on ghc-internals seems to involve an awful lot of work. I
>> wouldn't count on such work being done promptly. The one thing in the least
>> that can be done reasonably cheaply is making sure that every module in
>> ghc-internals to be annotated with {-# OPTIONS_HADDOCK hide #-} (so that
>> Haddock only generate documentation for the source but not for the module
>> interfaces).
>>
>> /Arnaud
>>
>> On Tue, 20 Jun 2023 at 09:03, Chris Dornan <chris at chrisdornan.com> wrote:
>>
>>> Really, all LGTM!
>>>
>>> On 19 Jun 2023, at 22:10, Simon Peyton Jones <
>>> simon.peytonjones at gmail.com> wrote:
>>>
>>> Hello GHC steering committee,
>>>
>>> Any views about this?
>>>
>>> Simon
>>>
>>> On Thu, 15 Jun 2023 at 10:03, Simon Peyton Jones <
>>> simon.peytonjones at gmail.com> wrote:
>>>
>>>> Dear GHC Steering Committee
>>>>
>>>> Over the last few weeks, Ben Gamari and I have been discussing with
>>>> Andrew and Julian from the Core Libraries Committee how to make the Core
>>>> Libraries Committee and the GHC developers work together more fluidly; and
>>>> that includes the GHC Steering Committee.
>>>>
>>>> We now have a fairly well fleshed out proposal here.
>>>> <https://github.com/Ericson2314/tech-proposals/blob/ghc-base-libraries/proposals/accepted/050-ghc-base-libraries.rst>
>>>>
>>>> I hope you like it. As far as this committee is concerned there are
>>>> two particular points of note
>>>>
>>>> 1. We propose a new package, *ghc-experimental*, which depends on
>>>> *base*. Many GHC proposals involve defining new types and
>>>> functions. The idea is that these would initially be in
>>>> *ghc-experimental*. After they stabilise and become widely
>>>> adopted, the author (or anyone else) can make a CLC proposal to move them
>>>> to *base*, which has much stronger stability guarantees.
>>>> 2. Section 5.1 suggests a mechanism to involve CLC members in
>>>> proposals that involve new functions and types, at an earlier stage. Some
>>>> involve *changing *existing types and functions. It is clearly
>>>> unproductive for us to debate such things at length, and only *then
>>>> *to land it on the CLC.
>>>>
>>>> Section 5.1 also suggests that proposals should explicitly (in a
>>>> separate section) call out
>>>>
>>>>
>>>> - What new types and functions it defines
>>>> - What existing types and functions are changed.
>>>>
>>>> We should add that to our template.
>>>>
>>>> At the moment we are just sharing the proposal with relevant
>>>> stakeholders (yourselves, CLC, stack folk, cabal folk etc), so that we can
>>>> polish any rough edges before making it public.
>>>>
>>>> So, any views? Personally I think this is a Big Step Forward.
>>>>
>>>> Simon
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>> ghc-steering-committee mailing list
>>> ghc-steering-committee at haskell.org
>>> https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
>>>
>>>
>>> _______________________________________________
>>> ghc-steering-committee mailing list
>>> ghc-steering-committee at haskell.org
>>> https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
>>>
>>
>>
>> --
>> Arnaud Spiwack
>> Director, Research at https://moduscreate.com and https://tweag.io.
>> _______________________________________________
>> ghc-steering-committee mailing list
>> ghc-steering-committee at haskell.org
>> https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
>>
> _______________________________________________
> ghc-steering-committee mailing list
> ghc-steering-committee at haskell.org
> https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-steering-committee/attachments/20230627/926a5470/attachment-0001.html>
More information about the ghc-steering-committee
mailing list