Semantic Versioning Specificationの最初のポイントでは、互換性のあるソフトウェアはパブリック API を宣言する必要があると述べています。
gem がこのパブリック API をどのように確立するのか疑問に思っています。これは通常、readme (たとえば、 ActiveRecordを参照) を介して行われるようですが、パブリック API コードと残りのコードの間に厳密な境界を引いているようには感じられません。これをより適切に行う宝石の例はTwitter APIで、その公開 API コードをAPI ディレクトリに配置しますが、公開 API の configure メソッドはAPI ディレクトリの外のtwitter.rbで定義されているため、その行は灰色です。
セマンティック バージョニング (バンドラーのようなツールがあることを考えると、ほとんどの場合) に固執しようとする gem の潜在的な貢献者として、公開 API の一部であるメソッドとそうでないメソッドを知りたいと思います。もっとソースコードを調べる必要があるかもしれませんが、パブリック API を明確に定義するためのガイドラインはどこかにありますか?