You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ratis.apache.org by el...@apache.org on 2018/09/21 15:15:14 UTC

[3/3] incubator-ratis git commit: RATIS-316. Use ratis-thirdparty and reorganize generated code

RATIS-316. Use ratis-thirdparty and reorganize generated code

* Use ratis-thirdparty to build Ratis
* Rename ratis-shaded-proto to ratis-proto
* Undo skipShade because we don't have to shade anymore
* Update BUILDING.md


Project: http://git-wip-us.apache.org/repos/asf/incubator-ratis/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ratis/commit/3b9d50de
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ratis/tree/3b9d50de
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ratis/diff/3b9d50de

Branch: refs/heads/master
Commit: 3b9d50deddcb2dc846b62ab63dd668f45c8b6536
Parents: 523fb63
Author: Josh Elser <el...@apache.org>
Authored: Sat Sep 8 08:42:43 2018 -0700
Committer: Josh Elser <el...@apache.org>
Committed: Fri Sep 21 11:14:24 2018 -0400

----------------------------------------------------------------------
 BUILDING.md                                     |  65 +--
 pom.xml                                         |  30 +-
 ratis-assembly/pom.xml                          |   6 +-
 ratis-client/pom.xml                            |   7 +-
 .../org/apache/ratis/client/RaftClient.java     |   2 +-
 .../ratis/client/impl/ClientProtoUtils.java     |  10 +-
 .../ratis/client/impl/RaftClientImpl.java       |   4 +-
 ratis-common/pom.xml                            |   7 +-
 .../java/org/apache/ratis/conf/ConfUtils.java   |   2 +-
 .../org/apache/ratis/protocol/ClientId.java     |   2 +-
 .../java/org/apache/ratis/protocol/Message.java |   2 +-
 .../ratis/protocol/NotReplicatedException.java  |   2 +-
 .../apache/ratis/protocol/RaftClientReply.java  |   2 +-
 .../ratis/protocol/RaftClientRequest.java       |   4 +-
 .../org/apache/ratis/protocol/RaftGroupId.java  |   2 +-
 .../java/org/apache/ratis/protocol/RaftId.java  |   2 +-
 .../org/apache/ratis/protocol/RaftPeerId.java   |   2 +-
 .../ratis/protocol/ServerInformationReply.java  |   4 +-
 .../java/org/apache/ratis/util/JmxRegister.java |   2 +-
 .../java/org/apache/ratis/util/ProtoUtils.java  |   8 +-
 .../java/org/apache/ratis/util/StringUtils.java |   6 +-
 ratis-examples/pom.xml                          |   6 +-
 .../arithmetic/ArithmeticStateMachine.java      |   4 +-
 .../examples/arithmetic/AssignmentMessage.java  |   2 +-
 .../ratis/examples/arithmetic/cli/Assign.java   |   4 +-
 .../ratis/examples/arithmetic/cli/Client.java   |   2 +-
 .../ratis/examples/arithmetic/cli/Server.java   |   2 +-
 .../ratis/examples/filestore/FileInfo.java      |   2 +-
 .../ratis/examples/filestore/FileStore.java     |   4 +-
 .../examples/filestore/FileStoreClient.java     |   4 +-
 .../examples/filestore/FileStoreCommon.java     |   2 +-
 .../filestore/FileStoreStateMachine.java        |  10 +-
 .../examples/filestore/FileStoreBaseTest.java   |   4 +-
 ratis-grpc/pom.xml                              |   7 +-
 .../java/org/apache/ratis/grpc/GrpcUtil.java    |   8 +-
 .../grpc/client/GrpcClientProtocolClient.java   |  22 +-
 .../grpc/client/GrpcClientProtocolProxy.java    |   6 +-
 .../grpc/client/GrpcClientProtocolService.java  |  12 +-
 .../apache/ratis/grpc/client/GrpcClientRpc.java |  12 +-
 .../ratis/grpc/client/GrpcClientStreamer.java   |   8 +-
 .../grpc/server/GrpcAdminProtocolService.java   |  12 +-
 .../ratis/grpc/server/GrpcLogAppender.java      |  10 +-
 .../grpc/server/GrpcServerProtocolClient.java   |  14 +-
 .../grpc/server/GrpcServerProtocolService.java  |   6 +-
 .../apache/ratis/grpc/server/GrpcService.java   |   6 +-
 .../org/apache/ratis/grpc/TestRaftStream.java   |   2 +-
 .../ratis/grpc/TestRetryCacheWithGrpc.java      |   4 +-
 ratis-hadoop-shaded/pom.xml                     | 138 +++---
 ratis-hadoop/pom.xml                            |   4 +-
 .../hadoop/ipc/ProtobufRpcEngineShaded.java     |   4 +-
 ...nedClientProtocolClientSideTranslatorPB.java |   2 +-
 .../client/CombinedClientProtocolPB.java        |   2 +-
 ...nedClientProtocolServerSideTranslatorPB.java |  16 +-
 .../hadooprpc/server/HadoopRpcService.java      |  12 +-
 .../hadooprpc/server/RaftServerProtocolPB.java  |   2 +-
 ...aftServerProtocolServerSideTranslatorPB.java |  16 +-
 ratis-logservice/pom.xml                        |   2 +-
 .../apache/ratis/logservice/api/LogMessage.java |   6 +-
 .../ratis/logservice/api/LogStateMachine.java   |   6 +-
 .../ratis/logservice/api/TestLogMessage.java    |   4 +-
 ratis-netty/pom.xml                             |   7 +-
 .../org/apache/ratis/netty/NettyClient.java     |  18 +-
 .../org/apache/ratis/netty/NettyRpcProxy.java   |  22 +-
 .../ratis/netty/client/NettyClientRpc.java      |  12 +-
 .../ratis/netty/server/NettyRpcService.java     |  30 +-
 ratis-proto-shaded/pom.xml                      | 482 -------------------
 .../src/main/proto/Examples.proto               |  67 ---
 ratis-proto-shaded/src/main/proto/Grpc.proto    |  54 ---
 ratis-proto-shaded/src/main/proto/Hadoop.proto  |  51 --
 .../src/main/proto/Logservice.proto             |  35 --
 ratis-proto-shaded/src/main/proto/Netty.proto   |  52 --
 ratis-proto-shaded/src/main/proto/RMap.proto    | 189 --------
 ratis-proto-shaded/src/main/proto/Raft.proto    | 307 ------------
 ....ratis.shaded.io.grpc.ManagedChannelProvider |  16 -
 ...he.ratis.shaded.io.grpc.NameResolverProvider |  16 -
 ...g.apache.ratis.shaded.io.grpc.ServerProvider |  16 -
 ratis-proto/pom.xml                             | 191 ++++++++
 ratis-proto/src/main/proto/Examples.proto       |  67 +++
 ratis-proto/src/main/proto/Grpc.proto           |  54 +++
 ratis-proto/src/main/proto/Hadoop.proto         |  51 ++
 ratis-proto/src/main/proto/Logservice.proto     |  35 ++
 ratis-proto/src/main/proto/Netty.proto          |  52 ++
 ratis-proto/src/main/proto/RMap.proto           | 189 ++++++++
 ratis-proto/src/main/proto/Raft.proto           | 307 ++++++++++++
 ratis-replicated-map/pom.xml                    |   6 +-
 ratis-server/pom.xml                            |   6 +-
 .../ratis/server/impl/CommitInfoCache.java      |   2 +-
 .../ratis/server/impl/LeaderElection.java       |   4 +-
 .../apache/ratis/server/impl/LeaderState.java   |   6 +-
 .../apache/ratis/server/impl/LogAppender.java   |   4 +-
 .../ratis/server/impl/PendingRequest.java       |   2 +-
 .../ratis/server/impl/PendingRequests.java      |   4 +-
 .../ratis/server/impl/RaftServerImpl.java       |  10 +-
 .../ratis/server/impl/RaftServerProxy.java      |   2 +-
 .../apache/ratis/server/impl/RetryCache.java    |   6 +-
 .../org/apache/ratis/server/impl/RoleInfo.java  |   2 +-
 .../ratis/server/impl/ServerProtoUtils.java     |   6 +-
 .../apache/ratis/server/impl/ServerState.java   |   8 +-
 .../ratis/server/impl/StateMachineUpdater.java  |   2 +-
 .../RaftServerAsynchronousProtocol.java         |   4 +-
 .../server/protocol/RaftServerProtocol.java     |  12 +-
 .../ratis/server/storage/LogInputStream.java    |   2 +-
 .../ratis/server/storage/LogOutputStream.java   |   4 +-
 .../apache/ratis/server/storage/LogReader.java  |   6 +-
 .../apache/ratis/server/storage/LogSegment.java |   8 +-
 .../ratis/server/storage/MemoryRaftLog.java     |   2 +-
 .../apache/ratis/server/storage/RaftLog.java    |   2 +-
 .../ratis/server/storage/RaftLogCache.java      |   2 +-
 .../ratis/server/storage/RaftLogWorker.java     |   2 +-
 .../ratis/server/storage/SegmentedRaftLog.java  |   2 +-
 .../ratis/server/storage/SnapshotManager.java   |   4 +-
 .../apache/ratis/statemachine/StateMachine.java |   4 +-
 .../ratis/statemachine/TransactionContext.java  |   8 +-
 .../statemachine/impl/BaseStateMachine.java     |   2 +-
 .../impl/TransactionContextImpl.java            |   8 +-
 .../java/org/apache/ratis/MiniRaftCluster.java  |   2 +-
 .../java/org/apache/ratis/RaftAsyncTests.java   |  10 +-
 .../java/org/apache/ratis/RaftBasicTests.java   |   4 +-
 .../java/org/apache/ratis/RaftTestUtil.java     |   6 +-
 .../TestRaftServerLeaderElectionTimeout.java    |   2 +-
 .../ratis/TestRaftServerSlownessDetection.java  |   2 +-
 .../org/apache/ratis/protocol/TestRaftId.java   |   2 +-
 .../impl/RaftReconfigurationBaseTest.java       |   2 +-
 .../ratis/server/impl/RetryCacheTestUtil.java   |   2 +-
 .../server/impl/ServerInformationBaseTest.java  |   2 +-
 .../server/simulation/RaftServerReply.java      |   6 +-
 .../server/simulation/RaftServerRequest.java    |   6 +-
 .../server/simulation/SimulatedServerRpc.java   |   2 +-
 .../server/storage/RaftStorageTestUtils.java    |   2 +-
 .../ratis/server/storage/TestCacheEviction.java |   2 +-
 .../ratis/server/storage/TestRaftLogCache.java  |   2 +-
 .../server/storage/TestRaftLogReadWrite.java    |   4 +-
 .../server/storage/TestRaftLogSegment.java      |   4 +-
 .../server/storage/TestSegmentedRaftLog.java    |   2 +-
 .../statemachine/RaftSnapshotBaseTest.java      |   2 +-
 .../SimpleStateMachine4Testing.java             |   8 +-
 .../ratis/statemachine/TestStateMachine.java    |   2 +-
 137 files changed, 1380 insertions(+), 1718 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/BUILDING.md
