What to Support When You’re Supporting: A Study of Linux API Usage and Compatibility
Chia-Che Tsai, Bhushan Jain, Nafees Ahmed Abdul, and Donald E. Porter
Application programming interfaces (APIs) specify how application developers interact with systems. As APIs evolve over the life of a system, the system developers have little in the way of empirical techniques to guide decisions such as deprecating an API. We propose metrics for evaluating the importance of system APIs, as well as the relative maturity of a prototype system that claims partial compatibility with another system. Using these metrics, we study Linux APIs—such as system calls, ioctl opcodes, pseudo-files, and libc functions—yielding insights for developers and researchers.