Modern web applications are built on top of web frameworks, which offer benefits such as feature reuse and productivity improvement. By relying on web frameworks, developers can safely handle the multiple needs of real-world web applications. Despite the benefits of web frameworks, they are not intended to address all requirements to create web applications. In particular, the Django web framework provides a rich software ecosystem of reusable applications to support developers with advanced development aspects, such as modern authentication, caching, and deployment. However, currently, it is not clear what solutions developers can reuse or how active and reliable this ecosystem really is. To overcome this gap, this paper proposes an empirical study to assess the Django ecosystem of reusable applications. We analyze 487 reusable applications to understand their target domain, activity level, frequency of tests, and compatibility. We find that reusable applications are mostly concentrated in three categories: developer tools (27.8%), user interface (17.1%), and persistence (15.9%). Overall, these categories have distinct characteristics; for example, developer tools have the highest concentration of young and inactive applications, while persistence applications are the oldest. The reusable applications are 7.7 years old but have 10.17 months without commits, on the median. We also find that 80% of the reusable applications include the supported Python versions, 64% include the Django versions, and only 61% include both Python and Django versions. We detect that upgrading to recent versions of Django and Python may not be supported in some reusable applications, but compatibility issues become less problematic in recent Django and Python versions. Finally, based on our findings, we provide implications for practitioners and researchers.
Read more