"The whole point of open source-- the reason any open source project exists-- is to save us time. To keep us from rewriting the same software over and over. Puppies are cute and fuzzy and sweet, but they're also giant timesinks. To imply that an open source project is as labor intensive as a puppy is reinforcing the very worst stereotypes of open source: software that's only free if your time is worthless."
The use of open source in hosted solutions is undoubtedly widespread. However, it is seldom considered important in its own right, nor do the majority of hosted solutions providers contribute to or create open source as natural artifacts of doing good business. In this exploration of the nature of hosted solutions and their developers, it is suggested that consuming open source, as well as creating and disseminating it to collaborators and competitors alike, is essential to success.
In an open source ecosystem, hosted solutions can compete on differentiation rather than lose time and money to concerns that do not add value. Hosted solution providers can reduce the cost of their solution, the time it takes to deliver new ones, and improve their quality without additional resources.
Architecture of Hosted Solutions
A hosted solution, like most software, is designed for an end user that, for the most part, is unconcerned about the internal workings of the solution. Once the end user selects a solution, the characteristics of security, reliability, and redundancy are taken for granted. The value add of hosted solutions, due to their nature as web-based applications and the imposed limits of ubiquitous web browsers, is not usually derived from intellectual property, but rather from the solution's ability to interpret, predict, or act on the user's intent. Therefore, hosted solutions are usually "execution plays" rather than proprietary engines. This is not true in all cases, but even when a hosted solution delivers substantial proprietary value, the apparatus that it uses to communicate those results to users is still limited to "forms over data". All hosted solutions must employ some means of capturing a customer's money for services, and usually use subscription-based pricing to correspond with the nature of a hosted solution's pay-per-use business model and software-as-a-service delivery model.
Superficially, one potential beneficial side effect of hosted solutions is enabled by the definition of what constitutes a source or binary distribution. Since a web application's binaries are not distributed, but rather executed, with the resulting output transmitted to the end user, these web solutions do not have to disclose through attribution the open source components used. However, this does not extend to resources such as images and scripting, which are distributed as source in their entirety for interpretation by the web browser. Whether this effect is the result of a temporary lapse in the state of the art, or a widely accepted misinterpretation of open source licensing law, the fact remains that you can build web applications entirely out of open source components without acknowledging that fact. From a consumption standpoint, this helps hosted solution providers shop for open source components freely and evaluate them fairly against commercial alternatives. Investigating open source is part of a due diligence process for the cost-conscious developer.
Consider the architecture of a typical hosted solution: an often relational persistence engine, layers of infrastructure code responsible for assigning dependencies and provisioning data services, customer membership services to handle activations, subscription levels, cancellations, and marketing efforts, and billing architecture to collect for services rendered. While this is hardly the definition of a hosted service, it does constitute a large portion of the development effort. Every hosted solution must have these key components, and none of them require a particular finesse: customers are subscribed or they aren't, and credit card transactions are valid or void. The only remaining consideration, after infrastructure, is a service's core business and differentiators, which should account for the majority of a developer's effort. Luckily, open source provides the means to realize this balance.
Open Source Advantages
We believe that companies should use established open source, or give away their own proprietary code as the seeds of new open source projects, to build the vast majority of their hosted solutions. Through promotion and financial support of open source communities that mandate the componentization of web architecture, hosted solutions can leverage the principle of reusability to greatly reduce time to market, effectively beginning the development cycle at the service delivery stage rather than the infrastructure stage. The company can then expend its resources to solve the specific challenge their hosted solution provides to their customers. This means that a service's key differentiators combined with the execution of service delivery become the only true measures of success when infrastructure concerns are equalized by unilateral investments in open source architecture.
Because the general cost and complexity of deploying web applications has decreased dramatically, many developers of hosted solutions are smaller teams with tighter deadlines. These teams have a limited capacity for "quality bandwidth", or the sensitivity to detect and act on infrastructure issues to improve code reliability. While we know based on instinct that a customer will not respond well to an ill-conceived idea well executed, nor a brilliant idea that's impossible to take for granted, we don't realize that there is nothing to be gained competitively by advancing an internal state of the art at the cost of time, money, and quality.
It seems counter to our competitive nature that we would benefit directly from elevating our competitors to a certain level of core competency, or through implication reveal our infrastructure vulnerabilities. To quote a friend, most of a hosted solution's genetics are a "solved problem". Submitting to our tendency to believe that in-house development cannot be duplicated by others or that our conscientious investment in private application infrastructure is a differentiator in itself is the kiss of death for a hosted solution.
It benefits the entire ecosystem when everyone is using the same open source components. First, the need for technical expression that was previously invested in a low quality bandwidth strategy (in-house development) can be directed at evolving the open source offerings that are now actively developed by everyone. Because ecosystem members are motivated financially, they are incented to innovate. This process could not occur in isolation, and its continued health ensures that hosted solution development always begins near the end of the development cycle, right where the differences made matter most to overall success and profit.
The Advantages of Contributing Back
In software development there is a long-established tradition of identifying and eliminating dependencies as a marker of quality. Dependencies reflect the hierarchy of components and the code that calls into each to perform tasks. The greater the number of components, the greater overhead needed to understand, maintain, and extend that hierarchy.
Leveraging open source components acts out a law of decelerating returns, where a hosted solution could topple from sheer overlap and inefficiency. If fewer dependencies means more efficient systems, then this would add weight to the decision to procure all software development internally. Furthermore, software development cultures thrive on quality and performance, and the state of the art within an open source community may vary greatly in quality, elegance, or completeness compared to the capability of the team that would implement it.
The open source equivalent of in-house code could be inferior engineering, depending on the maturity of the project and the activity of its primary team. However, there is an opportunity for the hosted solution provider to produce rather than consume open source, and take the lead in producing the same software they would have in-house, but for a larger audience. While it is possible that developing public code rather than private code can result in longer lead times, this only occurs when the provider misinterprets the purpose of open source as competitive in its own right, rather than fulfilling the need of producing repeatable solutions with lower cost of ownership and a higher quality bandwidth.
The provider ends up focusing on competitive factors in the open source community itself, such as mindshare or the developer marketplace, instead of the market for their hosted solution. This may be an effective bootstrapping play. If the open source creator can sell solutions based on their open source technology, it could fund the development of the consuming application, though this would largely be a departure from the original intent.
Competitive factors exist, but should be left to the greater community. It is important to focus on the community surrounding your stewardship, and not interpret the open source movement as a zero-sum game that requires a winner and loser. For example, many open source projects suffer from a lack of documentation. If an open source project gains traction without adequate documentation, then the cost of improving the documentation is justified by the quality improvement the community provides, but is not accounted for prior to community growth or success.
This has a two-fold positive effect. First, it increases the quality bandwidth of an equivalent solution if the project is successful in attracting supporters. Second, it forces competition to either accept your prevalent solution, spend equal or greater resources improving it for their own needs, or recreate similar infrastructure for their own projects without reaping the reward of an open source community. Even in an extreme case where a potential competitor decides to launch their own equivalent open source resource rather than collaborate with your community, the introduction of choice into an area previously underserved or dominated by commercial players only helps your efforts. It helps in two ways: by supplying alternative views on hosted solution concerns that can be replicated safely under open source licensing, and by bolstering community through network effects.
By no means should a development team aspire to open source its "secret sauce", but many hosted solutions are developed by bootstrapping web development firms whose primary means of growth, prior to launching a hosted solution startup, has been through contracting for clients. These are companies that are accustomed to thinking that their core business is software development rather than the simplified accounting, online image editing, or other service showcased in their hosted solutions. They correctly prescribe a mandate not to share their unique value proposition and techniques, but apply that thinking to rudimentary functions of their hosting infrastructure, the same area where they are normally poised to deliver value as consultants.
Consider that Ottawa's Shopify, a success story in a flooded hosted eCommerce market, is the curator of no less than eleven open source projects. Each is easily integrated into competing products and represents countless hours of development, integration with dozens of third parties, and thorough testing. While these projects do generate some amount of promotional value to the company, Shopify is not in the software development business, they are in the hosted eCommerce storefront business. On the surface, there is very little for them to gain from developer goodwill. However, it is clear that they steer the development choices of competitors, inspire innovation around their mission-critical systems, and increase their quality bandwidth from public exposure to critical payment processing code. This is the case with ActiveMerchant, their open source project responsible for handling credit card transactions from dozens of merchant services. Shopify is the market leader because they differentiate and execute their unique selling proposition, and they leverage open source code they could have easily kept behind closed doors, to help ensure they stay competitive.
While there are many ancillary benefits to promoting open source, such as developer goodwill leading to personnel attraction and retention, the effects of open source are far more integral. By refining the focus of a hosted solution provider to its true core business and repurposing all non-essential infrastructure development through open source consumption and stewardship, companies that create hosted solutions stay competitive by maximizing the potential of the code they write, the code they don't write, and the communities they build.