Jake Wharton outlines a versioning policy for major library updates in Java/Android ecosystems, addressing the pain of transitive dependency conflicts. The policy has three key steps: renaming the Java package to include the major version number (e.g., com.example.retrofit2), including the library name in the Maven group ID, and renaming the group ID to include the version number. This allows multiple major versions to coexist on the classpath without conflict, enables gradual migration, and prevents dependency resolvers from incorrectly upgrading incompatible versions. Retrofit 2.0 and OkHttp 3.0 are the first libraries to adopt this policy.
2 Impressions