Virtuous Sustainability
Many of you have probably noticed that software sustainability is a very important topic these days. It takes several forms, including preservation of computational experiments in support of Open Science; building software communities that maintain and grow software in the long run; and testing to ensure that valued software continues to operate as expected. Software sustainability is a knotty problem, and particularly difficult when you consider the long-term economic viability of a system. After all, if software fails to receive adequate economic inputs it is likely to simply fade away. (Here I use a very broad meaning for an economic input which can take on a variety of forms including voluntary contributions from a community, commercial investment, and/or governmental or non-profit funding,)
As many of you know, Kitware has a long history of building sustainable, open source software ecosystems. For example, the Visualization Toolkit (VTK) system has been under active development since 1994, and remains the premiere general purpose visualization system in the world today. Much of the success of this and other scientific computing systems developed at Kitware is due to using accepted sustainability practices such as building supportive communities, employing advanced software processes, designing excellent architectures, and offering significant value through advanced algorithms. Yet another major contributor to these systems’ long term success has been the business model used to sustain them. We refer to this approach as the Platform Strategy, a multi-tiered method to leverage the wide variety of economic resources available to sustain and grow software.
Platform Strategy
In a nutshell, the Platform Strategy is a sustained commitment to a software system that artfully combines economic resources, including community contributions, to maintain, build, and grow the system. Fundamentally it requires a long term vision to guide the development of the software, with the flexibility to adaptively combine disparate resources which move the system forward. Economic support may come from community contributions, financial donations, commercial contracts, small business initiatives such as SBIRs, and/or government contracts and grants. If done well, platforms provide fundamental infrastructure which can be readily supported, customized, or extended to respond to customer needs, thereby further building out the platform and offering additional business opportunities–and benefitting the broader community–in a cycle of virtuous sustainability.
In our experience, sustainable software platforms emerge when a core software capability demonstrates value across a broad range of application domains, and has the potential to be used in areas of significant technological or commercial potential. At inception, the key to building a sustainable platform is to identify and define as broad a customer base as possible, since this ultimately translates into economic resources. For this reason community building, using open approaches and permissive licensing, is critical to realizing financial success. As software developers we understand the need to build communities to leverage talents from around the world and build in sustainability; but we also realize that a vital community translates into economic benefits that can sustain a system in the long term. In turn, the community benefits from the ongoing maintenance and support of the system.
A Case Study
The VTK system provides an informative case study through which to demonstrate the effectiveness of the Platform Strategy. Originally created as part of a book on visualization, VTK was freely offered using a permissive BSD licence which quickly seeded a vital community that still provides significant contributions to the current day. Largely in response to community growth, Kitware was formed in 1998 to support the VTK software system. Initial funding came from an SBIR and commercial customers. From these early days, it was clear that the system required a technology roadmap and long term vision, so that sources of revenue could be utilized effectively to add new technology pieces and build out the system, as well as providing ongoing maintenance. A key process was to manage IP carefully, working with customers to contribute back to the system, even encouraging small contributions such as bug fixes and minor enhancements. In the first 20 years of VTK’s lifetime, no direct funding was received to maintain the system. Instead, contributions from the community, investments from Kitware, and careful aggregation of funding sources was used to push the system forward. It was only in 2013 that VTK received a four year NIH R01 maintenance grant (1R01EB014955-01A1) to directly energize VTK for medical computing, partially in recognition of the significant impact that VTK has made on medical computing and visualization. (One of the coolest things about this grant writing process was the overwhelming number of letters of support from the community, we received well over 50 ranging from researchers to users on the VTK mailing list. It was very humbling, yet quite demonstrative of how for-profit, funding agencies, not-for-profit educational institutions, and community can work together to benefit all.)
With the success and inspiration due to VTK, several systems opportunistically emerged. The ITK system was envisioned, funded, and created under the guidance of Dr. Terry Yoo at the National Library of Medicine. The project was explicitly designed to build a community to sustain the resulting software. As part of this project, CMake and CTest/CDash were also developed, creating some of the leading software build and test tools used today. Other projects leveraged VTK including ParaView, a DOE-driven system for scalable visualization, and 3D Slicer, a medical visualization and analysis application. Hence the number of resources available to support VTK has expanded, and the system continues to rapidly grow in an ongoing cycle of virtuous sustainability.
As mentioned previously, maintaining a long term vision for a software system is the key to sustaining a platform. This ties into leadership and system governance, which must be strong enough to carry the vision forward. In VTK, senior developers take on these roles, and work in conjunction with an Architecture Review Board and the broader community to ensure that the system moves forward in a positive manner.
Some Final Words
Throughout its development process VTK has addressed sustainability by supporting community engagement; adopting best practices in software development and testing; and ensuring that the system offers significant value to customers. Using the Platform Strategy to coordinate various sources of economic capital has been instrumental to the success of this system. It has enabled Kitware and companies like it to grow many leading, long-lived scientific computing systems and tools, and continues to spur the creation and growth new systems.
The Platform Strategy depends on building partnerships across different organizations and communities. Often these partners do not fully appreciate that they are jointly contributing to the long term growth and maintenance of a open source software system — it is the visionaries behind the Platform Strategy that are coordinating these multiple efforts to create valuable software. It is possible that this process can be made more explicit; for example funding agencies and associated enlightened PMs can work broadly to facilitate the creation of larger-scale, integrated efforts that engage the community, commercial enterprises, and researchers to grow and sustain software systems. In doing so, however, it is important not to discriminate against funding sources. For example, some of the biggest supporters of VTK have come large commercial customers such as oil and gas, big pharma, medical device manufacturers, and consumer products. These contributors must be welcomed side-by-side with scientific research institutions if the platform is to be sustained in the long term.