Replies: 4 comments 12 replies
-
Can we make it so that those unstable APIs (version < 1.0) are by default "disabled", and a user has to explicitly unlock it by setting some variable / tag in the invoking code? |
Beta Was this translation helpful? Give feedback.
-
One other item in here that I like generally is the feature freeze idea. However, due to our traditional activity level, I suggest a one week feature freeze rather than two. However, we need to make sure active reviewer are on board with that. Especially @nixpanic and @agarwal-mudit I'll also include @leseb and @thotz who are actively working on the rgw packages. What do you think? |
Beta Was this translation helpful? Give feedback.
-
As it's somewhat relevant to this discussion, I want to mention that I created a new "API" label. We can use this label to explicitly mark a PR as containing changes to the API. In the future we could include it as part of our automation too. |
Beta Was this translation helpful? Give feedback.
-
In #552 we merged an API stability document which describes preview and deprecated APIs. So, two questions: |
Beta Was this translation helpful? Give feedback.
-
Sometimes we merge changes or additions to the exported API changes "just in time" for a release, giving it not the care it should get IMHO. And I know that's also totally my fault, because I don't review in time. Given that the API is the main "feature" of go-ceph, I would like to start a discussion how we can improve the process so that we don't end up in a situation where we make compromises on the quality of the API for the sake of other priorities, or at least that when we do, we are fully aware of it. In general I don't think it's a good idea to merge something in doubt just to have "something" to release. On the other hand I also see that we (more specifically I) need a bit pressure to keep moving forward. So I will just enumerate a few things that came to my mind and we could think about:
tech preview
We could in general release all new APIs as a "tech preview" or beta or something, that similar to "deprecated" is not recommended to use yet if you require stability. I know, as long as we are below 1.0 we don't need that, but I feel in the end we almost take API stability already as serious as post-1.0. That way people who don't mind doing some fixes with the following release can use it already, and we also have a chance to get feedback on the API and improve it. Also it would be a nice escape path for feature pressure from Ceph-CSI, because we would have a way to integrate their requirements/requests, but can still change something later (because we can simply fix it on the CSI side as well by ourselves).
design spec
Without being too bureaucratic, we could establish that we first push a draft PR that contains just enough to have a conversation about the exported API. That would mean that it's expected to do all the nagging and pushing to review the API already, although implementation is not finished. ;-) After we agreed the (rest of the) implementation and its reviews follows. If we only review after basically all is done, it is psychologically quite hard to accept too much changes, because so much effort has gone into it already.
TDD (Test Driven Development)
similar to the point before, it can be quite useful to write tests already before the implementation, because it can clarify how the API is expected to be used.
feature freeze
We could say that all PRs that touch the exported API must be reviewed until 2 weeks before release, so that there is an actual chance to make changes, if required.
feature-driven releases
If, and only if, the fixed release cadence has the effect that we compromise on the quality, we might rethink it. So either we should mentally prepare that a release might sometimes have not a lot new to offer, and not feel pressure to merge something in time, or we should maybe move to a more flexible release schedule.
In the end my motivation is, that go-ceph will be better than it would be otherwise. It's not about being perfect of course, but to reach at least the 80% of the 80/20 rule. Don't let perfect be the enemy of good. But also don't let pace be the enemy of good enough.
Beta Was this translation helpful? Give feedback.
All reactions