----------------------------------------------------------------------
diff --git a/BUILDING.md b/BUILDING.md
index 56b6556..c9a806b 100644
--- a/BUILDING.md
+++ b/BUILDING.md
@@ -28,54 +28,29 @@ $ mvn clean package -DskipTests
 Note: subsequent builds could be faster with skiping shading/protobuf compile steps.
 See the next section for more info.
 
-# Shading
+# Thirdparty
 
-We shade protos, protobuf and other libraries such as Netty, gRPC, Guava and Hadoop
-so that applications using Ratis may use protobuf and other libraries with versions
-different from the versions used here.
+We centralize all bundled thirdparty dependencies in the ratis-thirdparty module. This
+module is not attached to the core Ratis build as it only needs to change when one
+of these dependencies are changed. All dependencies included in ratis-thirdparty
+must be relocated to a different package to ensure no downstream classpath pollution.
 
-_Note: RATIS-288 changes how the shaded artifacts are generated, removing them from the
-source tree. Developers with local checkouts prior to this change will need to manually
-remove the directories `ratis-proto-shaded/src/main/java` and
-`ratis-hadoop-shaded/src/main/java`._
+Ratis developers should rely on these relocated thirdparty classes.
 
-By default, protobuf compilation and shaded jar creation are executed for every build.
-
-For developers who wish to skip protobuf generation and shaded jar creation because they
-are aware that they have not been modified, they can be disabled with the `skipShade` property.
-```
-$ mvn package -DskipTests -DskipShade
-```
-
-When the `skipShade` property is given, Maven will inspect your local Maven repository for
-the most recent version of `ratis-proto-shaded` (or `ratis-hadoop-shaded`), reaching out to
-Maven central when you have no local copy. You may need to run a `mvn install` prior to
-attempting to use the `skipShade` property to ensure that you have a version of the artifact
-available for your use.
-```
-$ mvn install -DskipTests
-```
-
-For developers familiar with the `skipCleanShade` option, this is no longer necessary. Maven's
-local repository is acting as a cache instead of the current working copy of your repository.
-`mvn clean` can be used to safely clean all temporary build files, without impacting your
-use of the `skipShade` option.
-
-Unit tests can also be executed with the `skipShade` option:
-```
-$ mvn package -DskipShade
-```
+As a result of this thirdparty module, there is no need for `skipShade` options in the
+build which previously existed because the shaded artifacts that are generated each
+build are limited only to the code in Ratis itself.
 
 ## What packages are shaded?
 
-| Original packages                   | Shaded packages                                              |
-| ------------------------------------|--------------------------------------------------------------|
-| `com.google.common`                 | `org.apache.ratis.shaded.com.google.common`                  |
-| `com.google.protobuf`               | `org.apache.ratis.shaded.com.google.protobuf`                |
-| `com.google.thirdparty.publicsuffix`| `org.apache.ratis.shaded.com.google.thirdparty.publicsuffix` |
-| `io.grpc`                           | `org.apache.ratis.shaded.io.grpc`                            |
-| `io.netty`                          | `org.apache.ratis.shaded.io.netty`                           |
-| `org.apache.hadoop.ipc.protobuf`    | `org.apache.ratis.shaded.org.apache.hadoop.ipc.protobuf`     |
-
-The compiled protocol-buffer definitions in this `ratis-proto-shaded` are stored in the
-`org.apache.ratis.shaded.proto` Java package.
+| Original packages                   | Shaded packages                                                  |
+| ------------------------------------|------------------------------------------------------------------|
+| `com.google.common`                 | `org.apache.ratis.thirdparty.com.google.common`                  |
+| `com.google.protobuf`               | `org.apache.ratis.thirdparty.com.google.protobuf`                |
+| `com.google.thirdparty.publicsuffix`| `org.apache.ratis.thirdparty.com.google.thirdparty.publicsuffix` |
+| `io.grpc`                           | `org.apache.ratis.thirdparty.io.grpc`                            |
+| `io.netty`                          | `org.apache.ratis.thirdparty.io.netty`                           |
+| `org.apache.hadoop.ipc.protobuf`    | `org.apache.ratis.shaded.org.apache.hadoop.ipc.protobuf`         |
+
+All compiled protocol-buffer definitions in `ratis-shaded` are stored in the
+`org.apache.ratis.proto` Java package.

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 133b0ea..8fa43ab 100644
--- a/pom.xml
+++ b/pom.xml
@@ -41,12 +41,14 @@
   </licenses>
 
   <modules>
+    <module>ratis-proto</module>
     <module>ratis-common</module>
     <module>ratis-client</module>
     <module>ratis-server</module>
 
     <module>ratis-grpc</module>
     <module>ratis-netty</module>
+    <module>ratis-hadoop-shaded</module>
     <module>ratis-hadoop</module>
 
     <module>ratis-assembly</module>
@@ -172,11 +174,13 @@
     <java.min.version>${javac.version}</java.min.version>
     <maven.min.version>3.3.9</maven.min.version>
 
-    <!--Version of protobuf to be shaded -->
+    <!-- Contains all shaded thirdparty dependencies -->
+    <ratis.thirdparty.version>0.1.0-SNAPSHOT</ratis.thirdparty.version>
+
+    <!-- Need these for the protobuf compiler. *MUST* match what is in ratis-thirdparty -->
     <shaded.protobuf.version>3.5.0</shaded.protobuf.version>
-    <shaded.protobuf-javanano.version>3.1.0</shaded.protobuf-javanano.version>
+    <shaded.grpc.version>1.14.0</shaded.grpc.version>
 
-    <io.opencensus.version>0.12.2</io.opencensus.version>
 
     <!-- Test properties -->
     <maven.test.redirectTestOutputToFile>true</maven.test.redirectTestOutputToFile>
@@ -272,7 +276,7 @@
       </dependency>
 
       <dependency>
-        <artifactId>ratis-proto-shaded</artifactId>
+        <artifactId>ratis-proto</artifactId>
         <groupId>org.apache.ratis</groupId>
         <version>${project.version}</version>
       </dependency>
@@ -309,6 +313,12 @@
         <version>${project.version}</version>
       </dependency>
 
+      <dependency>
+        <groupId>org.apache.ratis</groupId>
+        <artifactId>ratis-thirdparty</artifactId>
+        <version>${ratis.thirdparty.version}</version>
+      </dependency>
+
       <!-- External dependencies -->
       <dependency>
         <groupId>org.slf4j</groupId>
@@ -804,17 +814,5 @@
         </plugins>
       </build>
     </profile>
-    <profile>
-      <id>skipShade</id>
-      <activation>
-        <property>
-          <name>!skipShade</name>
-        </property>
-      </activation>
-      <modules>
-        <module>ratis-proto-shaded</module>
-        <module>ratis-hadoop-shaded</module>
-      </modules>
-    </profile>
   </profiles>
 </project>

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-assembly/pom.xml
----------------------------------------------------------------------
diff --git a/ratis-assembly/pom.xml b/ratis-assembly/pom.xml
index 126f1ab..c773793 100644
--- a/ratis-assembly/pom.xml
+++ b/ratis-assembly/pom.xml
@@ -135,7 +135,11 @@
   <dependencies>
     <!-- Intra-project dependencies -->
     <dependency>
-      <artifactId>ratis-proto-shaded</artifactId>
+      <groupId>org.apache.ratis</groupId>
+      <artifactId>ratis-thirdparty</artifactId>
+    </dependency>
+    <dependency>
+      <artifactId>ratis-proto</artifactId>
       <groupId>org.apache.ratis</groupId>
     </dependency>
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-client/pom.xml
----------------------------------------------------------------------
diff --git a/ratis-client/pom.xml b/ratis-client/pom.xml
index b12cb10..3e988be 100644
--- a/ratis-client/pom.xml
+++ b/ratis-client/pom.xml
@@ -25,9 +25,12 @@
 
   <dependencies>
     <dependency>
-      <artifactId>ratis-proto-shaded</artifactId>
       <groupId>org.apache.ratis</groupId>
-      <scope>provided</scope>
+      <artifactId>ratis-thirdparty</artifactId>
+    </dependency>
+    <dependency>
+      <artifactId>ratis-proto</artifactId>
+      <groupId>org.apache.ratis</groupId>
     </dependency>
 
     <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-client/src/main/java/org/apache/ratis/client/RaftClient.java
----------------------------------------------------------------------
diff --git a/ratis-client/src/main/java/org/apache/ratis/client/RaftClient.java b/ratis-client/src/main/java/org/apache/ratis/client/RaftClient.java
index 725b456..5af28bb 100644
--- a/ratis-client/src/main/java/org/apache/ratis/client/RaftClient.java
+++ b/ratis-client/src/main/java/org/apache/ratis/client/RaftClient.java
@@ -25,7 +25,7 @@ import org.apache.ratis.protocol.*;
 import org.apache.ratis.retry.RetryPolicies;
 import org.apache.ratis.retry.RetryPolicy;
 import org.apache.ratis.rpc.RpcType;
-import org.apache.ratis.shaded.proto.RaftProtos.ReplicationLevel;
+import org.apache.ratis.proto.RaftProtos.ReplicationLevel;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-client/src/main/java/org/apache/ratis/client/impl/ClientProtoUtils.java
----------------------------------------------------------------------
diff --git a/ratis-client/src/main/java/org/apache/ratis/client/impl/ClientProtoUtils.java b/ratis-client/src/main/java/org/apache/ratis/client/impl/ClientProtoUtils.java
index b5a6172..f2a1e90 100644
--- a/ratis-client/src/main/java/org/apache/ratis/client/impl/ClientProtoUtils.java
+++ b/ratis-client/src/main/java/org/apache/ratis/client/impl/ClientProtoUtils.java
@@ -18,16 +18,16 @@
 package org.apache.ratis.client.impl;
 
 import org.apache.ratis.protocol.*;
-import org.apache.ratis.shaded.com.google.protobuf.ByteString;
-import org.apache.ratis.shaded.proto.RaftProtos.*;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import org.apache.ratis.proto.RaftProtos.*;
 import org.apache.ratis.util.ProtoUtils;
 import org.apache.ratis.util.ReflectionUtils;
 
 import java.util.Arrays;
 
