This is an archive of the discontinued LLVM Phabricator instance.

Update developer policy on potentially breaking changes
ClosedPublic

Authored by aaron.ballman on Sep 29 2022, 7:01 AM.

Details

Summary

We've recently had issues appropriately notifying users and stakeholders of changes to projects that may be potentially disruptive when upgrading. This led to discussion on Discourse about how to improve the situation, which can be found at: https://discourse.llvm.org/t/rfc-add-new-discourse-channel-for-potentially-breaking-disruptive-changes-for-clang/65251

Ultimately, it sounds like we want to encourage three things:

  1. Alert vendors during the code review so they can provide early feedback on potentially breaking changes that would be unacceptable for them.
  2. Alert vendors and users after committing the changes so they can perform pre-release testing on a completed change to determine if it causes unreasonable problems for them.
  3. Alert users more clearly through the release notes so that it's easier to determine how disruptive an upgrade might be.

This updates the developer policy accordingly.

Diff Detail

Event Timeline

aaron.ballman created this revision.Sep 29 2022, 7:01 AM
Herald added a project: Restricted Project. · View Herald TranscriptSep 29 2022, 7:01 AM
aaron.ballman requested review of this revision.Sep 29 2022, 7:01 AM
Herald added a project: Restricted Project. · View Herald TranscriptSep 29 2022, 7:01 AM

Note: I would love to add a vendors group to Phabricator for LLVM and lldb (and any other project we think has vendors), but this requires admin privileges to do. @mehdi_amini, is this something you could help out with assuming folks are in favor of the developer policy changes?

Adding someone from lldb as a review for awareness.

ldionne added a comment.EditedSep 29 2022, 8:00 AM

Thanks for working on this! FWIW, this more or less standardizes what we've been doing in libc++ for the past ~1.5 years and it's been pretty low effort for us to do. I'm saying this just in case some folks are worried about "additional development overhead" -- in our experience there's basically none. And putting my vendor hat on, it's been extremely useful for me to track down potential issues when trying to ship a new version of libc++. This LGTM, although I'm somewhat neutral on whether to post on Discourse as well as having the vendor groups on Phabricator. I'm not sure I understand the benefit of doing both, but I will happily conform if folks see value in it.

llvm/docs/DeveloperPolicy.rst
140

I wonder whether Announcements is truly a lower-traffic alternative to vendors groups, if we end up posting each potentially breaking change to the list and tagging vendors on each such review. I'm not against posting on Discourse, however it seems to me like basically another equivalent channel of communication for these changes (which might be beneficial, I'm neutral on that).

aaron.ballman added inline comments.Sep 29 2022, 8:07 AM
llvm/docs/DeveloperPolicy.rst
140

The reason we have a split like that is for timing and chattiness. If you're a downstream like Intel has with ICX, you might want to be in clang-vendors so that you are involved in conversations about potentially breaking changes. You'll be getting emails for all review comments on that review. But if you're a downstream like a Gentoo package maintainer, you might not want to be *that* involved in the development of the compiler, but still want to know when changes are coming down the pipeline to do early pre-release testing while there's still time to put the brakes on before a release goes out.

Mordante accepted this revision.Sep 29 2022, 9:24 AM

Thanks a lot for working on this! A few small nits, otherwise LGTM.

llvm/docs/DeveloperPolicy.rst
112
129
150
This revision is now accepted and ready to land.Sep 29 2022, 9:24 AM
aaron.ballman marked 3 inline comments as done.

Applying review feedback.

llvm/docs/DeveloperPolicy.rst
129

I didn't apply this one because I think it's grammatically correct without the comma.

Mordante added inline comments.Sep 29 2022, 10:12 AM
llvm/docs/DeveloperPolicy.rst
129

I looks slightly odd to me, but I'm not a native speaker.

ldionne accepted this revision.Sep 29 2022, 2:56 PM
ldionne added inline comments.
llvm/docs/DeveloperPolicy.rst
140

Okay, makes sense. Let's go for it.

Pinging reviewers from projects other than libcxx (I'm hoping to get buy-in from someone on the LLVM side of things; lldb would be nice as well).

Pinging reviewers from projects other than libcxx (I'm hoping to get buy-in from someone on the LLVM side of things; lldb would be nice as well).

I'll be landing this later today on the assumption that folks are comfortable with the changes here, so if you have concerns, bringing them up now would be appreciated.

From what I saw when you posted the discourse thread initially, I understand you're targeting user-visible features, and mostly from the "toolchain" side of the project.
However I find the language here to be potentially confusing for the API surface of the libraries: that is how much of this applies to the LLVM C++ libraries API surface?
If this is out-of-scope, can this be called out more explicitly?

From what I saw when you posted the discourse thread initially, I understand you're targeting user-visible features, and mostly from the "toolchain" side of the project.
However I find the language here to be potentially confusing for the API surface of the libraries: that is how much of this applies to the LLVM C++ libraries API surface?
If this is out-of-scope, can this be called out more explicitly?

Sure! Would it help to add a paragraph before the bulleted list in breaking that says something along the lines of:

The C++ interfaces of individual library components of projects like LLVM or Clang are not intended to be stable interfaces. Potentially disruptive changes to such C++ interfaces do not constitute a breaking change unless the disruption is exposed via another mechanism such as a stable C API.

(Feel free to wordsmith it!)