Hi Lin,

Thanks for the suggestions.

With respect to your proposal:

> (2) Any PR that contains API change should clearly state this in PR title.
> Otherwise, committer can reject the PR

I agree that PRs with API changes should be made more prominent. Another 
mechanism that has already been used is to tag the PRs with the "API change" 
label [1].

On the other hand, relying on the community to call out the PRs with API 
changes may not be reliable. Oftentimes, people didn't realize that a change 
constitutes an API change. If a committer identifies such a change, a more 
friendly response would be to just label the PR and call out where the API 
change happens in a comment.

> (1) Any PR involving change of APIs should be approved by at least one of
> the committers from a "API Committee" before it can be merged. I will
> explain how to form this committee at the end of email

I'm not convinced that more hierarchy should be created among committers. All 
committers are entrusted by the PPMC to use their judgement to the best 
interest of this project, and additional qualification seems counter-productive.

With respect to your linked issue #17292, as @stephenrawls pointed out, it 
comes from 4ed14e2 where the inline definition of MXAPIHandleException is moved 
to a .cc file, and I'm the one that actually made this change to unblock the 
PR. I want to call out that:
- This is not an API change in that there's no change in the function signature 
or visibility in the symbol table of libmxnet.so.
- It should not be the responsibility of MXNet to maintain the assumption that 
downstream projects like horovod make in their building logic.

A more pressing issue should have been the way that a third-party communication 
library like horovod integrates with MXNet. So far the horovod integration 
seemed brittle and there have been many issues [2]. For this specific issue, to 
me, it doesn't seem like a good decision on the horovod side to assume any 
function would be defined inline on the MXNet side.

With the development of MXNet 2.0, it's a good time to rethink how horovod 
integration should work with MXNet. I'm hoping that MXNet 2.0 item 4.11 
AbstractKVStore interface (See #17115) could help simplify and alleviate the 
coupling in the current way of integration.

-sz

[1] 
https://github.com/apache/incubator-mxnet/pulls?utf8=%E2%9C%93&q=is%3Apr+label%3A%22API+change%22+
[2] 
https://github.com/apache/incubator-mxnet/issues?utf8=%E2%9C%93&q=is%3Aissue+horovod

On 2020/01/14 00:37:55, Lin Yuan <apefor...@gmail.com> wrote: 
> Dear Community,
> 
> Recently, there were some changes to C APIs that broke another downstream
> project Horovod: https://github.com/apache/incubator-mxnet/issues/17292.
> Since we do not have integration tests for downstream project, it becomes
> critical for us to update APIs with extreme caution.
> 
> I would like to propose the following mechanism for us to maintain a clean
> and robust APIs: including both C API and Python API at the moment.
> 
> (1) Any PR involving change of APIs should be approved by at least one of
> the committers from a "API Committee" before it can be merged. I will
> explain how to form this committee at the end of email
> 
> (2) Any PR that contains API change should clearly state this in PR title.
> Otherwise, committer can reject the PR
> 
> API Committee:
> - This committee should consist of both seasoned MXNet developers and users.
> - Committee members should have a comprehensive view of MXNet APIs to make
> sure their usage are consistent across stack.
> - Committee members review PRs that involve API change with extra caution.
> - Committee members are required to attend the roadmap discussion for each
> new release.
> - For API breaking changes, committe members should reach consensus before
> the change is made.
> 
> Any other suggestion is welcome here.
> 
> Best,
> 
> Lin
> 

Reply via email to