"When all is said and done, the real citadel of strength of any community is in the hearts and minds and desires of those who dwell there."
Everett Dirksen
While many commercial software vendors still balk at the idea of open source, producing and participating in open source software (OSS) projects can provide significant benefits to a company. One benefit is improving product-market fit.
This article introduces the concept of product-market fit. It then provides an example of one startup's experience with opening a portion of their code. Finally, it discusses the importance of building community and some of the motivators of community participation.
Improving Product-Market Fit
The term "product-market fit" is often used by marketers and investors. It means that the product on offer is a good match to the needs of the target market. When launching a new product, a company strives to achieve a reasonably good fit early on, so that paying customers will buy the product. The next step is to improve the fit over time until as many qualified people as possible buy the product.
It is very difficult to make one product that is right for everyone. One strategy is to add requested features in order to complete a sale. As a result, software products are often significantly bloated and cumbersome by the time they reach their third release. We believe that releasing strategic software components as open source can help to improve the market fit of a software product while reducing the tendency towards feature bloat.
Opening Code to Address Customer Requirements
Consider the case of a small e-commerce product vendor. The vendor's product easily allows anyone to set up an online store and sell their own goods. When the product is shipped, it includes support for a payment gateway to handle credit card transactions. After some time in the market, the vendor realizes that the target audience uses a range of different payment gateways that are not currently supported by its e-commerce product. This creates a catch-22 situation. As a small company, the programming time required to support the range of possible payment gateways is limited. However, not supporting at least the most popular gateways is severely limiting sales. This was the experience of Shopify, an Ottawa-based company that was started in 2006 by two Ottawa based entrepreneurs, Tobias Lütke and Scott Lake.
Open source provided the solution to Shopify's payment gateway problem. Shopify created an open source project by releasing the portion of their code that connected their product to the payment gateway. In doing so, they demonstrated to the development community a method of integrating a payment gateway with Shopify. They then invited the community to write connectors for any payment gateway they would like to see supported by Shopify.
The community responded. Within months, developers wrote several connectors for third-party payment gateways that Shopify was previously unable to support. As a result, the addressable market for Shopify increased dramatically. Now their product could work with virtually any payment gateway. Shopify was no longer locked out of market segments due to gateway incompatibility. The developers that wrote the connector code also benefited as Shopify now worked with the payment gateway that they needed to use. Further, thousands of future Shopify customers benefited because they could now choose Shopify knowing that the product had a community of developers behind it, keeping it on top of the compatibility layer and making sure it continued to support a range of payment gateways.
Next, the company opened its shopping cart component to the open source community and once again, the community responded. At the start of the project, there were major third-party shopping carts that the product didn't support. Within months, all major shopping cart modules from third parties were enabled by the community.
Benefits of Shopify's Approach
In taking this open source approach to enhance two of their product’s components, Shopify benefited in several important ways:
-
product-market fit was improved by adding desirable features that were not in the initial product
-
the typical bloat associated with adding features was avoided as customers could select only the payment gateways that they required
-
switching costs for potential customers were reduced as they could continue to use their preferred gateway system with Shopify
-
a community of supporters was established to actively promote the product online
-
significant development effort was volunteered by the community to enhance the product
-
by perceiving customer need and providing the developer community with the code required to meet that need, the company demonstrated goodwill
-
evidence of a community of developers visibly adopting Shopify created proof of the product’s value, something that usually does not occur with users simply using off-the-shelf products in isolation
-
no trade secrets or intellectual properties were sacrificed in the process, even though Shopify is a commercial product
Building Community
It is said that "it takes a village to raise a child". Indeed, it appears that an increasing number of new products are brought to market not only by the vendor that creates them (the parents) but by the community behind them (the village). But how are these relationships managed? One method of dividing responsibilities is for the vendor to focus on the core value proposition and for the community to assist with increasing the breadth of the offering. A community can help extend a product beyond the vendor's initial vision and capacity to deliver.
While community members tend to volunteer their efforts because they perceive value in the product, they may gain additional motivation through a sense of inclusion. Another possible benefit is that the developer community may overlap with the user community, which provides an excellent opportunity for feedback about the product-market fit from the product's target audience.
With respect to product loyalty, platforms tend to receive more loyalty than standalone products. Part of the reason for this is switching costs. Once a customer adopts a particular platform, it can be very time consuming and costly to switch to another platform. In contrast, the barriers to switching from one standalone product to another are usually lower. By engaging customers at the level of code, the likelihood that they will switch based on short-term pressure can be reduced.
Building momentum behind a product can be achieved by winning the hearts and minds of developers, an activity that can also be thought of as building community. OSS projects can be a great tool for building a vibrant community around a product.
For the vendor, great benefits can be realized by enlisting the support of a developer community through an OSS project. But what does the community of volunteer developers receive in return? The concept of a community is somewhat abstract, yet it is comprised of real people who are contributing their valuable time, skills, and effort. The following conditions and motivators can encourage developers to make valuable contributions to an open source project:
-
a substantial existing base of technical users with a demonstrated desire to see the product extended beyond the vendor's current plans
-
evidence that the product can address a significant portion of an important customer problem that potential users are trying to solve, particularly if enhancements can be added by the community
-
a project that captures the imagination of developers: a large portion of the development community developed their skills as hobbyists and enthusiasts and are motivated to work on projects that they find interesting
-
the project publicly recognizes developer contributions
The opportunity to reduce the likelihood that a single vendor will gain exclusive control in a particular domain is also a motivating factor. However, for vendors developing commercial products with open source components, this can have a negative effect on contributions if the vendor is perceived as a threat.
Finally, the use of an up-and-coming programming language can have an effect on contributions. Developers tend to rally around their favourite programming language. It can be worthwhile for a community to contribute to an open source project simply because it is one of the few projects in their language of choice. The newer the language, the better the chance that this is the case.
Concluding Thoughts
Strategic opening of code can help a startup or a company that is launching a new product to cost effectively meet the needs of its customers. Factors that contribute to the success of such a strategy include an existing customer base of technical users and a demonstrated need that is currently not being addressed by the existing solution. The company should take care that the released code allows for the development of enhancements to the product without affecting the core value proposition of the product itself.