Skip to content

Remove apologies about the Reference #1792

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 3, 2025
Merged

Conversation

traviscross
Copy link
Contributor

@traviscross traviscross commented Apr 16, 2025

Right now the Reference, in its README and introduction, contains a number of warnings and caveats that amount to apologies about the document. These have outlived their usefulness and should be removed. The Reference is the reference on Rust. It's the product of an enormous amount of careful work by many people. It's a good document, and we don't need to apologize about it.

In particular, these apologies don't need to be the very first things we say about the document. We don't need to warn people off from it. Given how we frame it at the moment, a reader could reasonably think, "well, if that's all its own authors think of this document, why should I waste my time with it?", and anecdotally, this is something that I've observed people reflecting back to us.

Let's stop this negative cueing.

Does the Reference have bugs or omissions? Sure. It always will. So does and will our compiler. We can simply point people to our issue tracker in a note; we don't need for this to be a warning, and we don't need to elaborate.

Do we need to say the Reference is non-normative? No. We treat it with all the care and respect that we would any normative document, and we have for many years. We author it in normative language, and we take care to ensure that the substance of this normative language accords with normative lang team decisions. The lang team directly FCPs changes to the Reference when those changes affect the guarantees that are made by the language.

Do we need to say that our descriptions of the language are "informal"? No, not in general. We work to describe things as precisely and correctly as we can. While such statements might not be "formal" ones, neither are they "informal".

Do we need to say that it's not a specification? No. What is a specification anyway? We'd have to answer that before saying that it's not one.

The Reference is the Reference. That's all we need to say. The text speaks for itself. Let's remove those things that have outlived their usefulness to us.

cc @rust-lang/spec @rust-lang/lang

@rustbot rustbot added the S-waiting-on-review Status: The marked PR is awaiting review from a maintainer label Apr 16, 2025
@traviscross traviscross force-pushed the TC/remove-apologies branch from c3ed844 to d5c72e5 Compare April 16, 2025 23:41
@joshtriplett
Copy link
Member

joshtriplett commented Apr 17, 2025

❤️ Hear hear. Much appreciation to all the contributors to the Reference.

Copy link
Contributor

@JoelMarcey JoelMarcey left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Like it!

@traviscross traviscross force-pushed the TC/remove-apologies branch from d5c72e5 to 6e62c00 Compare April 17, 2025 16:09
@traviscross traviscross added S-waiting-on-team Status: This is waiting for action from some team. and removed S-waiting-on-review Status: The marked PR is awaiting review from a maintainer labels Apr 17, 2025
@tmandry
Copy link
Member

tmandry commented Apr 23, 2025

@rfcbot fcp merge

@rfcbot
Copy link
Collaborator

rfcbot commented Apr 23, 2025

Team member @tmandry has proposed to merge this. The next step is review by the rest of the tagged team members:

No concerns currently listed.

Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up!

cc @rust-lang/lang-advisors: FCP proposed for lang, please feel free to register concerns.
See this document for info about what commands tagged team members can give me.

@traviscross
Copy link
Contributor Author

@rfcbot reviewed

@rfcbot
Copy link
Collaborator

rfcbot commented Apr 23, 2025

🔔 This is now entering its final comment period, as per the review above. 🔔

psst @tmandry, I wasn't able to add the final-comment-period label, please do so.

@nikomatsakis
Copy link
Contributor

@rfcbot reviewed

@scottmcm
Copy link
Member

@rfcbot reviewed

Right now the Reference, in its README and introduction, contains a
number of warnings and caveats that amount to apologies about the
document.  These have outlived their usefulness and should be removed.
The Reference is the reference on Rust.  It's the product of an
enormous amount of careful work by many people.  It's a good document,
and we don't need to apologize about it.

In particular, these apologies don't need to be the very first things
we say about the document.  We don't need to warn people off from it.
Given how we frame it at the moment, a reader could reasonably think,
"well, if that's all its own authors think of this document, why
should I waste my time with it?", and anecdotally, this is something
that I've observed people reflecting back to us.

Let's stop this negative cueing.

Does the Reference have bugs or omissions?  Sure.  It always will.  So
does and will our compiler.  We can simply point people to our issue
tracker in a note; we don't need for this to be a warning, and we
don't need to elaborate.

Do we need to say the Reference is non-normative?  No.  We treat it
with all the care and respect that we would any normative document,
and we have for many years.  We author it in normative language, and
we take care to ensure that the substance of this normative language
accords with normative lang team decisions.  The lang team directly
FCPs changes to the Reference when those changes affect the guarantees
that are made by the language.

Do we need to say that our descriptions of the language are
"informal"?  No, not in general.  We work to describe things as
precisely and correctly as we can.  While such statements might not be
"formal" ones, neither are they "informal".

Do we need to say that it's not a specification?  No.  What is a
specification anyway?  We'd have to answer that before saying that
it's not one.

The Reference is the Reference.  That's all we need to say.  The text
speaks for itself.  Let's remove those things that have outlived their
usefulness to us.
@traviscross traviscross force-pushed the TC/remove-apologies branch from baee89e to aca918d Compare April 30, 2025 16:22
@joshlf
Copy link
Contributor

joshlf commented May 2, 2025

While we're here, do we also want to take the opportunity to clarify what promises are made regarding forwards-compatibility? As demonstrated in discussions like this one, there continue to be cases where making breaking changes to the Reference is proposed. It would be good to clarify that unsafe code which can be demonstrated to be sound on the basis of what is promised in the Reference will never become unsound under future versions of the Reference (possibly with caveats about future-compat lints and other similar workarounds).

It feels like this PR is the right place to add that language since this PR is already moving in the direction of changing the social contract of this document.

@tmandry
Copy link
Member

tmandry commented May 3, 2025

It might be a good idea to document the language stability policy in the reference, but I would do that as a separate PR at this point.

We reserve the right to make breaking changes when they are bug fixes. That can even extend to what's considered sound for unsafe code, but that would only happen when we consider the actual impact to be approximately zero or as a last resort.

@traviscross
Copy link
Contributor Author

In addition to what @tmandry said, the Reference just documents the language. In such cases, it's the language, not the Reference per se, that's making a breaking change, and our latest RFC documenting our thinking on when that is acceptable is:

@rfcbot
Copy link
Collaborator

rfcbot commented May 3, 2025

The final comment period, with a disposition to merge, as per the review above, is now complete.

As the automated representative of the governance process, I would like to thank the author for their work and everyone else who contributed.

This will be merged soon.

@traviscross traviscross added this pull request to the merge queue May 3, 2025
Merged via the queue into master with commit eafe90c May 3, 2025
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants