I agree with Russell 100%. I think the intent here is to codify a spirit of collaboration. That’s always going to be imperfect. But clarifying expectations is important, even if it’s imperfect.
For some of the requirements (e.g., waiting an appropriate period or waiting merging with unresolved comments), I think there are ways to set up merge gates that can be bypassed with a label. I know we have something similar setup at Snowflake. E.g., if someone can’t wait two days, they could add a label that allows bypassing the merge gates. I can look into how that works, if you like. Regarding the "stable APIs", personally I think we should bias toward open rather than bias toward closed. If an interface is marked public and in a package that's not specifically marked for internal use, it should be assumed to be open. Biasing closed means that we have to explicitly annotate APIs that are intended to be publicly accessible - people browsing the code may not know that that's the convention we've gone with. I know I certainly don't read the contributing guide for every library I add a compile-time dependency on. Biasing open means we have to explicitly annotate APIs that are expected to be internal only. Those annotations and the javadoc comments make it clear for any user who's trying to add a compile-time dependency on something, making it glaringly obvious that they should not do so (or at least, that doing so they are explicitly taking the risk that something will change without warning). I think the bias should also follow similarly for stable v experimental APIs. Anything not explicitly annotated as @Experimental is considered stable. More than java interfaces, we have to be cognizant of everything user-facing - this includes the configuration files, health checker endpoints, metric names... there are people who currently have Polaris deployed to production and some of them have alarms and dashboards that matter to them. I acknowledge that this is a tough balancing act. Iteration speed matters and it's important that we have the ability to make mistakes and go back and fix them - otherwise we end up in analysis paralysis because nobody wants to merge the imperfect API that has to last forever. It should be ok to merge mistakes and to go back and fix them, but I think we can do that and still have good general guidelines that move everybody toward more communication and more collaboration, even if those guidelines aren't perfect. Mike On Wed, Jan 22, 2025 at 11:15 AM Russell Spitzer <russell.spit...@gmail.com> wrote: > The proposal sounds good to me, I really don't think the details matter > that much here. > > If someone is arguing the wording of the guidelines ("I waited two > mercurial days, it didn't specify in the guidelines.") > then something has gone wrong just as much as having broken them. Even if > we specified the > guidelines so well that no one could argue against their wording, we > wouldn't use the > guidelines as the justification for an action in the repository. If you > attempt to follow the guidelines > and make a mistake, or even follow them accurately but find out that by > no-ones fault someone > who should have been notified wasn't able to be you should work to find a > common > ground that doesn't just involve "too bad, I followed the rules." > > There will be exceptions to these guidelines as well I'm sure, we just need > to be clear that if you are > violating these principles you have a very good reason for doing so. > > For example for an immediate security purpose, just make sure you can > clearly articulate why that > merge needed to happen immediately and be prepared to defend it to the > community. > > Need to open a duplicate of a pr that was already closed? I'm sure there > are situations in which you > might want to do so. You can do so, but you better have a reason that isn't > "I wanted a different outcome". > Did circumstances change? Has the project evolved in a different direction? > Someone left the project? > All of these could be valid reasons and I don't think we gain anything by > articulating everything. > > The key principle here is to treat other contributors as collaborators and > I fully approve of that. I don't feel > strongly about encoding the rules in github itself. > > > On Wed, Jan 22, 2025 at 12:05 PM Dmitri Bourlatchkov <di...@apache.org> > wrote: > > > On Wed, Jan 22, 2025 at 12:58 PM Jean-Baptiste Onofré <j...@nanthrax.net> > > wrote: > > > > > It's not a problem to have several people working on the same feature. > > > > > > By duplicate PRs, I mean that you open a PR, where you get comments, > > > changes requested, etc. Then, you close this PR to open a new one (on > > > the same topic). So, I mean by a single person. I'm more in favor of > > > refactoring an existing PR, instead of closing PR #1 to open PR #2 > > > with the refactoring. > > > On some projects, I saw contributors closing the PR #1, creating PR #2 > > > just to get approval and merge (loosing the discussion on #1). > > > > > > > Thanks for the clarification! I totally agree with this. > > > > Cheers, > > Dmitri. > > >