语义版本控制规范中的第一点指出兼容软件必须声明公共 API。
我想知道 gems 是如何建立这个公共 API 的。似乎它通常是通过自述文件完成的(例如,参见ActiveRecord),感觉它并没有在公共 API 代码和其他代码之间划出严格的界限。一个做得更好的 gem 的例子是Twitter API,将它的公共 API 代码放在API 目录中,但即使在那里,这条线也是灰色的,因为公共 API 的配置方法是在API 目录之外的twitter.rb中定义的。
作为尝试坚持语义版本控制的 gem 的潜在贡献者(这是其中的大多数,因为我们有像 bundler 这样的工具),我想知道哪些方法是公共 API 的一部分,哪些不是。也许我必须查看更多源代码,但是否有明确定义公共 API 的指南?