diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index c0f2bda3a26bd8e233b2a2dea067e2c09328d4ea..e4e7c47c5a3c90a1e9cb8a47045dffa4d1bbd137 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -16,56 +16,6 @@
 /etc/** @jboeuf @nicolasnoble @a11r @ctiller
 /examples/node/** @murgatroid99 @a11r @nicolasnoble @ctiller
 /examples/objective-c/** @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/helloworld/HelloWorld/AppDelegate.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/auth_sample/SelectUserViewController.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/auth_sample/Misc/Images.xcassets/first.imageset/Contents.json @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/auth_sample/Misc/main.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/route_guide/Misc/Images.xcassets/first.imageset/first.pdf @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/auth_sample/Podfile @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/helloworld/HelloWorld.xcodeproj/project.pbxproj @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/auth_sample/Misc/Images.xcassets/second.imageset/second.pdf @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/auth_sample/MakeRPCViewController.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/helloworld/HelloWorld/Base.lproj/Main.storyboard @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/route_guide/Misc/Info.plist @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/route_guide/RouteGuideClient.xcodeproj/project.pbxproj @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/auth_sample/Misc/AppDelegate.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/helloworld/HelloWorld/Info.plist @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/helloworld/Podfile @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/route_guide/Misc/Images.xcassets/AppIcon.appiconset/Contents.json @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/auth_sample/Misc/Images.xcassets/AppIcon.appiconset/Contents.json @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/helloworld/HelloWorld.xcodeproj/xcshareddata/xcschemes/HelloWorld.xcscheme @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/auth_sample/Misc/AppDelegate.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/helloworld/HelloWorld/Images.xcassets/AppIcon.appiconset/Contents.json @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/helloworld/main.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/route_guide/ViewControllers.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/helloworld/README.md @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/helloworld/HelloWorld.xcodeproj/project.xcworkspace/contents.xcworkspacedata @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/auth_sample/Misc/Images.xcassets/first.imageset/first.pdf @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/OWNERS @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/auth_sample/SelectUserViewController.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/helloworld/HelloWorld/AppDelegate.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/helloworld/HelloWorld/ViewController.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/route_guide/Misc/Images.xcassets/second.imageset/second.pdf @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/auth_sample/MakeRPCViewController.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/auth_sample/Misc/Base.lproj/Main.storyboard @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/route_guide/RouteGuideClient.xcodeproj/xcshareddata/xcschemes/RouteGuideClient.xcscheme @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/route_guide/route_guide_db.json @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/route_guide/Misc/AppDelegate.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/route_guide/Misc/Base.lproj/Main.storyboard @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/auth_sample/Misc/Images.xcassets/second.imageset/Contents.json @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/route_guide/RouteGuideClient.xcodeproj/project.xcworkspace/contents.xcworkspacedata @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/auth_sample/README.md @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/route_guide/Misc/AppDelegate.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/route_guide/Misc/main.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/route_guide/README.md @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/auth_sample/Misc/GoogleService-Info.plist @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/auth_sample/AuthSample.xcodeproj/xcshareddata/xcschemes/AuthSample.xcscheme @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/route_guide/Misc/Images.xcassets/second.imageset/Contents.json @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/auth_sample/AuthSample.xcodeproj/project.pbxproj @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/auth_sample/AuthSample.xcodeproj/project.xcworkspace/contents.xcworkspacedata @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/route_guide/Misc/Images.xcassets/first.imageset/Contents.json @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/auth_sample/Misc/Info.plist @muxi @makdharma @a11r @nicolasnoble @ctiller
-/examples/objective-c/route_guide/Podfile @muxi @makdharma @a11r @nicolasnoble @ctiller
 /examples/python/** @nathanielmanistaatgoogle @kpayson64 @mehrdada
 /include/** @ctiller @markdroth @dgquintas @a11r @nicolasnoble
 /src/core/** @ctiller @markdroth @dgquintas
@@ -75,149 +25,6 @@
 /src/csharp/** @jtattermusch @apolcyn @a11r @nicolasnoble @ctiller
 /src/node/** @murgatroid99 @a11r @nicolasnoble @ctiller
 /src/objective-c/** @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/CronetUnitTests/Info.plist @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/build_tests.sh @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/GRXForwardingWriter.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/ProtoRPC/ProtoService.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/GRXWriter+Transformations.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/private/GRPCWrappedCall.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/GRPCCall+OAuth2.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/Connectivity/Info.plist @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/GRXWriter.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/private/GRPCChannel.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/InteropTestsRemote.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/GRXWriter+Immediate.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/CoreCronetEnd2EndTests/Info.plist @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/examples/Sample/Sample.xcodeproj/xcshareddata/xcschemes/Sample.xcscheme @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/README.md @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/change-comments.py @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/Connectivity/ConnectivityTestingApp.xcodeproj/project.pbxproj @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/Info.plist @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/Connectivity/Base.lproj/Main.storyboard @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/InteropTestsLocalSSL.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/GRXForwardingWriter.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/InteropTestsRemoteWithCronet/Info.plist @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/InteropTestsRemoteWithCronet/InteropTestsRemoteWithCronet.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/ProtoRPC/ProtoMethod.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/OWNERS @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/Connectivity/README.md @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/ProtoRPC/ProtoRPC.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/GRXConcurrentWriteable.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/examples/SwiftSample/SwiftSample.xcodeproj/project.xcworkspace/contents.xcworkspacedata @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/private/NSData+GRPC.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/GRXImmediateSingleWriter.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/Connectivity/main.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/Connectivity/ConnectivityTestingApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/RemoteTestClient/test.proto @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/InteropTests.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/private/NSDictionary+GRPC.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/private/GRPCConnectivityMonitor.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/examples/SwiftSample/AppDelegate.swift @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/private/GRXNSFastEnumerator.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/examples/RemoteTestClient/test.proto @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/examples/SwiftSample/Info.plist @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/GRXConcurrentWriteable.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/examples/Sample/Sample/ViewController.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/CronetUnitTests/CronetUnitTests.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/NSEnumerator+GRXUtil.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/InteropTestsLocalCleartext.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/Tests.xcodeproj/xcshareddata/xcschemes/InteropTestsRemoteWithCronet.xcscheme @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/build_example_test.sh @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/private/GRPCHost.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/Tests.xcodeproj/xcshareddata/xcschemes/RxLibraryUnitTests.xcscheme @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/GRPCCall+Cronet.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/GRPCCall+Cronet.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/examples/SwiftSample/SwiftSample.xcodeproj/xcshareddata/xcschemes/SwiftSample.xcscheme @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/Podfile @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/private/GRPCCompletionQueue.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/examples/SwiftSample/Images.xcassets/AppIcon.appiconset/Contents.json @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/GRPCCall+ChannelArg.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/GRPCCall+ChannelCredentials.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/ProtoRPC/ProtoMethod.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/GRXBufferedPipe.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/GRXImmediateWriter.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/run_tests.sh @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/RemoteTestClient/messages.proto @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/private/NSError+GRPC.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/Tests.xcodeproj/xcshareddata/xcschemes/AllTests.xcscheme @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/InteropTests.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/GRXWriter+Transformations.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/format-all-comments.sh @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/examples/Sample/Sample.xcodeproj/project.pbxproj @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/README.md @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/GRXBufferedPipe.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/GRPCCall+OAuth2.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/private/GRPCHost.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/GRXWriteable.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/private/NSData+GRPC.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/private/GRPCRequestHeaders.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/build_one_example.sh @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/ProtoRPC/ProtoService.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/private/GRPCRequestHeaders.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/examples/SwiftSample/Base.lproj/Main.storyboard @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/examples/Sample/README.md @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/private/NSError+GRPC.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/examples/Sample/Sample/AppDelegate.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/private/GRXNSBlockEnumerator.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/Tests.xcodeproj/xcshareddata/xcschemes/CoreCronetEnd2EndTests.xcscheme @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/internal_testing/GRPCCall+InternalTests.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/README.md @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/private/GRPCWrappedCall.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/private/GRXNSFastEnumerator.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/examples/Sample/Sample/Images.xcassets/AppIcon.appiconset/Contents.json @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/Connectivity/ViewController.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/PluginTest/imported-with-dash.proto @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/GRXWriter+Immediate.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/examples/Sample/Sample/main.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/examples/Sample/Sample/ViewController.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/transformations/GRXMappingWriter.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/Tests.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/GRPCCall+Tests.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/private/GRXNSBlockEnumerator.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/TestCertificates.bundle/test-certificates.pem @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/private/GRXNSScalarEnumerator.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/examples/RemoteTestClient/messages.proto @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/examples/SwiftSample/SwiftSample.xcodeproj/project.pbxproj @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/GRPCCall+ChannelArg.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/Tests.xcodeproj/xcshareddata/xcschemes/CronetUnitTests.xcscheme @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/private/GRPCOpBatchLog.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/examples/Sample/Podfile @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/examples/Sample/Sample/Base.lproj/Main.storyboard @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/Tests.xcodeproj/xcshareddata/xcschemes/InteropTestsLocalCleartext.xcscheme @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/internal_testing/GRPCCall+InternalTests.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/GRPCCall+ChannelCredentials.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/Tests.xcodeproj/xcshareddata/xcschemes/InteropTestsLocalSSL.xcscheme @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/examples/Sample/Sample.xcodeproj/project.xcworkspace/contents.xcworkspacedata @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/Tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/ProtoRPC/ProtoRPC.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/GRPCCall+Tests.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/examples/Sample/Sample/AppDelegate.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/Tests.xcodeproj/xcshareddata/xcschemes/InteropTestsRemote.xcscheme @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/GRXImmediateWriter.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/GRXWriter.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/transformations/GRXMappingWriter.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/GRPCCall.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/RxLibraryUnitTests.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/NSEnumerator+GRXUtil.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/private/GRXNSScalarEnumerator.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/examples/SwiftSample/ViewController.swift @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/Connectivity/Podfile @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/examples/SwiftSample/Podfile @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/Tests.xcodeproj/project.pbxproj @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/private/NSDictionary+GRPC.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/GRXImmediateSingleWriter.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/GRPCClientTests.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/private/GRPCCompletionQueue.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/private/GRPCOpBatchLog.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/private/GRPCReachabilityFlagNames.xmacro.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/private/version.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/PluginTest/test-dash-filename.proto @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/private/GRPCConnectivityMonitor.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/RxLibrary/GRXWriteable.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/examples/Sample/Sample/Info.plist @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/GRPCCall.h @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.m @muxi @makdharma @a11r @nicolasnoble @ctiller
-/src/objective-c/GRPCClient/private/GRPCChannel.m @muxi @makdharma @a11r @nicolasnoble @ctiller
 /src/php/** @stanley-cheung @murgatroid99 @a11r @nicolasnoble @ctiller
 /src/python/** @nathanielmanistaatgoogle @kpayson64 @mehrdada
 /src/python/grpcio/grpc_core_dependencies.py @a11y @ctiller @nicolasnoble @nathanielmanistaatgoogle @kpayson64 @mehrdada
@@ -230,7 +37,5 @@
 /tools/** @matt-kwong @jtattermusch @nicolasnoble @a11r @ctiller
 /tools/codegen/core/** @ctiller @dgquintas @markdroth
 /tools/distrib/python/** @nathanielmanistaatgoogle @kpayson64 @mehrdada
-/tools/dockerfile/** @matt-kwong @jtattermusch @nicolasnoble @a11r @ctiller
-/tools/run_tests/** @matt-kwong @jtattermusch @nicolasnoble @a11r @ctiller
 /tools/run_tests/artifacts/*_node* @murgatroid99 @matt-kwong @jtattermusch @nicolasnoble @a11r @ctiller
 /tools/run_tests/helper_scripts/*_node* @murgatroid99 @matt-kwong @jtattermusch @nicolasnoble @a11r @ctiller
diff --git a/tools/mkowners/mkowners.py b/tools/mkowners/mkowners.py
index 4805df45dfcd5d0fa015d526830be1591225815c..2ccedfcfb8c13429cdf8081216dce3fae97877d0 100755
--- a/tools/mkowners/mkowners.py
+++ b/tools/mkowners/mkowners.py
@@ -132,7 +132,7 @@ def git_glob(glob):
   global gg_cache
   if glob in gg_cache: return gg_cache[glob]
   r = set(subprocess
-      .check_output(['git', 'ls-files', glob])
+      .check_output(['git', 'ls-files', os.path.join(git_root, glob)])
       .decode('utf-8')
       .strip()
       .splitlines())
@@ -150,7 +150,7 @@ def expand_directives(root, directives):
         globs[glob].append(directive.who)
   # expand owners for intersecting globs
   sorted_globs = sorted(globs.keys(),
-                        key=lambda g: len(git_glob(os.path.join(root, g))),
+                        key=lambda g: len(git_glob(full_dir(root, g))),
                         reverse=True)
   out_globs = collections.OrderedDict()
   for glob_add in sorted_globs:
@@ -162,8 +162,9 @@ def expand_directives(root, directives):
       files_have = git_glob(full_dir(root, glob_have))
       intersect = files_have.intersection(files_add)
       if intersect:
-        for f in files_add:
+        for f in sorted(files_add): # sorted to ensure merge stability
           if f not in intersect:
+            print("X", root, glob_add, glob_have)
             out_globs[os.path.relpath(f, start=root)] = who_add
         for who in who_have:
           if who not in out_globs[glob_add]:
@@ -182,8 +183,9 @@ def add_parent_to_globs(parent, globs, globs_dir):
           intersect = files_parent.intersection(files_child)
           gglob_who_orig = gglob_who.copy()
           if intersect:
-            for f in files_child:
+            for f in sorted(files_child): # sorted to ensure merge stability
               if f not in intersect:
+                print("Y", full_dir(owners.dir, oglob), full_dir(globs_dir, gglob))
                 who = gglob_who_orig.copy()
                 globs[os.path.relpath(f, start=globs_dir)] = who
             for who in oglob_who:
@@ -199,6 +201,7 @@ with open(args.out, 'w') as out:
   out.write('# Auto-generated by the tools/mkowners/mkowners.py tool\n')
   out.write('# Uses OWNERS files in different modules throughout the\n')
   out.write('# repository as the source of truth for module ownership.\n')
+  written_globs = []
   while todo:
     head, *todo = todo
     if head.parent and not head.parent in done:
@@ -207,6 +210,21 @@ with open(args.out, 'w') as out:
     globs = expand_directives(head.dir, head.directives)
     add_parent_to_globs(head.parent, globs, head.dir)
     for glob, owners in globs.items():
-      out.write('/%s %s\n' % (
-          full_dir(head.dir, glob), ' '.join(owners)))
+      skip = False
+      for glob1, owners1, dir1 in reversed(written_globs):
+        files = git_glob(full_dir(head.dir, glob))
+        files1 = git_glob(full_dir(dir1, glob1))
+        intersect = files.intersection(files1)
+        if files == intersect:
+          if sorted(owners) == sorted(owners1):
+            skip = True # nothing new in this rule
+            break
+        elif intersect:
+          # continuing would cause a semantic change since some files are
+          # affected differently by this rule and CODEOWNERS is order dependent
+          break
+      if not skip:
+        out.write('/%s %s\n' % (
+            full_dir(head.dir, glob), ' '.join(owners)))
+        written_globs.append((glob, owners, head.dir))
     done.add(head.dir)