How Stable are Eclipse Application Framework Internal Interfaces? - Businge, John; Kawuma, Simon; Openja, Moses; Bainomugisha, Engineer; Serebrenik, lexander (IEEE, 2019)
Eclipse framework provides two interfaces: stable interfaces (APIs) and unstable interfaces (non-APIs). Despite the non-APIs being discouraged and unsupported, their usage is not uncommon. Previous studies showed that applications using relatively old non-APIs are more likely to be compatible with new releases compared to the ones that used newly introduced non-APIs; that the growth rate of non-APIs is nearly twice as much as that of APIs; and that the promotion of non-API to APIs happens at a slow pace since API providers have no assistance to identify public interface candidates. Motivated by these findings, our main aim was to empirically investigate the entire population (2,380K) of non-APIs to find the non-APIs that remain stable for a long period of time. We employ cross-project clone detection to identify whether non- APIs introduced in a given Eclipse release remain stable over successive releases. We provide a dataset of 327K stable non- API methods that can be used by both Eclipse interface providers as possible candidates of promotion. Instead of promoting non- APIs which are too fine-grained, we summarized the non-API methods groups in given classes that are stable together and present class-level non-APIs that possible candidates promotion. We have shown that it is possible to predict the stability of a non-API in subsequent Eclipse releases with a precision of 56%, a recall of 96% and an AUC of 92% and an Fmeasure of 81%. We have also shown that the metrics of length of a method and number of method parameters in a non- API method are very good predictors for the stability of the non-API in successive Eclipse releases. The results provided can help the API providers to estimate a priori how much work could be involved in performing the promotion
Keywords: Eclipse; Framework; Internal Interfaces; Internal Interfaces Promotion; Internal Interfaces Stability; Software Evolution