Exploring code samples characteristics and their impacts on software ecosystems - GABRIEL SANTANA DE MENEZES (2022)
Modern software systems are commonly built on top of frameworks, libraries, and APIs (platforms). The environments where exists relations between organizations that maintain these platforms and clients that use features of these platforms are known as the Software Ecosystem. In this context, organizations develop code samples to help their client with learning barriers. Code samples are small software projects, with educational purposes, and teach how to use platform features. However, we know little about code sample characteristics and their relation with organizations and clients. In this work, we aim to fill these gaps by assessing four different aspects. First, comparing code samples with conventional projects through their source code. Second, exploring the code sample usage via Stack Overflow and GitHub. Third, assessing the profile of actors that interact with code samples. Fourth, maintenance of code samples and their impact on clients. We found that code samples are smaller and simpler than conventional projects. We also found that code sample changes less frequently but updates faster to new platform versions than conventional projects. Regarding code sample usage, we found that the copy/paste approach is low used by clients. Also, we noted that the most common problem faced by clients is when they try to modify the code sample and improvements are the most common need from clients. Regarding actors around code samples, we found that the target audience of code samples can range from inexperienced to experienced clients. Also, we noted that platforms of different organizations seem to have different target audiences. Also, code sample maintainers are aged and unpopular on GitHub. Finally, about code sample maintenance, we found that code modifying is the most common maintenance activity of code samples, but Pull Request management plays an essential part in maintenance time. We also found that code samples become less complex but larger and less readable over time.