Thank you @areusch . 

First of all, I think @Hzfengsy  has already addressed many points you bought 
up in the past, including:
- Putting the CI/testing as part of the important factors to consider
- Clarifying the definition of S0
- Clarifyng n how deprecation of S0 happens 

I would like to acknowledge that you have made your point clearly in your last 
point. Most of those points are disagreement on how to do things. In light of 
such disagreement, it is important to acknowledge each others’ view, 
reevaluate, and come back to also put the community's voices into consideration.

Let me first try to address some of the cases you bought up:

My read is that the decision is around “module-establishment” but not blank 
approval of all code that comes. All the subsequent code changes are still 
subject to the normal review process.  

CI is indeed one important area of the codebase. It is also equally important 
in other areas, such as community member contributing code, document, importer, 
different modules. No area is certain superior to another one. We are working 
together to empower each other.

One thing to keep in mind though is that CI/testing is only good if we have 
community members who come and use them. It is a great thing to have 
comprehensive tests, and we work collectively to resolve issues in testing, CI, 
system design, documentation and other places.

Remember we are fostering a culture that empowers each other. Let us see how 
the two scenarios you mentioned will play out in the empowering culture (which 
I believe we all strive to do):

Imagine at some point, the integration test suite is added, but this involves 
regression tests that add 1 hour to the CI.  That particular code is receiving 
the normal review process, and will be blocked, which requires the contributing 
team to be mindful (either move integration, or come and help work CI to be 
able to support such cases):
- When some regression happens after the code gets merged, open-minded team 
members can always come and revert the tests, and work together to improve 
them. 
- If it gets down to fixing Jenkinsfile, people volunteer to help, just like in 
other areas. I have personally helped maintain Jenkinsfile for the first few 
years and would be more than happy to help improve Jenkinsfile for a module 
that gets supported by the majority of community members. My belief is other 
members will also do so.
-  Bottom-line, despite some hiccups, we bring a module that welcomes more 
community members, while still keeping other modules to support other community 
members. 

Remember that problems do arise in the community and we work collectively to 
address them. We also have tools in our hands and multiple decision 
points(including reverting) to iteratively improve. If we simply block the 
gate, we simply will not have those troubles, nor will we empower or even have 
those community members around who would otherwise not be part of the 
community. 

It is great to us collaboratively working together iteratively – which means 
indeed a few disruptions, but we also welcome more people to work together to 
bring in improvements. We all pay our credits to the community in one way or 
another. While not everyone might help in CI, and reverting some of their PR 
might cause a bit of burden on others, they help reviewing code in other 
modules, fixing regression tests, writing docs, and bringing in architectures 
that reduces burdens. 

In the case of someone proposing a new S0 module and not getting majority 
support. 

That would entail that there is at least one -1 from the PMC members. Which 
also means that it would get rejected at any other possible mechanisms. Not 
knowing PMC won’t be a problem at all because many of us are eager to review, 
and empower good proposals from community members. I also do not think relevant 
subject areas would be a problem since we have some of the best experts in ML 
compilation. Again you will find how much of an empowerment mindset we have in 
here. Establishing a module indeed has a lot of factors to consider, there are 
more negative considerations from the PMC, likely they have already considered 
the code and community factors. In such cases, I would still expect us to see 
constructive conversation and reasoning.

**OSS development is not a single bundled thing**.
- We establish module
- We add PR changes
- We revert patches that brings regression, CI issue or other cases

Each step has **their own contexts**, set of stakeholders. They can come from 
different people. Some volunteers can take over others. While it is important 
to set marks through RFC, roadmap, signaling, and strategy. It is also 
important to be able to facilitate and empower each other through each of those 
steps.

The same thing applies to process RFCs. We bring in the process RFC to address 
things one step at a time. While clarifying S1, S2 is indeed important, which 
can be a topic of future discussions. Same would go for improving the stability 
of TVM overall – which I believe we all are working hard as a community. 
Sometimes bringing new modules is part of that process.

I don’t think S0 has to do with stability btw, it only has things to do with 
the impact scope of the project – one module can be very stable and remains in 
S0. On the other hand, we might choose to refactor a S1 module that touches 
many areas (in that sense S1 might become unstable). They all go through the 
same process of code changes, documentation, release notes that signal changes. 

It is natural that some parts of the codebase will be under more active 
development than others, which also comes with clear documentation, release 
notes that signal these changes. There will also be roadmaps as part of the RFC 
that tracks what they propose to do, as well as follow ups RFCs(and different 
conversations) that track additional changes. All of this information will help 
to inform our community members – academic and industry alike. 

One thing to remember though is that being in OSS development means we cannot 
simply bend to the development needs of a single (industry or academic) player. 
We are empowering each other in this journey together. That means we need to 
also accommodate other industry players who need features in newer 
modules(while not disrupting old ones), academic contributors who contribute 
novel modules that are then taken over by industry members who help(and are 
willing) to maintain them. Having a few different modules helps here, where 
those who favor stability will certainly lean more heavily over longer 
established ones, while other industry players might benefit from the latest 
one. We see that happen for example in the PyTorch ecosystem and other ML 
ecosystems.


-- 
Reply to this email directly or view it on GitHub:
https://github.com/apache/tvm-rfcs/pull/95#issuecomment-1338700949
You are receiving this because you are subscribed to this thread.

Message ID: <apache/tvm-rfcs/pull/95/c1338700...@github.com>

Reply via email to