A Platform Strategy for Economically Sustainable Software
This is a white paper that I am presenting at CSESSP2015 (Computational Science & Engineering Software Sustainability and Productivity Challenges) on October 15-16, 2015. A pdf version of the text is attached as well.
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. While 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; a 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, which is a multi-tiered method to leverage the wide variety of resources available to sustain and grow software including open source communities, commercial projects, and government funding.
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 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 an imperative 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.
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. Due to the growth of the community, including early contributions from GE (the initial, core developers worked at GE Research), Kitware was formed in 1998 to support the rapidly growing 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 to directly energize VTK for medical computing, partially in recognition of the significant impact that VTK has made on medical computing and visualization.
With the success of 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 in the world 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 in the long term. This ties into leadership and system governance, which must be strong to carry the vision forward. In VTK, senior developers take on these roles, and work in conjunction with an Architecture Review Board to ensure that the system moves forward in a positive manner.
Conclusion & Closing Comments
Throughout the process VTK has concerned itself with sustainability issues by ensuring community engagement; adopting best practices in software development and testing; and ensuring that the system offers significant value to customers. The Platform Strategy, which coordinates various sources of funding and 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 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 sustainable 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.