-import static org.apache.ratis.shaded.proto.RaftProtos.RaftClientReplyProto.ExceptionDetailsCase.NOTLEADEREXCEPTION;
-import static org.apache.ratis.shaded.proto.RaftProtos.RaftClientReplyProto.ExceptionDetailsCase.NOTREPLICATEDEXCEPTION;
-import static org.apache.ratis.shaded.proto.RaftProtos.RaftClientReplyProto.ExceptionDetailsCase.STATEMACHINEEXCEPTION;
+import static org.apache.ratis.proto.RaftProtos.RaftClientReplyProto.ExceptionDetailsCase.NOTLEADEREXCEPTION;
+import static org.apache.ratis.proto.RaftProtos.RaftClientReplyProto.ExceptionDetailsCase.NOTREPLICATEDEXCEPTION;
+import static org.apache.ratis.proto.RaftProtos.RaftClientReplyProto.ExceptionDetailsCase.STATEMACHINEEXCEPTION;
 
 public interface ClientProtoUtils {
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-client/src/main/java/org/apache/ratis/client/impl/RaftClientImpl.java
----------------------------------------------------------------------
diff --git a/ratis-client/src/main/java/org/apache/ratis/client/impl/RaftClientImpl.java b/ratis-client/src/main/java/org/apache/ratis/client/impl/RaftClientImpl.java
index a07e229..aa4e9c8 100644
--- a/ratis-client/src/main/java/org/apache/ratis/client/impl/RaftClientImpl.java
+++ b/ratis-client/src/main/java/org/apache/ratis/client/impl/RaftClientImpl.java
@@ -24,7 +24,7 @@ import org.apache.ratis.retry.RetryPolicies;
 import org.apache.ratis.retry.RetryPolicy;
 import org.apache.ratis.conf.RaftProperties;
 import org.apache.ratis.protocol.*;
-import org.apache.ratis.shaded.proto.RaftProtos.ReplicationLevel;
+import org.apache.ratis.proto.RaftProtos.ReplicationLevel;
 import org.apache.ratis.util.*;
 
 import java.io.IOException;
@@ -39,7 +39,7 @@ import java.util.function.LongFunction;
 import java.util.function.Supplier;
 import java.util.stream.Stream;
 
-import static org.apache.ratis.shaded.proto.RaftProtos.RaftClientRequestProto.TypeCase.STALEREAD;
+import static org.apache.ratis.proto.RaftProtos.RaftClientRequestProto.TypeCase.STALEREAD;
 
 /** A client who sends requests to a raft service. */
 final class RaftClientImpl implements RaftClient {

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-common/pom.xml
----------------------------------------------------------------------
diff --git a/ratis-common/pom.xml b/ratis-common/pom.xml
index 3810074..2419ee8 100644
--- a/ratis-common/pom.xml
+++ b/ratis-common/pom.xml
@@ -26,8 +26,11 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.ratis</groupId>
-      <artifactId>ratis-proto-shaded</artifactId>
-      <scope>provided</scope>
+      <artifactId>ratis-thirdparty</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.ratis</groupId>
+      <artifactId>ratis-proto</artifactId>
     </dependency>
 
     <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-common/src/main/java/org/apache/ratis/conf/ConfUtils.java
----------------------------------------------------------------------
diff --git a/ratis-common/src/main/java/org/apache/ratis/conf/ConfUtils.java b/ratis-common/src/main/java/org/apache/ratis/conf/ConfUtils.java
index 6e7ae6d..430dbf0 100644
--- a/ratis-common/src/main/java/org/apache/ratis/conf/ConfUtils.java
+++ b/ratis-common/src/main/java/org/apache/ratis/conf/ConfUtils.java
@@ -17,7 +17,7 @@
  */
 package org.apache.ratis.conf;
 
-import org.apache.ratis.shaded.com.google.common.base.Objects;
+import org.apache.ratis.thirdparty.com.google.common.base.Objects;
 import org.apache.ratis.util.CheckedBiConsumer;
 import org.apache.ratis.util.NetUtils;
 import org.apache.ratis.util.SizeInBytes;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-common/src/main/java/org/apache/ratis/protocol/ClientId.java
----------------------------------------------------------------------
diff --git a/ratis-common/src/main/java/org/apache/ratis/protocol/ClientId.java b/ratis-common/src/main/java/org/apache/ratis/protocol/ClientId.java
index f6894df..c8a591a 100644
--- a/ratis-common/src/main/java/org/apache/ratis/protocol/ClientId.java
+++ b/ratis-common/src/main/java/org/apache/ratis/protocol/ClientId.java
@@ -17,7 +17,7 @@
  */
 package org.apache.ratis.protocol;
 
-import org.apache.ratis.shaded.com.google.protobuf.ByteString;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
 
 import java.util.UUID;
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-common/src/main/java/org/apache/ratis/protocol/Message.java
----------------------------------------------------------------------
diff --git a/ratis-common/src/main/java/org/apache/ratis/protocol/Message.java b/ratis-common/src/main/java/org/apache/ratis/protocol/Message.java
index 9e8198e..6ab04ae 100644
--- a/ratis-common/src/main/java/org/apache/ratis/protocol/Message.java
+++ b/ratis-common/src/main/java/org/apache/ratis/protocol/Message.java
@@ -17,7 +17,7 @@
  */
 package org.apache.ratis.protocol;
 
-import org.apache.ratis.shaded.com.google.protobuf.ByteString;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
 import org.apache.ratis.util.MemoizedSupplier;
 import org.apache.ratis.util.StringUtils;
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-common/src/main/java/org/apache/ratis/protocol/NotReplicatedException.java
----------------------------------------------------------------------
diff --git a/ratis-common/src/main/java/org/apache/ratis/protocol/NotReplicatedException.java b/ratis-common/src/main/java/org/apache/ratis/protocol/NotReplicatedException.java
index 67bda34..0a85b8e 100644
--- a/ratis-common/src/main/java/org/apache/ratis/protocol/NotReplicatedException.java
+++ b/ratis-common/src/main/java/org/apache/ratis/protocol/NotReplicatedException.java
@@ -17,7 +17,7 @@
  */
 package org.apache.ratis.protocol;
 
-import org.apache.ratis.shaded.proto.RaftProtos.ReplicationLevel;
+import org.apache.ratis.proto.RaftProtos.ReplicationLevel;
 
 public class NotReplicatedException extends RaftException {
   private final long callId;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-common/src/main/java/org/apache/ratis/protocol/RaftClientReply.java
----------------------------------------------------------------------
diff --git a/ratis-common/src/main/java/org/apache/ratis/protocol/RaftClientReply.java b/ratis-common/src/main/java/org/apache/ratis/protocol/RaftClientReply.java
index ba3cdc7..5175482 100644
--- a/ratis-common/src/main/java/org/apache/ratis/protocol/RaftClientReply.java
+++ b/ratis-common/src/main/java/org/apache/ratis/protocol/RaftClientReply.java
@@ -17,7 +17,7 @@
  */
 package org.apache.ratis.protocol;
 
-import org.apache.ratis.shaded.proto.RaftProtos.CommitInfoProto;
+import org.apache.ratis.proto.RaftProtos.CommitInfoProto;
 import org.apache.ratis.util.JavaUtils;
 import org.apache.ratis.util.Preconditions;
 import org.apache.ratis.util.ProtoUtils;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-common/src/main/java/org/apache/ratis/protocol/RaftClientRequest.java
----------------------------------------------------------------------
diff --git a/ratis-common/src/main/java/org/apache/ratis/protocol/RaftClientRequest.java b/ratis-common/src/main/java/org/apache/ratis/protocol/RaftClientRequest.java
index 34c96f3..a9fe740 100644
--- a/ratis-common/src/main/java/org/apache/ratis/protocol/RaftClientRequest.java
+++ b/ratis-common/src/main/java/org/apache/ratis/protocol/RaftClientRequest.java
@@ -17,12 +17,12 @@
  */
 package org.apache.ratis.protocol;
 
-import org.apache.ratis.shaded.proto.RaftProtos.*;
+import org.apache.ratis.proto.RaftProtos.*;
 import org.apache.ratis.util.Preconditions;
 
 import java.util.Objects;
 
-import static org.apache.ratis.shaded.proto.RaftProtos.RaftClientRequestProto.TypeCase.*;
+import static org.apache.ratis.proto.RaftProtos.RaftClientRequestProto.TypeCase.*;
 
 /**
  * Request from client to server

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-common/src/main/java/org/apache/ratis/protocol/RaftGroupId.java
----------------------------------------------------------------------
diff --git a/ratis-common/src/main/java/org/apache/ratis/protocol/RaftGroupId.java b/ratis-common/src/main/java/org/apache/ratis/protocol/RaftGroupId.java
index f850bec..17b48d9 100644
--- a/ratis-common/src/main/java/org/apache/ratis/protocol/RaftGroupId.java
+++ b/ratis-common/src/main/java/org/apache/ratis/protocol/RaftGroupId.java
@@ -17,7 +17,7 @@
  */
 package org.apache.ratis.protocol;
 
-import org.apache.ratis.shaded.com.google.protobuf.ByteString;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
 
 import java.util.UUID;
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-common/src/main/java/org/apache/ratis/protocol/RaftId.java
----------------------------------------------------------------------
diff --git a/ratis-common/src/main/java/org/apache/ratis/protocol/RaftId.java b/ratis-common/src/main/java/org/apache/ratis/protocol/RaftId.java
index 9d81b7a..0d923ec 100644
--- a/ratis-common/src/main/java/org/apache/ratis/protocol/RaftId.java
+++ b/ratis-common/src/main/java/org/apache/ratis/protocol/RaftId.java
@@ -17,7 +17,7 @@
  */
 package org.apache.ratis.protocol;
 
-import org.apache.ratis.shaded.com.google.protobuf.ByteString;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
 import org.apache.ratis.util.JavaUtils;
 import org.apache.ratis.util.Preconditions;
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-common/src/main/java/org/apache/ratis/protocol/RaftPeerId.java
----------------------------------------------------------------------
diff --git a/ratis-common/src/main/java/org/apache/ratis/protocol/RaftPeerId.java b/ratis-common/src/main/java/org/apache/ratis/protocol/RaftPeerId.java
index 06ad836..7ca4504 100644
--- a/ratis-common/src/main/java/org/apache/ratis/protocol/RaftPeerId.java
+++ b/ratis-common/src/main/java/org/apache/ratis/protocol/RaftPeerId.java
@@ -17,7 +17,7 @@
  */
 package org.apache.ratis.protocol;
 
-import org.apache.ratis.shaded.com.google.protobuf.ByteString;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
 import org.apache.ratis.util.Preconditions;
 
 import java.nio.charset.StandardCharsets;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-common/src/main/java/org/apache/ratis/protocol/ServerInformationReply.java
----------------------------------------------------------------------
diff --git a/ratis-common/src/main/java/org/apache/ratis/protocol/ServerInformationReply.java b/ratis-common/src/main/java/org/apache/ratis/protocol/ServerInformationReply.java
index feb326e..18bf1c0 100644
--- a/ratis-common/src/main/java/org/apache/ratis/protocol/ServerInformationReply.java
+++ b/ratis-common/src/main/java/org/apache/ratis/protocol/ServerInformationReply.java
@@ -17,8 +17,8 @@
  */
 package org.apache.ratis.protocol;
 
-import org.apache.ratis.shaded.proto.RaftProtos.RoleInfoProto;
-import org.apache.ratis.shaded.proto.RaftProtos.CommitInfoProto;
+import org.apache.ratis.proto.RaftProtos.RoleInfoProto;
+import org.apache.ratis.proto.RaftProtos.CommitInfoProto;
 
 import java.util.Collection;
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-common/src/main/java/org/apache/ratis/util/JmxRegister.java
----------------------------------------------------------------------
diff --git a/ratis-common/src/main/java/org/apache/ratis/util/JmxRegister.java b/ratis-common/src/main/java/org/apache/ratis/util/JmxRegister.java
index ba4551a..8fc3581 100644
--- a/ratis-common/src/main/java/org/apache/ratis/util/JmxRegister.java
+++ b/ratis-common/src/main/java/org/apache/ratis/util/JmxRegister.java
@@ -17,7 +17,7 @@
  */
 package org.apache.ratis.util;
 
-import org.apache.ratis.shaded.com.google.common.base.Supplier;
+import org.apache.ratis.thirdparty.com.google.common.base.Supplier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-common/src/main/java/org/apache/ratis/util/ProtoUtils.java
----------------------------------------------------------------------
diff --git a/ratis-common/src/main/java/org/apache/ratis/util/ProtoUtils.java b/ratis-common/src/main/java/org/apache/ratis/util/ProtoUtils.java
index df0fab7..d1ef2e0 100644
--- a/ratis-common/src/main/java/org/apache/ratis/util/ProtoUtils.java
+++ b/ratis-common/src/main/java/org/apache/ratis/util/ProtoUtils.java
@@ -18,10 +18,10 @@
 package org.apache.ratis.util;
 
 import org.apache.ratis.protocol.*;
-import org.apache.ratis.shaded.com.google.protobuf.ByteString;
-import org.apache.ratis.shaded.com.google.protobuf.ServiceException;
-import org.apache.ratis.shaded.proto.RaftProtos.*;
-import org.apache.ratis.shaded.proto.RaftProtos.LogEntryProto.LogEntryBodyCase;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import org.apache.ratis.thirdparty.com.google.protobuf.ServiceException;
+import org.apache.ratis.proto.RaftProtos.*;
+import org.apache.ratis.proto.RaftProtos.LogEntryProto.LogEntryBodyCase;
 
 import java.io.IOException;
 import java.io.ObjectInputStream;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-common/src/main/java/org/apache/ratis/util/StringUtils.java
----------------------------------------------------------------------
diff --git a/ratis-common/src/main/java/org/apache/ratis/util/StringUtils.java b/ratis-common/src/main/java/org/apache/ratis/util/StringUtils.java
index 70039b2..6a9442e 100644
--- a/ratis-common/src/main/java/org/apache/ratis/util/StringUtils.java
+++ b/ratis-common/src/main/java/org/apache/ratis/util/StringUtils.java
@@ -17,9 +17,9 @@
  */
 package org.apache.ratis.util;
 
-import org.apache.ratis.shaded.com.google.common.collect.Interner;
-import org.apache.ratis.shaded.com.google.common.collect.Interners;
-import org.apache.ratis.shaded.com.google.protobuf.ByteString;
+import org.apache.ratis.thirdparty.com.google.common.collect.Interner;
+import org.apache.ratis.thirdparty.com.google.common.collect.Interners;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
 
 import java.io.PrintWriter;
 import java.io.StringWriter;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-examples/pom.xml
----------------------------------------------------------------------
diff --git a/ratis-examples/pom.xml b/ratis-examples/pom.xml
index 9a7183f..16cb5b7 100644
--- a/ratis-examples/pom.xml
+++ b/ratis-examples/pom.xml
@@ -25,7 +25,11 @@
 
   <dependencies>
     <dependency>
-      <artifactId>ratis-proto-shaded</artifactId>
+      <groupId>org.apache.ratis</groupId>
+      <artifactId>ratis-thirdparty</artifactId>
+    </dependency>
+    <dependency>
+      <artifactId>ratis-proto</artifactId>
       <groupId>org.apache.ratis</groupId>
     </dependency>
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/ArithmeticStateMachine.java
----------------------------------------------------------------------
diff --git a/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/ArithmeticStateMachine.java b/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/ArithmeticStateMachine.java
index 9b5c518..f0cb359 100644
--- a/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/ArithmeticStateMachine.java
+++ b/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/ArithmeticStateMachine.java
@@ -24,8 +24,8 @@ import org.apache.ratis.server.RaftServer;
 import org.apache.ratis.server.impl.RaftServerConstants;
 import org.apache.ratis.server.protocol.TermIndex;
 import org.apache.ratis.server.storage.RaftStorage;
-import org.apache.ratis.shaded.proto.RaftProtos;
-import org.apache.ratis.shaded.proto.RaftProtos.LogEntryProto;
+import org.apache.ratis.proto.RaftProtos;
+import org.apache.ratis.proto.RaftProtos.LogEntryProto;
 import org.apache.ratis.statemachine.StateMachineStorage;
 import org.apache.ratis.statemachine.TransactionContext;
 import org.apache.ratis.statemachine.impl.BaseStateMachine;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/AssignmentMessage.java
----------------------------------------------------------------------
diff --git a/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/AssignmentMessage.java b/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/AssignmentMessage.java
index 097e792..f8ea663 100644
--- a/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/AssignmentMessage.java
+++ b/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/AssignmentMessage.java
@@ -25,7 +25,7 @@ import java.util.Map;
 import org.apache.ratis.examples.arithmetic.expression.Expression;
 import org.apache.ratis.examples.arithmetic.expression.Variable;
 import org.apache.ratis.protocol.Message;
-import org.apache.ratis.shaded.com.google.protobuf.ByteString;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
 
 public class AssignmentMessage implements Message, Evaluable {
   public static final Charset UTF8 = Charset.forName("UTF-8");

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/cli/Assign.java
----------------------------------------------------------------------
diff --git a/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/cli/Assign.java b/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/cli/Assign.java
index a874b7a..be45c03 100644
--- a/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/cli/Assign.java
+++ b/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/cli/Assign.java
@@ -23,7 +23,7 @@ import org.apache.ratis.client.RaftClient;
 import org.apache.ratis.examples.arithmetic.AssignmentMessage;
 import org.apache.ratis.examples.arithmetic.expression.*;
 import org.apache.ratis.protocol.RaftClientReply;
-import org.apache.ratis.shaded.com.google.common.annotations.VisibleForTesting;
+import org.apache.ratis.thirdparty.com.google.common.annotations.VisibleForTesting;
 
 import java.io.IOException;
 import java.util.Arrays;
@@ -101,4 +101,4 @@ public class Assign extends Client {
     }
   }
 
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/cli/Client.java
----------------------------------------------------------------------
diff --git a/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/cli/Client.java b/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/cli/Client.java
index b83b385..f7647bd 100644
--- a/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/cli/Client.java
+++ b/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/cli/Client.java
@@ -24,7 +24,7 @@ import org.apache.ratis.grpc.GrpcFactory;
 import org.apache.ratis.protocol.ClientId;
 import org.apache.ratis.protocol.RaftGroup;
 import org.apache.ratis.protocol.RaftGroupId;
-import org.apache.ratis.shaded.com.google.protobuf.ByteString;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
 
 import java.io.IOException;
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/cli/Server.java
----------------------------------------------------------------------
diff --git a/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/cli/Server.java b/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/cli/Server.java
index 547fc0a..564dfcf 100644
--- a/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/cli/Server.java
+++ b/ratis-examples/src/main/java/org/apache/ratis/examples/arithmetic/cli/Server.java
@@ -28,7 +28,7 @@ import org.apache.ratis.protocol.RaftPeer;
 import org.apache.ratis.protocol.RaftPeerId;
 import org.apache.ratis.server.RaftServer;
 import org.apache.ratis.server.RaftServerConfigKeys;
-import org.apache.ratis.shaded.com.google.protobuf.ByteString;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
 import org.apache.ratis.statemachine.StateMachine;
 import org.apache.ratis.util.NetUtils;
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileInfo.java
----------------------------------------------------------------------
diff --git a/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileInfo.java b/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileInfo.java
index 636234f..cdbd361 100644
--- a/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileInfo.java
+++ b/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileInfo.java
@@ -18,7 +18,7 @@
 package org.apache.ratis.examples.filestore;
 
 import org.apache.ratis.protocol.RaftPeerId;
-import org.apache.ratis.shaded.com.google.protobuf.ByteString;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
 import org.apache.ratis.util.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileStore.java
----------------------------------------------------------------------
diff --git a/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileStore.java b/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileStore.java
index aba2a19..8dda656 100644
--- a/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileStore.java
+++ b/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileStore.java
@@ -20,8 +20,8 @@ package org.apache.ratis.examples.filestore;
 import org.apache.ratis.examples.filestore.FileInfo.ReadOnly;
 import org.apache.ratis.examples.filestore.FileInfo.UnderConstruction;
 import org.apache.ratis.protocol.RaftPeerId;
-import org.apache.ratis.shaded.com.google.protobuf.ByteString;
-import org.apache.ratis.shaded.proto.ExamplesProtos.*;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import org.apache.ratis.proto.ExamplesProtos.*;
 import org.apache.ratis.util.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileStoreClient.java
----------------------------------------------------------------------
diff --git a/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileStoreClient.java b/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileStoreClient.java
index a8f141c..439dd6a 100644
--- a/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileStoreClient.java
+++ b/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileStoreClient.java
@@ -23,8 +23,8 @@ import org.apache.ratis.protocol.Message;
 import org.apache.ratis.protocol.RaftClientReply;
 import org.apache.ratis.protocol.RaftGroup;
 import org.apache.ratis.protocol.StateMachineException;
-import org.apache.ratis.shaded.com.google.protobuf.ByteString;
-import org.apache.ratis.shaded.proto.ExamplesProtos.*;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import org.apache.ratis.proto.ExamplesProtos.*;
 import org.apache.ratis.util.CheckedFunction;
 import org.apache.ratis.util.JavaUtils;
 import org.apache.ratis.util.Preconditions;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileStoreCommon.java
----------------------------------------------------------------------
diff --git a/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileStoreCommon.java b/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileStoreCommon.java
index 8a92adf..8e223d2 100644
--- a/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileStoreCommon.java
+++ b/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileStoreCommon.java
@@ -17,7 +17,7 @@
  */
 package org.apache.ratis.examples.filestore;
 
-import org.apache.ratis.shaded.com.google.protobuf.ByteString;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
 import org.apache.ratis.util.*;
 
 import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileStoreStateMachine.java
----------------------------------------------------------------------
diff --git a/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileStoreStateMachine.java b/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileStoreStateMachine.java
index e6f56f9..bf58c6e 100644
--- a/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileStoreStateMachine.java
+++ b/ratis-examples/src/main/java/org/apache/ratis/examples/filestore/FileStoreStateMachine.java
@@ -24,11 +24,11 @@ import org.apache.ratis.protocol.RaftClientRequest;
 import org.apache.ratis.protocol.RaftGroupId;
 import org.apache.ratis.server.RaftServer;
 import org.apache.ratis.server.storage.RaftStorage;
-import org.apache.ratis.shaded.com.google.protobuf.ByteString;
-import org.apache.ratis.shaded.com.google.protobuf.InvalidProtocolBufferException;
-import org.apache.ratis.shaded.proto.ExamplesProtos.*;
-import org.apache.ratis.shaded.proto.RaftProtos.LogEntryProto;
-import org.apache.ratis.shaded.proto.RaftProtos.SMLogEntryProto;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import org.apache.ratis.thirdparty.com.google.protobuf.InvalidProtocolBufferException;
+import org.apache.ratis.proto.ExamplesProtos.*;
+import org.apache.ratis.proto.RaftProtos.LogEntryProto;
+import org.apache.ratis.proto.RaftProtos.SMLogEntryProto;
 import org.apache.ratis.statemachine.StateMachineStorage;
 import org.apache.ratis.statemachine.TransactionContext;
 import org.apache.ratis.statemachine.impl.BaseStateMachine;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-examples/src/test/java/org/apache/ratis/examples/filestore/FileStoreBaseTest.java
----------------------------------------------------------------------
diff --git a/ratis-examples/src/test/java/org/apache/ratis/examples/filestore/FileStoreBaseTest.java b/ratis-examples/src/test/java/org/apache/ratis/examples/filestore/FileStoreBaseTest.java
index 7e9c57e..f746da2 100644
--- a/ratis-examples/src/test/java/org/apache/ratis/examples/filestore/FileStoreBaseTest.java
+++ b/ratis-examples/src/test/java/org/apache/ratis/examples/filestore/FileStoreBaseTest.java
@@ -22,8 +22,8 @@ import org.apache.ratis.MiniRaftCluster;
 import org.apache.ratis.RaftTestUtil;
 import org.apache.ratis.conf.ConfUtils;
 import org.apache.ratis.conf.RaftProperties;
-import org.apache.ratis.shaded.com.google.protobuf.ByteString;
-import org.apache.ratis.shaded.io.netty.util.internal.ThreadLocalRandom;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import org.apache.ratis.thirdparty.io.netty.util.internal.ThreadLocalRandom;
 import org.apache.ratis.statemachine.StateMachine;
 import org.apache.ratis.util.*;
 import org.junit.Assert;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-grpc/pom.xml
----------------------------------------------------------------------
diff --git a/ratis-grpc/pom.xml b/ratis-grpc/pom.xml
index 820302f..4a3ab81 100644
--- a/ratis-grpc/pom.xml
+++ b/ratis-grpc/pom.xml
@@ -25,9 +25,12 @@
 
   <dependencies>
     <dependency>
-      <artifactId>ratis-proto-shaded</artifactId>
       <groupId>org.apache.ratis</groupId>
-      <scope>provided</scope>
+      <artifactId>ratis-thirdparty</artifactId>
+    </dependency>
+    <dependency>
+      <artifactId>ratis-proto</artifactId>
+      <groupId>org.apache.ratis</groupId>
     </dependency>
 
     <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-grpc/src/main/java/org/apache/ratis/grpc/GrpcUtil.java
----------------------------------------------------------------------
diff --git a/ratis-grpc/src/main/java/org/apache/ratis/grpc/GrpcUtil.java b/ratis-grpc/src/main/java/org/apache/ratis/grpc/GrpcUtil.java
index 84f01c8..e8ca1ef 100644
--- a/ratis-grpc/src/main/java/org/apache/ratis/grpc/GrpcUtil.java
+++ b/ratis-grpc/src/main/java/org/apache/ratis/grpc/GrpcUtil.java
@@ -19,10 +19,10 @@ package org.apache.ratis.grpc;
 
 import org.apache.ratis.protocol.RaftClientReply;
 import org.apache.ratis.protocol.ServerNotReadyException;
-import org.apache.ratis.shaded.io.grpc.Metadata;
-import org.apache.ratis.shaded.io.grpc.Status;
-import org.apache.ratis.shaded.io.grpc.StatusRuntimeException;
-import org.apache.ratis.shaded.io.grpc.stub.StreamObserver;
+import org.apache.ratis.thirdparty.io.grpc.Metadata;
+import org.apache.ratis.thirdparty.io.grpc.Status;
+import org.apache.ratis.thirdparty.io.grpc.StatusRuntimeException;
+import org.apache.ratis.thirdparty.io.grpc.stub.StreamObserver;
 import org.apache.ratis.util.*;
 import org.slf4j.Logger;
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientProtocolClient.java
----------------------------------------------------------------------
diff --git a/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientProtocolClient.java b/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientProtocolClient.java
index a2e53bf..936ea5f 100644
--- a/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientProtocolClient.java
+++ b/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientProtocolClient.java
@@ -24,17 +24,17 @@ import org.apache.ratis.grpc.GrpcConfigKeys;
 import org.apache.ratis.grpc.GrpcUtil;
 import org.apache.ratis.protocol.*;
 import org.apache.ratis.util.TimeoutScheduler;
-import org.apache.ratis.shaded.io.grpc.ManagedChannel;
-import org.apache.ratis.shaded.io.grpc.StatusRuntimeException;
-import org.apache.ratis.shaded.io.grpc.netty.NegotiationType;
-import org.apache.ratis.shaded.io.grpc.netty.NettyChannelBuilder;
-import org.apache.ratis.shaded.io.grpc.stub.StreamObserver;
-import org.apache.ratis.shaded.proto.RaftProtos.*;
-import org.apache.ratis.shaded.proto.grpc.AdminProtocolServiceGrpc;
-import org.apache.ratis.shaded.proto.grpc.AdminProtocolServiceGrpc.AdminProtocolServiceBlockingStub;
-import org.apache.ratis.shaded.proto.grpc.RaftClientProtocolServiceGrpc;
-import org.apache.ratis.shaded.proto.grpc.RaftClientProtocolServiceGrpc.RaftClientProtocolServiceBlockingStub;
-import org.apache.ratis.shaded.proto.grpc.RaftClientProtocolServiceGrpc.RaftClientProtocolServiceStub;
+import org.apache.ratis.thirdparty.io.grpc.ManagedChannel;
+import org.apache.ratis.thirdparty.io.grpc.StatusRuntimeException;
+import org.apache.ratis.thirdparty.io.grpc.netty.NegotiationType;
+import org.apache.ratis.thirdparty.io.grpc.netty.NettyChannelBuilder;
+import org.apache.ratis.thirdparty.io.grpc.stub.StreamObserver;
+import org.apache.ratis.proto.RaftProtos.*;
+import org.apache.ratis.proto.grpc.AdminProtocolServiceGrpc;
+import org.apache.ratis.proto.grpc.AdminProtocolServiceGrpc.AdminProtocolServiceBlockingStub;
+import org.apache.ratis.proto.grpc.RaftClientProtocolServiceGrpc;
+import org.apache.ratis.proto.grpc.RaftClientProtocolServiceGrpc.RaftClientProtocolServiceBlockingStub;
+import org.apache.ratis.proto.grpc.RaftClientProtocolServiceGrpc.RaftClientProtocolServiceStub;
 import org.apache.ratis.util.CheckedSupplier;
 import org.apache.ratis.util.CollectionUtils;
 import org.apache.ratis.util.JavaUtils;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientProtocolProxy.java
----------------------------------------------------------------------
diff --git a/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientProtocolProxy.java b/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientProtocolProxy.java
index 156e6c3..efe19f4 100644
--- a/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientProtocolProxy.java
+++ b/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientProtocolProxy.java
@@ -19,9 +19,9 @@ package org.apache.ratis.grpc.client;
 
 import org.apache.ratis.conf.RaftProperties;
 import org.apache.ratis.protocol.ClientId;
-import org.apache.ratis.shaded.io.grpc.stub.StreamObserver;
-import org.apache.ratis.shaded.proto.RaftProtos.RaftClientReplyProto;
-import org.apache.ratis.shaded.proto.RaftProtos.RaftClientRequestProto;
+import org.apache.ratis.thirdparty.io.grpc.stub.StreamObserver;
+import org.apache.ratis.proto.RaftProtos.RaftClientReplyProto;
+import org.apache.ratis.proto.RaftProtos.RaftClientRequestProto;
 import org.apache.ratis.protocol.RaftPeer;
 
 import java.io.Closeable;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientProtocolService.java
----------------------------------------------------------------------
diff --git a/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientProtocolService.java b/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientProtocolService.java
index 22f7f56..a099a0a 100644
--- a/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientProtocolService.java
+++ b/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientProtocolService.java
@@ -20,11 +20,11 @@ package org.apache.ratis.grpc.client;
 import org.apache.ratis.client.impl.ClientProtoUtils;
 import org.apache.ratis.grpc.GrpcUtil;
 import org.apache.ratis.protocol.*;
-import org.apache.ratis.shaded.io.grpc.stub.StreamObserver;
-import org.apache.ratis.shaded.proto.RaftProtos.RaftClientReplyProto;
-import org.apache.ratis.shaded.proto.RaftProtos.RaftClientRequestProto;
-import org.apache.ratis.shaded.proto.RaftProtos.SetConfigurationRequestProto;
-import org.apache.ratis.shaded.proto.grpc.RaftClientProtocolServiceGrpc.RaftClientProtocolServiceImplBase;
+import org.apache.ratis.thirdparty.io.grpc.stub.StreamObserver;
+import org.apache.ratis.proto.RaftProtos.RaftClientReplyProto;
+import org.apache.ratis.proto.RaftProtos.RaftClientRequestProto;
+import org.apache.ratis.proto.RaftProtos.SetConfigurationRequestProto;
+import org.apache.ratis.proto.grpc.RaftClientProtocolServiceGrpc.RaftClientProtocolServiceImplBase;
 import org.apache.ratis.util.JavaUtils;
 import org.apache.ratis.util.Preconditions;
 import org.apache.ratis.util.SlidingWindow;
@@ -192,4 +192,4 @@ public class GrpcClientProtocolService extends RaftClientProtocolServiceImplBase
       }
     }
   }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientRpc.java
