A multifaceted study of computer music programmers has been conducted to gain insight into how this community of end users develop music patches written in the Max/MSP and Pure Data visual programming languages.
The first facet of analysis was a comparison of the software development practices of computer musicians and the general population of software developers. Using a dataset of Git repositories hosted on GitHub, a series of statistical tests established that in comparison to the general population of software developers, computer musicians’ repositories have less commits, less frequent commits, more commits on the weekend, yet similar numbers of bug reports and contributing authors. These differences are attributed to the cultural differences in sharing intellectual property or the lack of education surrounding the merits or use of version control systems.
The second facet of analysis was an investigation of cloned code and repeated object structures in visual music program- ming languages. When run on 118,481 Max/MSP and Pure Data patches, the algorithm detected that 89% of connected objects are DF1 clones (object types, parameters, and connections are equivalent) and 95% of connected objects are DF2 clones (object types and connections are equivalent). Several clones discovered in source code programmed by computer musicians were re-implementations of already existing objects in Max/MSP and Pure Data.
The final facet of analysis investigates, via surveys and interviews, how computer musicians build their software and which software engineering tools they use. The surveys reinforced that computer musicians do not necessarily use source control repositories or bug trackers. Furthermore, computer musicians lack a dedicated support website for posing questions and answers to the entire computer music community and instead subscribe to mailing lists for support.
Now that an empirical study of computer music programmers has been conducted, more work can be done to educate computer musicians and develop software engineering tools for this end-user community and others using visual programming languages. For more details about the results and analyses presented in this paper, please see the technical report [45].