Software is of vital importance to science. Data analysis, simulation, and visualization are all part of the scientific process, and all depend on software. More than other assets such as published results and archived data, software requires continuous maintenance effort or it soon loses its value, as it becomes incompatible with new releases of operating systems, middleware, and complementary software.
With financial support from the Alfred P. Sloan Foundation, my research team is investigating software development practices, co-creation, and sharing in collaborative science. We are exploring the extra work required of scientists to make software generally useful and available, as well as the role of Community Code Engagements–short-term focused intensive software development efforts–such as Summer of Code and Hackathons in building community and enabling needed extra work.
Trust improves collaborative behaviors such as communication and knowledge sharing, as well as team effectiveness. Unfortunately, trust remains a challenge for effective collaboration. Remote workers are likely to have much less and lower quality information about their remote collaborators and thus are more likely to erroneously attribute the cause of a breakdown in work to personal characteristics (dispositional attributions) of their collaborators, rather than characterists of the situation (situational attributions).
I was able to explore the issue of erroneous attribution and trust in a recently completed NSF VOSS grant. I theorized a design space for tools to support trust between remote collaborators. Using elements from this design space, I developed a tool called Theseus. Theseus is a software engineering awareness tool that supports the development of trust among distributed software developers. Specific misunderstandings that occur among developers due to lack of awareness can erode trust and leave negative impressions that need to be repaired. Using Theseus, distributed developers can make a more accurate interpretation of why a collaborator was behaving a certain way. Thus, an event like a module check-in being overdue can be interpreted more accurately. I evaluated Theseus in a laboratory experiment and demonstrated that it can positively affect trust among collaborators by supporting accurate attribution.
One of the reasons large-scale software development is difficult is the number of dependencies that software engineers face. These dependencies create a need for communication and coordination that requires continuous effort by developers. Empirical studies, including our own, suggest that technical dependencies among software components create social dependencies among the software developers implementing those components. Based on this observation, we developed Ariadne. Ariadne analyzes software projects for dependencies and collects authorship information about projects relying on configuration management repositories. Ariadne can "translate" technical dependencies among components into social dependencies among developers.Ariadne is a Java-based plug-in to the Eclipse IDE that visualizes the social networks of software developers derived from the underlying software architecture represented by the modules in the system. End users of Ariadne can find answers quickly to common project questions such as who is working on which modules, who might be able to answer questions including, who also knows about a module (i.e. finding a substitute), and so forth. Social network analysis and software dependency analysis are the key components of the system along with the visualizations. We experimented with two different visualizations: a traditional node-edge graph (top right); and a more abstract visualization on three monitors (bottom left).