----------------------------------------------------------------------
diff --git a/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientRpc.java b/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientRpc.java
index 47264e7..c1f3075 100644
--- a/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientRpc.java
+++ b/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientRpc.java
@@ -29,12 +29,12 @@ import org.apache.ratis.protocol.RaftClientRequest;
 import org.apache.ratis.protocol.RaftPeerId;
 import org.apache.ratis.protocol.ServerInformationRequest;
 import org.apache.ratis.protocol.SetConfigurationRequest;
-import org.apache.ratis.shaded.io.grpc.stub.StreamObserver;
-import org.apache.ratis.shaded.proto.RaftProtos.GroupManagementRequestProto;
-import org.apache.ratis.shaded.proto.RaftProtos.RaftClientReplyProto;
-import org.apache.ratis.shaded.proto.RaftProtos.RaftClientRequestProto;
-import org.apache.ratis.shaded.proto.RaftProtos.ServerInformationRequestProto;
-import org.apache.ratis.shaded.proto.RaftProtos.SetConfigurationRequestProto;
+import org.apache.ratis.thirdparty.io.grpc.stub.StreamObserver;
+import org.apache.ratis.proto.RaftProtos.GroupManagementRequestProto;
+import org.apache.ratis.proto.RaftProtos.RaftClientReplyProto;
+import org.apache.ratis.proto.RaftProtos.RaftClientRequestProto;
+import org.apache.ratis.proto.RaftProtos.ServerInformationRequestProto;
+import org.apache.ratis.proto.RaftProtos.SetConfigurationRequestProto;
 import org.apache.ratis.util.IOUtils;
 import org.apache.ratis.util.JavaUtils;
 import org.apache.ratis.util.PeerProxyMap;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientStreamer.java
