CDM PR and Release Governance #2774
Replies: 5 comments 1 reply
-
@tomhealey-icma I wanted to suggest that we port this issue into a GitHub "Discussion", but maybe we don't need a new Issue (or Discussion) at all The proposals being debated in #2665 can be categorised as:
Personally I would keep these 3 topics separate rather than folding them into a big issue, because it would allow us to selectively close some while others are still debated. A summary of the comments that have been provided in response to the SWG discussion can be posted in each relevant discussion topic rather than here. |
Beta Was this translation helpful? Give feedback.
-
To the extent that it's possible, the reuse and independent resolution of existing issues makes a lot of sense. Many of these concerns are interrelated. The definition of the types of change is an obvious example as it determines to what type of release a change belongs, and, by implication, whom should be able to approve that change and the frequency/schedule of each category of each type of release. Perhaps a way forward is:
FWIW, I suggest parking a comprehensive discussion of backward compatibility as it is broader than the governance questions. |
Beta Was this translation helpful? Give feedback.
-
Based on all the meetings on this topic there are currently five separate proposals that need to be agreed upon. There may be a need to further define elements of each proposal as it relates to Dan's comment. I've summarized the feedback that was received as of March 11th. Proposal 1: Draft PRs and Ready for Review Current: Most PRs are submitted as “review ready” even if they are not labeled. Feedback: BL:This seems ok to me. We’ll need to define who can change the labels, and what labels should be used to trigger reviews and then implementation. CR: What is the definition of a Draft PR please? We’re waiting on FINOS to give us Triage permissions on the Editor role which will allow contributors to add the labels themselves which should help here. We still need to cater for general Participants submitting PRs though so a Draft status would make sense. The more that can be done automatically the better. Result: General agreement. Draft is defined by Github. Moving to Ready state would require proper labelling. Proposal 2: PR Approvals Current: PRs only need one approval from a maintainer and the approving maintainer can be from the same organization. BL:I am concerned that requiring all three TAs to approve every change could lead to delays in the case that a TA is non-responsive. I wonder if we could refine this and distinguish between different scenarios with different risks. For instance, I think that an additive-only, backwardly-compatible change that is on the roadmap approved by the SWG should be able to be approved for deployment into dev by, say, any two maintainers. Where perhaps a breaking change that is being released into production as a new major version should perhaps require all three TAs to approve it. I think it’s worth having a discussion on what we need to balance sufficient control vs. sufficient nimbleness.
Chris: I agree with Brian that it should not be a blanket requirement that every PR needs approval from each of the 3 TAs. The approval(s) required for any PR was raised very early on, and as Brian has suggested, this needs to be considered on a case by case basis. There was a Triage matrix created which was possibly a little complex, so we should consider updating it to make it simpler. DS: Requiring all three TAs to approve every model or DSL change seems restrictive both in terms of requiring extensive oversight regardless of the impact of the change and in that it removes the opportunity for maintainers who are outside of the TAs to guide CDM's direction. David: Agree with Brian’s and Chris’s comments that a risk-based assessment is better, and that singling-out “TAs” works against the objective of broadening the maintainership. As they mention we already have a kind of risk-based matrix. It is worth revisiting / simplifying (using the experience accumulated in the last 12m since contributing to FINOS) rather than throw-away entirely. One aspect that should be clarified is what counts as “approval”: approvals from multiple people inside the same (maintainer) organization count as 1, and approvals from the same organization as the contributor don’t count. The role of the community should also be recognised. Beyond the formal safe-guards that are enforced before merging code in GitHub, contributors typically seek to garner consensus around their change through the relevant WGs first. The matrix has some scenarios where such approval is explicitly required. Ensuring relevant maintainers are lined up to approve changes is challenging today, increasing the number of approvals for each change regardless of risk impact will paralyse development of the CDM We don’t know if Chris’s “domain” approach is the right one, because CDM domains are much more fluid than the 3 TA domains. In our view a “good” PR balances 3 objectives:
Typically 1 has tension vs 2 and 3. While 1 can be assessed by experts from that use-case’s domain, 2 should involve experts from other domains and 3 involves agnostic policing of the model’s good design. Where there are topics/WGs that exist outside of “obvious” domains or across TA domains (e.g. should the proposals to add a digital assets WG) the concept of approving in this manner makes no sense. On the DSL point: we agree it should not be part of the remit, at least not on a routine basis. That said, there are cases where planned CDM developments may demand DSL changes. In this case, it’s a good idea to give the CDM community some oversight on the changes being made. This will be facilitated by the DSL’s imminent FINOS contribution. AH: I think Dan's input here is quite on point, but it will require a clear, objective definition of a Minor and major Change (which can be quite subjective to decide between) and what constitutes an Urgent defect (the only variant here that comes to mind would be if there is a party that is being directly affected by a defect in a severe way and reports it as such). The discussion around these definitions can be quite difficult and lengthy to conclude. MG: This seems more restrictive that what we currently have. I think it's already difficult to get the approvals from two TAS. I agree with @dschwartznyc 's suggestion to have a layered approach and have:
Result: General agreement that the current process should be changed especially for major changes but also minor changes would require at least two approvers. Possible solution:
Proposal 3: Dev Release Cycle Current: Dev minor and patch release are ad-hoc.
AH: I do not understand what we want to achieve by having a weekly cycle instead of the current way. We would have fewer dev releases, and multiple changes would be bundled together in a release. This comes with the downside that @dan mentioned above, but I don't see the upsides. I agree with @ahutusoru123. Not sure why we need to establish a weekly cycle. Is this a cost issue? David: Agree with Chris that there is no such thing as a minor or patch release for Dev. We only increment one “x” tag in 6.0.0-dev.x. We don’t see the use-case for enforcing a release schedule for these. Also no backward-compatibility requirement (that’s the point of having a dev branch to make those changes) Result: Seems fewer participants support regularly scheduled releases and instead prefer an ad-hoc approach. While this serves the needs of the contributors it may not be the best approach for the wider community. To be discussed. Proposal 4: Dev to Prod Release Cycle Current: Prod releases occur approximately once per year but date is not fixed BL:>> I would propose the following: Chris: I would suggest that anything going into production should be agreed by the SWG and not just the CRWG. The CRWG can review individual PRs, but agreement of when to cut a new prod release (major/minor/patch) should be approved by the SWG. This in turn may mean that ad-hoc meetings of the SWG are required to approve delivery of a new prod release. In general I’m likening the SWG to the Product Owner of the CDM, and in my experience anything going into production would need to be approved by the product owner. DS: Please clarify what is meant by "Dev minor releases" as it seems to imply constraints on releases of code in development and one would think that these should take place with no constraint to facilitate collaboration and testing. Patches and Minor changes: please confirm that patches and minor releases will be released to Production on at least a weekly basis with the potential that patches can be released immediately to production depending on the severity of the defect to be resolved. MG: If we want to expand the adoption, we cannot have only one Production version per year. Since we are generating new content rapidly, production versions will need to be generated more frequently than when the standard is more mature. We've seen this in other financial standards such as FpML and FIX. The CDM Roadmap based on content should define the timeline for Prod releases based on the timeline for adding new content that is needed to implementers. For example, the Collateral WG may want to have a Prod release in the summer and the Products and Events sooner than that. The CDM Roadmap should include an attempt to schedule the expected Prod releases for the year based on the book of work of each working group. David:We don’t agree with the proposed change, we broadly agree with Brian’s proposal, but we don’t agree with Chris’s proposed alternative 🙃. Prod release once per year at a fixed date: It should be roadmap-based instead and driven by the SWG – see Brian’s suggestion for prod major release below. Proposal 5: Definition of Backward Compatibility Current: Like other types of software, backward compatibility in the context of a domain model means that an implementor of that model would not have to make any change to update to such version. Prohibited changes: o Any DSL change that results in any prohibited change or change in a test case input or output file. BL: >> Back in September I had developed a more comprehensive set of proposals around change control. See in the attached PowerPoint. The intention is to provide some clearer definitions of what is to be controlled and how, while also providing a certain amount of wiggle room so that non-critical changes don’t force a major release. David asked me to present this to the SWG next month. Chris: We cannot stop another project/application (the DSL) from performing releases so the first of the two new bullet points cannot be added. I also wonder whether we should revisit the 2 Prohibited Changes associated to the DSL in this context? DS: David: We agree that the definition of backward compatibility and the process around it should be tightened. It critically underpins many of the above proposals. It’s a topic onto itself and merits a dedicated discussion. However, rather than trying to define it by listing what it is and isn’t (incomplete), we should drive it from first principles and then illustrate it with some examples of allowed vs disallowed changes. This approach would also allow us to implement proper regression testing of backward compatibility. There are 2 types of model entities: objects (types and enums) and functions. For objects, we propose the following definition of backward compatible. It is based on 2 users or systems (1 producer and 1 consumer) trying to exchange information about those objects. A change (n --> n+1) is backward compatible if a consumer on version n+1 can consume and validate any object X that has been produced and validated by a producer on version n In this definition: “validate” means passing all the condition and cardinality constraints |
Beta Was this translation helpful? Give feedback.
-
Since we have five proposals to review and it was getting confusing I've separated each proposal to a separate discussion under the Governance category: Please vote, thumbs up/down or comment so I can see where we stand. |
Beta Was this translation helpful? Give feedback.
-
Closing as superseded by the 5 sub-discussions that have been spun-out ^^ |
Beta Was this translation helpful? Give feedback.
-
This issue consolidates previous discussions and meetings on the release governance proposals that have been put forth. Please refer to these past issues:
2423
2305
2422
Latest proposal and comments:
2665
The comment period on the latest proposal closed on March 11. A summary of comments will be posted here.
Beta Was this translation helpful? Give feedback.
All reactions