GoogleCloudPlatform / GoogleCloudPlatform/cloud-opensource-java

How internal is internal?

未關閉
#1,203 1 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
best practices
主要語言
Java
星號
163
分支
80
PR 合併指標
30 天內沒有已合併 PR

描述

Teams often want the freedom to create purely internal but public impl classes and methods that can be changed outside the constraints of semver. E.g. make a breaking API change that does not require a major version bump because no clients depend on it. However

1. Clients do depend on these things. E.g. Cloud Tools for Eclipse depends on many internal parts of Eclipse including m2e. The linkage checker itself depends on internal parts of Maven.

2. Even when clients don't directly depend on internal classes, they can get tripped up by version mismatches in multimodule projects. We've seen this happen repeatedly as a result of internal API changes in gRPC and in OpenCensus. Breaking changes inside internal packages often cause problems when different versions of multiple internal packages are in play; e.g. grpc-foo:1.25 and grpc-bar:1.67. It's not necessarily true that someone is directly accessing internal API they shouldn't be, though that could cause this too.

3. [Hyrum's Law](https://www.hyrumslaw.com/)

This affects both JLBP-3 and JLPB-4, maybe others.

For internal APIs we should recommend that their use to be limited to a single module.

貢獻指南

開啟貢獻指南

研究方向

No files or tests are named. Start by reviewing the JLBP-3 and JLPB-4 guidance and the linkage-checker context cited in the issue. Define the intended recommendation for internal APIs and an acceptance criterion for the resulting guidance.

由索引模型根據 Issue 內容生成。

評估

技術堆疊
java
領域
documentation
Issue 類型
文件
難度
5/5
預估耗時
一週以上
活躍度
停滯
描述清晰度
需要釐清
新手友好度
25/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。