----------------------------------------------------------------------
diff --git a/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientStreamer.java b/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientStreamer.java
index 5e5b941..71e39b1 100644
--- a/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientStreamer.java
+++ b/ratis-grpc/src/main/java/org/apache/ratis/grpc/client/GrpcClientStreamer.java
@@ -22,10 +22,10 @@ import org.apache.ratis.conf.RaftProperties;
 import org.apache.ratis.grpc.GrpcConfigKeys;
 import org.apache.ratis.grpc.GrpcUtil;
 import org.apache.ratis.protocol.*;
-import org.apache.ratis.shaded.com.google.protobuf.ByteString;
-import org.apache.ratis.shaded.proto.RaftProtos.RaftClientReplyProto;
-import org.apache.ratis.shaded.proto.RaftProtos.RaftClientRequestProto;
-import org.apache.ratis.shaded.proto.RaftProtos.RaftRpcRequestProto;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import org.apache.ratis.proto.RaftProtos.RaftClientReplyProto;
+import org.apache.ratis.proto.RaftProtos.RaftClientRequestProto;
+import org.apache.ratis.proto.RaftProtos.RaftRpcRequestProto;
 import org.apache.ratis.util.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcAdminProtocolService.java
----------------------------------------------------------------------
diff --git a/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcAdminProtocolService.java b/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcAdminProtocolService.java
index 1201bf2..4fe4c1a 100644
--- a/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcAdminProtocolService.java
+++ b/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcAdminProtocolService.java
@@ -22,12 +22,12 @@ import org.apache.ratis.grpc.GrpcUtil;
 import org.apache.ratis.protocol.AdminAsynchronousProtocol;
 import org.apache.ratis.protocol.GroupManagementRequest;
 import org.apache.ratis.protocol.ServerInformationRequest;
