Hyrum's law states a common observation in the software industry: "With a sufficient number of users of an API, it does not matter what you promise in the contract: all observable behaviors of your system will be depended on by somebody". Meanwhile, recent research results seem to contradict this observation when they state that "for most APIs, there is a small number of features that are actually used". We investigate this seeming paradox between the observations in industry and the research literature, with a large scale empirical study of client API relationships in one single ecosystem: Maven Central. We study the 94 most popular libraries in Maven Central, as well as the 829,410 client artifacts that declare a dependency to these libraries and that are available in Maven Central, summing up to 2.2M dependencies. Our analysis indicates the existence of a wide spectrum of API usages, with enough clients, most API types end up being used at least once. Our second key observation is that, for all libraries, there is a small set of API types that are used by the vast majority of its clients. The practical consequences of this study are two-fold: (i) it is possible for API maintainers to find an essential part of their API on which they can focus their efforts; (ii) API developers should limit the public API elements to the set of features for which they are ready to have users.
翻译:Hyrum 的法律规定了软件行业的一个共同观点 : “ 有足够数量的用户使用API, 并不重要: 您在合同中承诺什么 : 您系统的所有可见行为都取决于某个人。 ”同时, 最近的研究结果似乎与这个观点相矛盾, 他们指出, “ 对大多数API来说, 有少量的特征被实际使用 ” 。 我们调查了工业和研究文献中观测和研究文献之间似乎存在的矛盾, 在一个单一生态系统“ Maven Central ”中, 对客户的API关系进行了大规模的经验性研究。 我们研究了马文 Central 的94个最受欢迎的图书馆以及829, 410个客户作品, 其中宣布依赖于这些图书馆, 在Maven Central 中可以找到这些图书馆, 以及 Maven Central 提供的829, 410 客户工艺品, 其中总结了2.2M 依赖这些图书馆。 我们的分析表明, API 的用途范围很广, 客户至少一次被使用。 我们的第二个关键观察是, 对于所有图书馆来说, 有少量的API 类型, 它们被绝大多数客户使用。