While software development has long been compared to the craft of carpentry due to the need for a sturdy foundation and clear instructions, many in the field say garden analogies offer a way to address gaps and enhance practices.
“The conceptual framework of software gardening emphasizes the value of continuously adaptable stewardship throughout the lifespan of a project, addressing risks of long-term software carpentry and community fragility,” Gregory Way, PhD, an assistant professor in the University of Colorado Department of Biomedical Informatics, and Dave Bunten, a software developer in the department, write in a recent Better Scientific Software (BSSw) article.
The two CU School of Medicine technologists say software gardening can cultivate scientific development ecosystems, especially for “evolving or unpredictable aspects of the software craft.”
Much like a gardener, software developers can think about the environment around a piece of software, the importance of stewardship, and the opportunity to enhance inclusivity.
Seeing the bigger picture
While gardening and carpentry can complement each other in many ways, gardening provides techniques for considering the environment around a piece of software. Developers may further consider fragility, long-term maintenance, and mechanisms that prevent the technology from “rotting” instead of treating software like a stagnant machine.
“With the empathy of a gardener, healthy ecosystems of code avoid premature ends, and they cultivate carpentry materials as they decay over time,” the two say.
The concept of software garden lattices – or the interconnected framework of people and software that is built over time – can help cultivate the next generation of software developers and robust software.
“Working together toward common goals through the lattice provides an opportunity to understand and take responsibility for healthy software ecosystems, build community cohesion, and beautify collective action,” they say.
Focusing on the power of community and considering a project’s reach can also be beneficial to the individual developer.
“We’re growing ourselves by being participants in this wider landscape,” Bunten says. “That’s important when you consider that we only have so much time to impact something in the space we’re working. We have a real opportunity to work faster and better to increase the potency of the research.”
The role of open source in software gardening
Open source software fits naturally into the equation, especially in the academic and research world, according to Way and Bunten. Code that anyone can inspect, modify, and adjust can sometimes be rare to come by, but the software gardening model encourages and fosters collaboration.
“We can operate from a ‘community garden’ standpoint, where the gardens are connected to each other,” Way explains. “There are a lot of benefits to that. You get a lot of community engagement, and you can move quickly. There can also be special considerations about how that community engages with its users, making sure that it does so openly and encourages participation and learning rather than mockery, shame, or feelings of inadequacy.”
Open source work may sometimes be challenging, especially when developers are working with sensitive data, such as patient information. Bunten says that’s important to keep in mind, but the challenge is worth overcoming for the greater good. The potential to collaborate with people of different backgrounds can be beneficial and help create software that works better for everybody.
“It’s crucial to invite people to the table because we all have different perspectives and experiences,” Bunten says. “That cognitive diversity empowers open source technology to have a greater impact, and in turn, helps to strengthen all the other individual components of software gardening.”