-import org.apache.ratis.shaded.io.grpc.stub.StreamObserver;
-import org.apache.ratis.shaded.proto.RaftProtos.RaftClientReplyProto;
-import org.apache.ratis.shaded.proto.RaftProtos.GroupManagementRequestProto;
-import org.apache.ratis.shaded.proto.RaftProtos.ServerInformationReplyProto;
-import org.apache.ratis.shaded.proto.RaftProtos.ServerInformationRequestProto;
-import org.apache.ratis.shaded.proto.grpc.AdminProtocolServiceGrpc.AdminProtocolServiceImplBase;
+import org.apache.ratis.thirdparty.io.grpc.stub.StreamObserver;
+import org.apache.ratis.proto.RaftProtos.RaftClientReplyProto;
+import org.apache.ratis.proto.RaftProtos.GroupManagementRequestProto;
+import org.apache.ratis.proto.RaftProtos.ServerInformationReplyProto;
+import org.apache.ratis.proto.RaftProtos.ServerInformationRequestProto;
+import org.apache.ratis.proto.grpc.AdminProtocolServiceGrpc.AdminProtocolServiceImplBase;
 
 public class GrpcAdminProtocolService extends AdminProtocolServiceImplBase {
   private final AdminAsynchronousProtocol protocol;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcLogAppender.java
----------------------------------------------------------------------
diff --git a/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcLogAppender.java b/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcLogAppender.java
index 3da58bf..66c9948 100644
--- a/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcLogAppender.java
+++ b/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcLogAppender.java
@@ -25,11 +25,11 @@ import org.apache.ratis.server.impl.LeaderState;
 import org.apache.ratis.server.impl.LogAppender;
 import org.apache.ratis.server.impl.RaftServerImpl;
 import org.apache.ratis.server.impl.ServerProtoUtils;
-import org.apache.ratis.shaded.io.grpc.stub.StreamObserver;
-import org.apache.ratis.shaded.proto.RaftProtos.AppendEntriesReplyProto;
-import org.apache.ratis.shaded.proto.RaftProtos.AppendEntriesRequestProto;
-import org.apache.ratis.shaded.proto.RaftProtos.InstallSnapshotReplyProto;
-import org.apache.ratis.shaded.proto.RaftProtos.InstallSnapshotRequestProto;
+import org.apache.ratis.thirdparty.io.grpc.stub.StreamObserver;
+import org.apache.ratis.proto.RaftProtos.AppendEntriesReplyProto;
+import org.apache.ratis.proto.RaftProtos.AppendEntriesRequestProto;
+import org.apache.ratis.proto.RaftProtos.InstallSnapshotReplyProto;
+import org.apache.ratis.proto.RaftProtos.InstallSnapshotRequestProto;
 import org.apache.ratis.statemachine.SnapshotInfo;
 import org.apache.ratis.util.*;
 import org.slf4j.Logger;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcServerProtocolClient.java
----------------------------------------------------------------------
diff --git a/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcServerProtocolClient.java b/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcServerProtocolClient.java
index 3b2f8ba..0848e65 100644
--- a/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcServerProtocolClient.java
+++ b/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcServerProtocolClient.java
@@ -17,13 +17,13 @@
  */
 package org.apache.ratis.grpc.server;
 
-import org.apache.ratis.shaded.io.grpc.ManagedChannel;
-import org.apache.ratis.shaded.io.grpc.netty.NettyChannelBuilder;
-import org.apache.ratis.shaded.io.grpc.stub.StreamObserver;
-import org.apache.ratis.shaded.proto.RaftProtos.*;
-import org.apache.ratis.shaded.proto.grpc.RaftServerProtocolServiceGrpc;
-import org.apache.ratis.shaded.proto.grpc.RaftServerProtocolServiceGrpc.RaftServerProtocolServiceBlockingStub;
-import org.apache.ratis.shaded.proto.grpc.RaftServerProtocolServiceGrpc.RaftServerProtocolServiceStub;
+import org.apache.ratis.thirdparty.io.grpc.ManagedChannel;
+import org.apache.ratis.thirdparty.io.grpc.netty.NettyChannelBuilder;
+import org.apache.ratis.thirdparty.io.grpc.stub.StreamObserver;
+import org.apache.ratis.proto.RaftProtos.*;
+import org.apache.ratis.proto.grpc.RaftServerProtocolServiceGrpc;
+import org.apache.ratis.proto.grpc.RaftServerProtocolServiceGrpc.RaftServerProtocolServiceBlockingStub;
+import org.apache.ratis.proto.grpc.RaftServerProtocolServiceGrpc.RaftServerProtocolServiceStub;
 import org.apache.ratis.protocol.RaftPeer;
 import org.apache.ratis.util.TimeDuration;
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcServerProtocolService.java
----------------------------------------------------------------------
diff --git a/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcServerProtocolService.java b/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcServerProtocolService.java
index 83335b8..12a717a 100644
--- a/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcServerProtocolService.java
+++ b/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcServerProtocolService.java
@@ -20,9 +20,9 @@ package org.apache.ratis.grpc.server;
 import org.apache.ratis.grpc.GrpcUtil;
 import org.apache.ratis.protocol.RaftPeerId;
 import org.apache.ratis.server.RaftServer;
-import org.apache.ratis.shaded.io.grpc.stub.StreamObserver;
-import org.apache.ratis.shaded.proto.RaftProtos.*;
-import org.apache.ratis.shaded.proto.grpc.RaftServerProtocolServiceGrpc.RaftServerProtocolServiceImplBase;
+import org.apache.ratis.thirdparty.io.grpc.stub.StreamObserver;
+import org.apache.ratis.proto.RaftProtos.*;
+import org.apache.ratis.proto.grpc.RaftServerProtocolServiceGrpc.RaftServerProtocolServiceImplBase;
 import org.apache.ratis.util.ProtoUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcService.java
----------------------------------------------------------------------
diff --git a/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcService.java b/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcService.java
index eb8310c..9c94cca 100644
--- a/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcService.java
+++ b/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcService.java
@@ -25,9 +25,9 @@ import org.apache.ratis.server.RaftServer;
 import org.apache.ratis.server.RaftServerConfigKeys;
 import org.apache.ratis.server.RaftServerRpc;
 import org.apache.ratis.server.impl.RaftServerRpcWithProxy;
-import org.apache.ratis.shaded.io.grpc.Server;
-import org.apache.ratis.shaded.io.grpc.netty.NettyServerBuilder;
-import org.apache.ratis.shaded.proto.RaftProtos.*;
+import org.apache.ratis.thirdparty.io.grpc.Server;
+import org.apache.ratis.thirdparty.io.grpc.netty.NettyServerBuilder;
+import org.apache.ratis.proto.RaftProtos.*;
 import org.apache.ratis.util.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-grpc/src/test/java/org/apache/ratis/grpc/TestRaftStream.java
----------------------------------------------------------------------
diff --git a/ratis-grpc/src/test/java/org/apache/ratis/grpc/TestRaftStream.java b/ratis-grpc/src/test/java/org/apache/ratis/grpc/TestRaftStream.java
index f3897ac..631bc1a 100644
--- a/ratis-grpc/src/test/java/org/apache/ratis/grpc/TestRaftStream.java
+++ b/ratis-grpc/src/test/java/org/apache/ratis/grpc/TestRaftStream.java
@@ -27,7 +27,7 @@ import org.apache.ratis.protocol.ClientId;
 import org.apache.ratis.server.impl.RaftServerImpl;
 import org.apache.ratis.server.protocol.TermIndex;
 import org.apache.ratis.server.storage.RaftLog;
-import org.apache.ratis.shaded.proto.RaftProtos;
+import org.apache.ratis.proto.RaftProtos;
 import org.apache.ratis.util.LogUtils;
 import org.apache.ratis.util.SizeInBytes;
 import org.apache.ratis.util.StringUtils;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-grpc/src/test/java/org/apache/ratis/grpc/TestRetryCacheWithGrpc.java
----------------------------------------------------------------------
diff --git a/ratis-grpc/src/test/java/org/apache/ratis/grpc/TestRetryCacheWithGrpc.java b/ratis-grpc/src/test/java/org/apache/ratis/grpc/TestRetryCacheWithGrpc.java
index 30a3f0d..cd04b43 100644
--- a/ratis-grpc/src/test/java/org/apache/ratis/grpc/TestRetryCacheWithGrpc.java
+++ b/ratis-grpc/src/test/java/org/apache/ratis/grpc/TestRetryCacheWithGrpc.java
@@ -34,7 +34,7 @@ import org.apache.ratis.protocol.ClientId;
 import org.apache.ratis.protocol.RaftClientRequest;
 import org.apache.ratis.protocol.RaftPeerId;
 import org.apache.ratis.server.impl.RaftServerImpl;
-import org.apache.ratis.shaded.proto.RaftProtos;
+import org.apache.ratis.proto.RaftProtos;
 import org.apache.ratis.util.LogUtils;
 import org.junit.Assert;
 import org.junit.Test;
@@ -112,4 +112,4 @@ public class TestRetryCacheWithGrpc extends RetryCacheTests {
     }
     return futures;
   }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-hadoop-shaded/pom.xml
----------------------------------------------------------------------
diff --git a/ratis-hadoop-shaded/pom.xml b/ratis-hadoop-shaded/pom.xml
index 57f4c6c..28fdd43 100644
--- a/ratis-hadoop-shaded/pom.xml
+++ b/ratis-hadoop-shaded/pom.xml
@@ -39,6 +39,72 @@
           <skipAssembly>true</skipAssembly>
         </configuration>
       </plugin>
+      <plugin>
+        <artifactId>maven-jar-plugin</artifactId>
+        <executions>
+          <execution>
+            <!-- Replace the "default" jar-plugin execution -->
+            <!-- This is a super-dirty hack to work around Yetus
+                 PreCommit not using the package lifecycle phase -->
+            <id>default-jar</id>
+            <phase>process-classes</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-shade-plugin</artifactId>
+        <executions>
+          <execution>
+            <phase>process-classes</phase>
+            <goals>
+              <goal>shade</goal>
+            </goals>
+            <configuration>
+              <shadeSourcesContent>true</shadeSourcesContent>
+              <createSourcesJar>true</createSourcesJar>
+              <!-- Replace the original artifact which is no good on its own -->
+              <shadedArtifactAttached>false</shadedArtifactAttached>
+              <dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml</dependencyReducedPomLocation>
+              <!-- Using shade-plugin to relocate hadoop's protobuf dependency and find it in ratis-thirdparty.
+                   So dirty. -->
+              <relocations>
+                <relocation>
+                  <pattern>com.google.protobuf</pattern>
+                  <shadedPattern>org.apache.ratis.thirdparty.com.google.protobuf</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.apache.hadoop.ipc.protobuf</pattern>
+                  <shadedPattern>org.apache.ratis.shaded.org.apache.hadoop.ipc.protobuf</shadedPattern>
+                </relocation>
+              </relocations>
+
+              <filters>
+                <filter>
+                  <artifact>org.apache.hadoop:hadoop-common</artifact>
+                  <includes>
+                    <include>org/apache/hadoop/ipc/protobuf/**</include>
+                  </includes>
+                </filter>
+              </filters>
+
+              <artifactSet>
+                <includes>
+                  <!--  Must list explicitly, otherwise we pull in all of hadoop-common's
+                        transitive dependencies. -->
+                  <include>org.apache.hadoop:hadoop-common</include>
+                  <include>com.google.j2objc:j2objc-annotations</include>
+                  <include>com.google.errorprone:error_prone_annotations</include>
+                  <include>org.codehaus.mojo:animal-sniffer-annotations</include>
+                </includes>
+              </artifactSet>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
     <pluginManagement>
       <plugins>
@@ -73,6 +139,10 @@
 
   <dependencies>
     <dependency>
+      <groupId>org.apache.ratis</groupId>
+      <artifactId>ratis-thirdparty</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.apache.hadoop</groupId>
       <artifactId>hadoop-common</artifactId>
       <version>${shaded.hadoop.version}</version>
@@ -107,74 +177,6 @@
           <name>!skipShade</name>
         </property>
       </activation>
-      <build>
-        <plugins>
-          <plugin>
-            <artifactId>maven-jar-plugin</artifactId>
-            <executions>
-              <execution>
-                <!-- Replace the "default" jar-plugin execution -->
-                <!-- This is a super-dirty hack to work around Yetus
-                     PreCommit not using the package lifecycle phase -->
-                <id>default-jar</id>
-                <phase>process-classes</phase>
-                <goals>
-                  <goal>jar</goal>
-                </goals>
-              </execution>
-            </executions>
-          </plugin>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-shade-plugin</artifactId>
-            <executions>
-              <execution>
-                <phase>process-classes</phase>
-                <goals>
-                  <goal>shade</goal>
-                </goals>
-                <configuration>
-                  <shadeSourcesContent>true</shadeSourcesContent>
-                  <createSourcesJar>true</createSourcesJar>
-                  <!-- Replace the original artifact which is no good on its own -->
-                  <shadedArtifactAttached>false</shadedArtifactAttached>
-                  <dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml</dependencyReducedPomLocation>
-                  <relocations>
-                    <relocation>
-                      <pattern>com.google.protobuf</pattern>
-                      <shadedPattern>org.apache.ratis.shaded.com.google.protobuf</shadedPattern>
-                    </relocation>
-                    <relocation>
-                      <pattern>org.apache.hadoop.ipc.protobuf</pattern>
-                      <shadedPattern>org.apache.ratis.shaded.org.apache.hadoop.ipc.protobuf</shadedPattern>
-                    </relocation>
-                  </relocations>
-
-                  <filters>
-                    <filter>
-                      <artifact>org.apache.hadoop:hadoop-common</artifact>
-                      <includes>
-                        <include>org/apache/hadoop/ipc/protobuf/**</include>
-                      </includes>
-                    </filter>
-                  </filters>
-
-                  <artifactSet>
-                    <includes>
-                      <!--  Must list explicitly, otherwise we pull in all of hadoop-common's
-                            transitive dependencies. -->
-                      <include>org.apache.hadoop:hadoop-common</include>
-                      <include>com.google.j2objc:j2objc-annotations</include>
-                      <include>com.google.errorprone:error_prone_annotations</include>
-                      <include>org.codehaus.mojo:animal-sniffer-annotations</include>
-                    </includes>
-                  </artifactSet>
-                </configuration>
-              </execution>
-            </executions>
-          </plugin>
-        </plugins>
-      </build>
     </profile>
   </profiles>
 </project>

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-hadoop/pom.xml
----------------------------------------------------------------------
diff --git a/ratis-hadoop/pom.xml b/ratis-hadoop/pom.xml
index a61e786..c98fe26 100644
--- a/ratis-hadoop/pom.xml
+++ b/ratis-hadoop/pom.xml
@@ -25,14 +25,12 @@
 
   <dependencies>
     <dependency>
-      <artifactId>ratis-proto-shaded</artifactId>
+      <artifactId>ratis-proto</artifactId>
       <groupId>org.apache.ratis</groupId>
-      <scope>provided</scope>
     </dependency>
     <dependency>
       <artifactId>ratis-hadoop-shaded</artifactId>
       <groupId>org.apache.ratis</groupId>
-      <scope>provided</scope>
     </dependency>
 
     <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-hadoop/src/main/java/org/apache/hadoop/ipc/ProtobufRpcEngineShaded.java
----------------------------------------------------------------------
diff --git a/ratis-hadoop/src/main/java/org/apache/hadoop/ipc/ProtobufRpcEngineShaded.java b/ratis-hadoop/src/main/java/org/apache/hadoop/ipc/ProtobufRpcEngineShaded.java
index cf9c917..b8fd2f0 100644
--- a/ratis-hadoop/src/main/java/org/apache/hadoop/ipc/ProtobufRpcEngineShaded.java
+++ b/ratis-hadoop/src/main/java/org/apache/hadoop/ipc/ProtobufRpcEngineShaded.java
@@ -33,8 +33,8 @@ import org.apache.hadoop.security.token.SecretManager;
 import org.apache.hadoop.security.token.TokenIdentifier;
 import org.apache.hadoop.util.ProtoUtil;
 import org.apache.hadoop.util.Time;
-import org.apache.ratis.shaded.com.google.protobuf.*;
-import org.apache.ratis.shaded.com.google.protobuf.Descriptors.MethodDescriptor;
+import org.apache.ratis.thirdparty.com.google.protobuf.*;
+import org.apache.ratis.thirdparty.com.google.protobuf.Descriptors.MethodDescriptor;
 import org.apache.ratis.shaded.org.apache.hadoop.ipc.protobuf.ProtobufRpcEngineProtos.RequestHeaderProto;
 import org.apache.ratis.shaded.org.apache.hadoop.ipc.protobuf.RpcHeaderProtos.RpcRequestHeaderProto;
 import org.apache.ratis.shaded.org.apache.hadoop.ipc.protobuf.RpcHeaderProtos.RpcResponseHeaderProto;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/CombinedClientProtocolClientSideTranslatorPB.java
----------------------------------------------------------------------
diff --git a/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/CombinedClientProtocolClientSideTranslatorPB.java b/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/CombinedClientProtocolClientSideTranslatorPB.java
index 43fcca1..053df49 100644
--- a/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/CombinedClientProtocolClientSideTranslatorPB.java
+++ b/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/CombinedClientProtocolClientSideTranslatorPB.java
@@ -27,7 +27,7 @@ import org.apache.ratis.protocol.GroupManagementRequest;
 import org.apache.ratis.protocol.ServerInformationRequest;
 import org.apache.ratis.protocol.ServerInformationReply;
 import org.apache.ratis.protocol.SetConfigurationRequest;
-import org.apache.ratis.shaded.com.google.protobuf.ServiceException;
+import org.apache.ratis.thirdparty.com.google.protobuf.ServiceException;
 import org.apache.ratis.util.CheckedFunction;
 import org.apache.ratis.util.ProtoUtils;
 import org.slf4j.Logger;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/CombinedClientProtocolPB.java
----------------------------------------------------------------------
diff --git a/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/CombinedClientProtocolPB.java b/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/CombinedClientProtocolPB.java
index e9af3b0..28e6b54 100644
--- a/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/CombinedClientProtocolPB.java
+++ b/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/CombinedClientProtocolPB.java
@@ -22,7 +22,7 @@ import org.apache.hadoop.classification.InterfaceStability;
 import org.apache.hadoop.ipc.ProtocolInfo;
 import org.apache.hadoop.security.KerberosInfo;
 import org.apache.ratis.hadooprpc.HadoopConstants;
-import org.apache.ratis.shaded.proto.hadoop.HadoopProtos.CombinedClientProtocolService;
+import org.apache.ratis.proto.hadoop.HadoopProtos.CombinedClientProtocolService;
 
 @InterfaceAudience.Private
 @InterfaceStability.Unstable

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/CombinedClientProtocolServerSideTranslatorPB.java
----------------------------------------------------------------------
diff --git a/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/CombinedClientProtocolServerSideTranslatorPB.java b/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/CombinedClientProtocolServerSideTranslatorPB.java
index c47e5b0..77fc8ef 100644
--- a/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/CombinedClientProtocolServerSideTranslatorPB.java
+++ b/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/CombinedClientProtocolServerSideTranslatorPB.java
@@ -23,14 +23,14 @@ import org.apache.hadoop.classification.InterfaceAudience;
 import org.apache.ratis.client.impl.ClientProtoUtils;
 import org.apache.ratis.protocol.*;
 import org.apache.ratis.server.RaftServer;
-import org.apache.ratis.shaded.com.google.protobuf.RpcController;
-import org.apache.ratis.shaded.com.google.protobuf.ServiceException;
-import org.apache.ratis.shaded.proto.RaftProtos.RaftClientReplyProto;
-import org.apache.ratis.shaded.proto.RaftProtos.RaftClientRequestProto;
-import org.apache.ratis.shaded.proto.RaftProtos.SetConfigurationRequestProto;
-import org.apache.ratis.shaded.proto.RaftProtos.GroupManagementRequestProto;
-import org.apache.ratis.shaded.proto.RaftProtos.ServerInformationRequestProto;
-import org.apache.ratis.shaded.proto.RaftProtos.ServerInformationReplyProto;
+import org.apache.ratis.thirdparty.com.google.protobuf.RpcController;
+import org.apache.ratis.thirdparty.com.google.protobuf.ServiceException;
+import org.apache.ratis.proto.RaftProtos.RaftClientReplyProto;
+import org.apache.ratis.proto.RaftProtos.RaftClientRequestProto;
+import org.apache.ratis.proto.RaftProtos.SetConfigurationRequestProto;
+import org.apache.ratis.proto.RaftProtos.GroupManagementRequestProto;
+import org.apache.ratis.proto.RaftProtos.ServerInformationRequestProto;
+import org.apache.ratis.proto.RaftProtos.ServerInformationReplyProto;
 
 @InterfaceAudience.Private
 public class CombinedClientProtocolServerSideTranslatorPB

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/server/HadoopRpcService.java
----------------------------------------------------------------------
diff --git a/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/server/HadoopRpcService.java b/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/server/HadoopRpcService.java
index 5d07752..891bf73 100644
--- a/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/server/HadoopRpcService.java
+++ b/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/server/HadoopRpcService.java
@@ -30,12 +30,12 @@ import org.apache.ratis.server.RaftServer;
 import org.apache.ratis.server.RaftServerRpc;
 import org.apache.ratis.server.impl.RaftServerRpcWithProxy;
 import org.apache.ratis.server.protocol.RaftServerProtocol;
-import org.apache.ratis.shaded.com.google.protobuf.BlockingService;
-import org.apache.ratis.shaded.com.google.protobuf.ByteString;
-import org.apache.ratis.shaded.com.google.protobuf.ServiceException;
-import org.apache.ratis.shaded.proto.RaftProtos.*;
-import org.apache.ratis.shaded.proto.hadoop.HadoopProtos.CombinedClientProtocolService;
-import org.apache.ratis.shaded.proto.hadoop.HadoopProtos.RaftServerProtocolService;
+import org.apache.ratis.thirdparty.com.google.protobuf.BlockingService;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import org.apache.ratis.thirdparty.com.google.protobuf.ServiceException;
+import org.apache.ratis.proto.RaftProtos.*;
+import org.apache.ratis.proto.hadoop.HadoopProtos.CombinedClientProtocolService;
+import org.apache.ratis.proto.hadoop.HadoopProtos.RaftServerProtocolService;
 import org.apache.ratis.util.CheckedFunction;
 import org.apache.ratis.util.CodeInjectionForTesting;
 import org.apache.ratis.util.PeerProxyMap;

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/server/RaftServerProtocolPB.java
----------------------------------------------------------------------
diff --git a/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/server/RaftServerProtocolPB.java b/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/server/RaftServerProtocolPB.java
index 8b92cc4..69ad219 100644
--- a/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/server/RaftServerProtocolPB.java
+++ b/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/server/RaftServerProtocolPB.java
@@ -22,7 +22,7 @@ import org.apache.hadoop.classification.InterfaceStability;
 import org.apache.hadoop.ipc.ProtocolInfo;
 import org.apache.hadoop.security.KerberosInfo;
 import org.apache.ratis.hadooprpc.HadoopConstants;
-import org.apache.ratis.shaded.proto.hadoop.HadoopProtos.RaftServerProtocolService;
+import org.apache.ratis.proto.hadoop.HadoopProtos.RaftServerProtocolService;
 
 @InterfaceAudience.Private
 @InterfaceStability.Unstable

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/server/RaftServerProtocolServerSideTranslatorPB.java
----------------------------------------------------------------------
diff --git a/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/server/RaftServerProtocolServerSideTranslatorPB.java b/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/server/RaftServerProtocolServerSideTranslatorPB.java
index a496793..85ada23 100644
--- a/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/server/RaftServerProtocolServerSideTranslatorPB.java
+++ b/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/server/RaftServerProtocolServerSideTranslatorPB.java
@@ -21,14 +21,14 @@ import java.io.IOException;
 
 import org.apache.hadoop.classification.InterfaceAudience;
 import org.apache.ratis.server.protocol.RaftServerProtocol;
-import org.apache.ratis.shaded.com.google.protobuf.RpcController;
-import org.apache.ratis.shaded.com.google.protobuf.ServiceException;
-import org.apache.ratis.shaded.proto.RaftProtos.AppendEntriesReplyProto;
-import org.apache.ratis.shaded.proto.RaftProtos.AppendEntriesRequestProto;
-import org.apache.ratis.shaded.proto.RaftProtos.InstallSnapshotReplyProto;
-import org.apache.ratis.shaded.proto.RaftProtos.InstallSnapshotRequestProto;
-import org.apache.ratis.shaded.proto.RaftProtos.RequestVoteReplyProto;
-import org.apache.ratis.shaded.proto.RaftProtos.RequestVoteRequestProto;
+import org.apache.ratis.thirdparty.com.google.protobuf.RpcController;
+import org.apache.ratis.thirdparty.com.google.protobuf.ServiceException;
+import org.apache.ratis.proto.RaftProtos.AppendEntriesReplyProto;
+import org.apache.ratis.proto.RaftProtos.AppendEntriesRequestProto;
+import org.apache.ratis.proto.RaftProtos.InstallSnapshotReplyProto;
+import org.apache.ratis.proto.RaftProtos.InstallSnapshotRequestProto;
+import org.apache.ratis.proto.RaftProtos.RequestVoteReplyProto;
+import org.apache.ratis.proto.RaftProtos.RequestVoteRequestProto;
 
 @InterfaceAudience.Private
 public class RaftServerProtocolServerSideTranslatorPB

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-logservice/pom.xml
----------------------------------------------------------------------
diff --git a/ratis-logservice/pom.xml b/ratis-logservice/pom.xml
index bfe002e..16ff962 100644
--- a/ratis-logservice/pom.xml
+++ b/ratis-logservice/pom.xml
@@ -26,7 +26,7 @@
   <dependencies>
     <!-- Ratis dependencies -->
     <dependency>
-      <artifactId>ratis-proto-shaded</artifactId>
+      <artifactId>ratis-proto</artifactId>
       <groupId>org.apache.ratis</groupId>
     </dependency>
     <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/3b9d50de/ratis-logservice/src/main/java/org/apache/ratis/logservice/api/LogMessage.java
----------------------------------------------------------------------
diff --git a/ratis-logservice/src/main/java/org/apache/ratis/logservice/api/LogMessage.java b/ratis-logservice/src/main/java/org/apache/ratis/logservice/api/LogMessage.java
index bf2024f..cfc53a5 100644
--- a/ratis-logservice/src/main/java/org/apache/ratis/logservice/api/LogMessage.java
+++ b/ratis-logservice/src/main/java/org/apache/ratis/logservice/api/LogMessage.java
@@ -20,10 +20,10 @@ package org.apache.ratis.logservice.api;
 import java.nio.charset.Charset;
 
 import org.apache.ratis.protocol.Message;
-import org.apache.ratis.shaded.proto.logservice.LogServiceProtos;
+import org.apache.ratis.proto.logservice.LogServiceProtos;
 
-import org.apache.ratis.shaded.com.google.protobuf.ByteString;
-import org.apache.ratis.shaded.com.google.protobuf.InvalidProtocolBufferException;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import org.apache.ratis.thirdparty.com.google.protobuf.InvalidProtocolBufferException;
 
 public class LogMessage implements Message {
   public static final Charset UTF8 = Charset.forName("UTF-8");