Building a Business on Open Source
Drudge Bot last edited by
Building a Business on Open Source
Building on open source gives you options that proprietary developers don:undefined:’:undefined:t have. This guide is for anyone who needs to create a reliable software product or service for their customers. Find out which business models work for your needs, how to build the best implementation strategies for open source products, and why you need to manage your supply chain.
Table of Contents
- Intro to Open Source Business Models
- Open Core vs. Hybrid Business Models
- Creating a Product
- The New, Open Platform Model
- Improving Product Creation and Management
- Becoming a Supply Chain Influencer
- Final Thoughts
Intro to Open Source Business Models
By now, I thought it would be self-evident how to derive revenue from open source software platforms. But alas, no. Despite the fact that the success of open source software is unparalleled and dominates the global software industry, there are still far too many startups repeating the same mistakes from a thousand startups past. And there are still far too many larger companies that simply don:undefined:’:undefined:t understand what it means to participate in, much less lead, an open source community.
As of early 2017, it:undefined:’:undefined:s been about 19 years since :undefined:“:undefined:open source:undefined:”:undefined: was coined to replace the term of art, :undefined:“:undefined:free software:undefined:”:undefined: :undefined:—:undefined: deemed far too scary for the MBA-toting, pointy-haired bosses among us:
:undefined:“:undefined:Freedom? Yech! Let:undefined:’:undefined:s use open source instead.:undefined:”:undefined:
Since then, every single area of innovation in computing is now dominated by the open source platforms among us. From operating systems, virtualization and containers to big data, cloud management, and mobile computing, chances are good that innovation is happening on an open source platform. So dominant is the breadth of open source ecosystems that virtually the entire world:undefined:’:undefined:s economy depends on open source software. I hesitate to think what would happen to the global economy should open source software be suddenly made inaccessible (think financial collapse and societal unrest on a biblical scale).
Despite this massive success, there is something missing from the world of open source: successful open source companies. We are now in a :undefined:“:undefined:Tale of Two Cities:undefined:”:undefined: type of story: It was the best of times, it was the worst of times. Many of the most visibly :undefined:“:undefined:successful:undefined:”:undefined: open source startups from the last ten years are companies that were acquired by larger ones. These companies, while successfully attracting large communities of users and developers, were not sustainable, revenue-wise. There are a number of executives from open source-heavy software vendors who have openly remarked that it is impossible to create a successful business with a :undefined:“:undefined:pure:undefined:”:undefined: open source approach.
WHAT VC INVESTORS WANT
Many companies have adopted a particular model around creating and selling open source software: create an open source platform or base and sell proprietary software that integrates with the underlying open source platform. In this case, the platform is always free or :undefined:“:undefined:Free:undefined:”:undefined: and the product they actually sell for revenue is proprietary. This model has been labeled :undefined:“:undefined:Open Core:undefined:”:undefined: :undefined:—:undefined: more on that, below :undefined:—:undefined: and is the way most VC-backed companies approach open source development.
In fact, there has only been one company (yet) to ever make a viable business model from selling only open source software: Red Hat. But is that the end of the story? Is it really as simple as :undefined:“:undefined:nobody can create another successful pure open source business?:undefined:”:undefined: I submit that those who agree with that statement are wrong. For one thing, the Open Core approach has never resulted in a successful product. The reason companies do this is that, in their opinion, this allows them to increase their profit margins and more quickly approach profitability. However, most of the value in this model is in the platform itself, and treating it as a worthless commodity while simultaneously trying to build proprietary software on top results in a cut-rate buyer:undefined:’:undefined:s market without the margins the vendors hoped for. Furthermore, this approach leads to a constant battle between :undefined:“:undefined:how much do we cripple the open source platform to enable more proprietary sales:undefined:”:undefined: and :undefined:“:undefined:how can we make the open source platform good enough to increase adoption, but not too good.:undefined:”:undefined:
No proprietary product built as an addition on top of open source software has ever achieved ubiquity in the modern data center, with the possible exception of VMware, which utilized a stripped- down version of Linux for its ESX hypervisor. Even then, the Linux base for ESX was a pretty small part of the overall platform VMware built. It seems that the only successful products that utilize open source components are those where the proprietary bits are the platform, and the open source parts are simply the commodity bits that fill in the gaps that developers can use to more quickly create a product.
SHIFTING BUSINESS MODELS
And yet:undefined:…:undefined: purely open source systems are proliferating in every industry in every region of the world. The list of successful open source platforms grows every day. How does one follow the money? How is this even possible if vendors are right when they claim that they cannot build successful businesses with a pure open source approach? The problem is not that software vendors cannot make money selling open source products, but rather that the problem is misstated. For one, we are looking in the wrong places: software isn:undefined:’:undefined:t created only by software vendors anymore. There are consultants, systems integrators, in-house developers, cloud hosting providers and a host of other people who create, buy, sell and use open source products. It is not that there is no money in selling open source software, but rather that the business models have shifted.
:undefined:“:undefined:It is not that there is no money in selling open source software, but rather that the business models have shifted.:undefined:”:undefined:
Whereas, under the old proprietary world, a larger percentage of money went to pure software vendors, now that money has spread among a larger spectrum of companies and industries; lots of people get paid to work on or with open source software, but an increasing number of them don:undefined:’:undefined:t work for software vendors, per se. In addition to looking in all the wrong places, the current investment model is suspicious of an open source approach. The vast majority of venture capitalists, especially in Silicon Valley, are very risk averse and shy away from open source products that, in their view, will not give as large a return on their investment. In order to secure the funding required to scale a company, investors will frequently require that the startup company include proprietary bits as tools to increase revenue and margins. These two factors :undefined:—:undefined: diffusion of revenue and risk-averse investors :undefined:—:undefined: combine to both give a false impression and, in part due to the false impression, prevent pure open source software vendors from getting funding.
SERVICES AND SUPPORT
Quite a number of companies offer services and support around open source technologies, either as an adjunct offering to complement their products, or as their primary source of revenue. However, there are a few reasons why I chose not to emphasize this particular model in this guide:
- It doesn:undefined:’:undefined:t scale: I wanted to restrict the subject matter to ambitious business models that could, eventually, grow into a global scale. Services and support don:undefined:’:undefined:t necessarily prevent that, but it becomes much more difficult. If you have money to burn, scaling out such an operation is feasible. If you don:undefined:’:undefined:t, it:undefined:’:undefined:s pretty much impossible.
- Investors don:undefined:’:undefined:t like it: See bullet point above. As much as I have a love-hate relationship with the VC community, I can see their point in not investing in services and support companies. Investors want companies that will give them a significant return on their investment, and building a services company is a long slog :undefined:—:undefined: longer than with software products.
- Mom and Pop: If you want to create a viable business with a couple of people and not much more, and you have some runway before you have to turn a profit, a services model is great, especially if your team has sought-after skills that aren:undefined:’:undefined:t very commonplace. For anything more than that, you need to seriously think about how you can grow this model or whether it:undefined:’:undefined:s a good idea. Unless of course, you:undefined:’:undefined:re simply using your services cash flow to fund product development, which is a strategy that can work for startups before they:undefined:’:undefined:ve signed their first term sheet.
:undefined:“:undefined:Some think that services and support are the only way to build a business on open source software, and this book is an active attempt to counter that.:undefined:”:undefined:
So yes, there are quite a number of companies making money using business models not explored here in depth. But for a variety of reasons, they aren:undefined:’:undefined:t particularly interesting to me. The focus here is on product. Specifically, that one can make a profit on open source products, which is something that seems to be in doubt. In fact, there are some who think that services and support are the only way to build a business on open source software, and this guide is an active attempt to counter that line of argument.
Is there a future in pure open source products? And if so, how can you capitalize on it? In the following chapters, I will investigate many open source business models, some of which have been more successful than others. I:undefined:’:undefined:ll also go into some level of detail on how to productize software derived from open source projects. It:undefined:’:undefined:s both trickier and simpler than what you might imagine. And finally, I:undefined:’:undefined:ll discuss the role of the software supply chain in open source and how companies can manage and influence it to best benefit their products and businesses.
Open Core vs. Hybrid Business Models
WHAT IS A PLATFORM?
Platforms are tricky things. Lots of companies aspire to create a world-beating software platform, and it:undefined:’:undefined:s easy to see why :undefined:–:undefined: a platform implies something that supports lots of other things that stand on top of it. Take away the platform, and the whole house of cards falls flat. At least, that:undefined:’:undefined:s what lots of software vendors want you to think, hence the rush to describe their products as :undefined:“:undefined:platforms.:undefined:”:undefined:
In software, a platform isn:undefined:’:undefined:t necessarily something that holds other things up. To oversimplify a bit, it:undefined:’:undefined:s something that connects multiple pieces together with some type of logic and rules. These pieces are usually described as being :undefined:“:undefined:above:undefined:”:undefined: or :undefined:“:undefined:below:undefined:”:undefined: the platform, with :undefined:“:undefined:above:undefined:”:undefined: denoting software components that are closer to a human interface and :undefined:“:undefined:below:undefined:”:undefined: being software components further away from human interaction (and closer to the hardware interfaces). Other descriptions include :undefined:“:undefined:northbound:undefined:”:undefined: vs. :undefined:“:undefined:southbound:undefined:”:undefined: or :undefined:“:undefined:up the stack:undefined:”:undefined: vs. :undefined:“:undefined:down the stack.:undefined:”:undefined: See the next page for a hopefully helpful diagram:
Figure 1: A software platform connects multiple pieces together with some type of logic and rules. These pieces are usually described as being :undefined:“:undefined:above:undefined:”:undefined: or :undefined:“:undefined:below:undefined:”:undefined: the platform, with :undefined:“:undefined:above:undefined:”:undefined: denoting software components that are closer to a human interface and :undefined:“:undefined:below:undefined:”:undefined: being software components further away from human interaction (and closer to the hardware interfaces).
Lots of things could fill the platform box, above, including the Linux kernel and Linux-based distributions, to name just two. The more components that need to be managed by a platform without human intervention, the more likely that platform is to be open source. The corollary would be: the more a platform requires human interaction, the less likely it is to be open source. This is why WYSIWYG tools are more likely to be proprietary, whereas core infrastructure software, such as many of the tools that make up cloud computing services, are open source. This will help inform much of the discussion that follows.
Now that we understand a bit more about platforms, let:undefined:’:undefined:s continue with some analysis of various open source approaches taken by software vendors.
THE OPEN CORE APPROACH
As mentioned in the previous chapter, :undefined:“:undefined:Open Core:undefined:”:undefined: is basically a proprietary approach with some open source software thrown in for sales and marketing lead generation. Now I will add some more detailed analysis about this approach.
:undefined:“:undefined:Many venture-funded startups with enterprise software product ambitions are directed away from the pure open source approach almost from the beginning.:undefined:”:undefined:
Many venture-funded startups with enterprise software product ambitions are directed away from the pure open source approach almost from the beginning, as soon as they start to take seed capital and certainly by the time they take an :undefined:“:undefined:A:undefined:”:undefined: or :undefined:“:undefined:B:undefined:”:undefined: round. The idea is simple: if you have software that can be loosely construed as a :undefined:“:undefined:platform,:undefined:”:undefined: you should, in order to maximize your revenue stream, give away the platform and make money on proprietary additions to the platform. With ubiquitous platform adoption comes the ability to capitalize on the sales of add-ons, apps, plugins, extensions and even vertical market products based on the open source platform. It sounds simple enough and is certainly less scary than the prospect of selling pure open source code that can be obtained for free. There are several advantages and dis:undefined::undefined: advantages to this approach. First, the positives.
OPEN CORE: ADVANTAGES
The most important aspect to an open core approach, for better or worse, is control of the platform ecosystem. In this model, the open source platform becomes a freemium loss leader for the other products sold around it. This entices the company that created it to keep it tightly constrained. With constraints comes almost total control over the open source community and ecosystem that spring up around it. This means that almost all core engineers will work for the vendor responsible for the platform. Consequently, the application ecosystem around the platform will consist almost entirely of the efforts of the platform vendor. This means that this vendor can control a near monopoly of the revenue derived from this ecosystem.
The goal in this scenario is pretty straightforward: create a large enough user and developer base around the platform, and a vendor can lay claim to a large potential customer base, at which point it:undefined:’:undefined:s the vendor:undefined:’:undefined:s job to convert some percentage of them into paying customers. The bottom line is that an open core approach is a siren song to investors and entrepreneurs, luring them with its promises of revenue and world domination.
OPEN CORE: DISADVANTAGES
There is a flipside to this quest for total control, and it comes at the expense of the advantages normally conferred from an open source development model. By controlling all the developers and consequently almost the entire ecosystem, there is a strong tendency towards creating a crippled open source platform. The goal becomes creating a ubiquitous platform that:undefined:’:undefined:s good enough to spread far and wide to millions of users and developers, but not so good that it encourages them not to buy the :undefined:“:undefined:real:undefined:”:undefined: product. As a result, there:undefined:’:undefined:s a constant tug-of-war between opposing factions within the vendor as to what should be part of the proprietary applications and what crumbs to leave for the :undefined:“:undefined:freeloaders.:undefined:”:undefined: Various factions win out depending on how good the revenue is looking for a given quarter or fiscal year. There:undefined:’:undefined:s also a tendency, in this quest for control, to want to own the copyright of all code so that it can be licensed commercially and sold as part of a product. Thus, anyone who wants to contribute to the project must ordinarily assign copyright to the vendor, further limiting the potential contributor base.
In the end, an open core platform is functionally the same as a proprietary freemium upsell model, with very modest benefits from the open source project: very few contributions, almost none to the core code base, and only participation on the fringes. In fact, the approach is so limiting on the open source side of the house, that one wonders why the vendor bothered to open source any code at all. With a diminished upside for the open source code comes a diminished number of potential customers, resulting in diminishing potential revenue. In fact, the open core model seems like a way to guarantee that the resulting product will be limited in scope.
Open core was all the rage in the mid-2000s, when several software vendors were able to score millions of dollars in venture funding with that strategy. What happened next was not pretty: many failed spectacularly, some limped along for years, and a very lucky few were acquired. There has, to date, never been a successful open core company. That is, none have ever reached profitability with their own products.
Above-mentioned limitations also served to limit the adoption of the open source pieces, severely restricting their influence to only a very few number of projects and products. Even in those projects that did have a significant influence, ie. MySQL, they were bailed out by spectacular acquisitions. While they were likely never destined to be profitable, they were valuable to their suitors because of their large user bases. In those cases, the respective startups were much better about pushing a fully-functional free version but still found capitalizing on products derived from them to be a difficult task.
The primary problem with open core is that, in addition to being very difficult to capitalize on, it left a bad taste in the mouth of investors, leading them to conclude that this open source thing isn:undefined:’:undefined:t very profitable. Indeed, the number of funded pure open source software vendors has declined in recent years, and the takeaway from the investor and even the entrepreneur community is that :undefined:“:undefined:open source doesn:undefined:’:undefined:t pay.:undefined:”:undefined: The result is that whenever a company shows up with an open source product, they are immediately pushed into the open core model, even with its history of failure, or a hybrid approach, which I:undefined:’:undefined:ll describe in detail in the next section. The fundamental question to the open core approach is thus: Even with a highly successful open source :undefined:“:undefined:core,:undefined:”:undefined: is there a means to drive enough revenue from the derivative product to sustain the growth of a company? The answer, thus far, is :undefined:“:undefined:no.:undefined:”:undefined:
A HYBRID APPROACH
In the wake of the open core failures, the next generation of open source software vendors took a slightly different approach that attempts to combine the best of the open source and proprietary worlds. Instead of creating a severely limited (and probably unsuccessful) open core platform, the newer open source software vendors have been much smarter: create proprietary products or services based on collaboratively-developed open source platforms. This approach carries several advantages over open core. Instead of working so hard to spread a limited platform not usable by most people, take a successful open source platform and build applications, services or management on top of that. These applications can be proprietary, open source or even open core, but the platform from which they derive their relevance is fully open source and open to all collaborators. This approach is popular with many companies that have built tooling around various pieces of the Apache Hadoop and OpenStack ecosystems. At the center of this approach is an open source platform that is produced in a truly collaborative sense, open to all comers and, most importantly, nurtures the seeds of innovation that come from a variety of sources.
There are quite a few companies currently attempting to create products around these and other ecosystems, and time will tell which of them will be successful. There are open questions as to whether a proprietary product, even one built on top of an open source ecosystem of projects, can, much like its open core cousin, be successful enough to sustain a growing company. The early results suggest that it:undefined:’:undefined:s quite challenging, although it:undefined:’:undefined:s too early yet to say one way or the other. There are certainly benefits from such an approach, but subject to some of the same limitations as open core. The final results are not in, but we have yet to see a company fully succeed on its own, without acquisition, and turning a profit that sustains growth over time. I suspect that the difficulties of the open core approach will rear their ugly heads here, too. If the open source platform is given away for free, are all derived products seen as limited offerings that don:undefined:’:undefined:t offer enough value to command high revenue from customers? I don:undefined:’:undefined:t know yet, but I have doubts about the approach.
The beauty of the hybrid approach is that the base open source platform is not limited in scope and can build a strong community identity. The downside is that it is not yet clear if simply adding management or other pluggable pieces on top of an open source platform is enough to create a product for which a vendor can charge significant revenue. I:undefined:’:undefined:m drawing a distinction, somewhat arbitrarily, between the above and engineering teams that consume open source libraries as they build out proprietary products. The former derives its core functionality from open source platforms and the latter merely plugs in open source components where appropriate. That:undefined:’:undefined:s a well-established model and has many successful (and unsuccessful) examples to refer to.
OPEN SOURCE PLATFORMS AS A PRODUCT
My biggest problem with the open core and hybrid models described above is that they both assume there is no intrinsic value in the platform itself. (Pay attention! This is probably the key to the entire guide.) In both the open core and hybrid models described above, it is assumed that no one will buy the platform and that all product value stems from the additional applications, whether proprietary or open source, that the vendors have created and applied to the platform. In other words, these two models assume that open source software is composed only of commodity bits that no one will pay for; that anything open source is not something worth spending money on. I believe that assumption is false.
Will customers pay for an open source platform without proprietary applications or tooling? Everyone who invested in or started an open core or hybrid application company seems to think not, but let:undefined:’:undefined:s consider the evidence. If open core and hybrid approaches have never actually delivered an outright success story, does it not lead one to believe that perhaps both approaches are lacking? If that is true, and if open source is truly at the center of data center technology innovation, which I believe it is, what does that leave? I am not discounting the added value of proprietary software on top of open source platforms; I am suggesting that the open source platforms themselves are inherently valuable and can be sold as products in their own right, if done correctly. More details on that in the next chapter!
:undefined:“:undefined:There isn:undefined:’:undefined:t a one size fits all model. I can:undefined:’:undefined:t stand up in front of a crowd and say, :undefined:’:undefined:this is how you should do it,:undefined:’:undefined:”:undefined: :undefined:–:undefined:Jeff McAffer, director of theOpen Source Programs Office at Microsoft.
Creating a Product
What is the value of an open source platform? Would someone ever pay for it outright? Indeed, how does someone use an open source platform? Let:undefined:’:undefined:s start with the oldest and most significant of open source platforms, Linux. For the longest time, Linux was dismissed as a non-viable data center technology for :undefined:“:undefined:enterprise-grade:undefined:”:undefined: or :undefined:“:undefined:business critical:undefined:”:undefined: operations because it had no support model, no applications that ran on it and no obvious way to make money from it. How, then, did Linux become the engine that fueled the growth of the world:undefined:’:undefined:s open source ecosystem, an ecosystem that could be valued in the trillions of dollars, when calculating the percentage of the world:undefined:’:undefined:s economy that relies on open source systems? Was it just a bunch of hippies sharing the software and singing about it, or were there clear business reasons paving the way to its eventual victory?
If we flash back to 1999 or 2000, it:undefined:’:undefined:s sometimes difficult to remember that Linux was, while ascendant, very limited and not the runaway juggernaut we know of today. There were many Linux distributions that packaged Linux for end users, but none of them could boast of a product that made any substantial money. They were mostly packaged in boxed sets and distributed through big box stores, unless you were lucky enough to have a big enough internet connection to download your own copy. The idea of subscription-based enterprise software had not yet landed, and the only business model that most people understood for open source software was product support and services, neither of which were particularly easy to scale, especially for startup companies with limited resources.
It is in this context that we examine how some enterprise-class open source products started to make headway and achieve something resembling success. How did this happen? One thing is clear, the successful open source products never ever discount the intrinsic value of a scalable, world-class, reliable open source platform. Open source software may be usable, or it may not, but it:undefined:’:undefined:s open source bona fides have nothing to do with its usability. Or consistency. Or reliability. Or manageability. And most enterprises have a different view of :undefined:“:undefined:usable:undefined:”:undefined: from your average computer enthusiast or hobbyist. For an enterprise, :undefined:“:undefined:usable:undefined:”:undefined: means being able to achieve scale without having to resort to a whole lot of customization or private consulting. It should :undefined:“:undefined:just work:undefined:”:undefined: and fit neatly within an enterprise:undefined:’:undefined:s existing workflow. Simply releasing the source code of an open source project does not imply any kind of guarantee of usability. Sure, enterprises can throw resources into making an open source project work for them, or they can pay someone who:undefined:’:undefined:s already created a product that can do that more quickly.
OPEN SOURCE: IT:undefined:’:undefined:S ABOUT WAY MORE THAN CODE
This brings us to the most important question regarding open source products: how do you differentiate between the code that:undefined:’:undefined:s available to everyone and a product derived from that code? This is the part that everyone gets hung up on and often leads to poor decisions. After all, if everyone has the code, then they have access to everything they need to run it, right? Thus obviating the need for a product? Not necessarily. Creating a product is a messy, messy business. There are multiple layers of QA, QE, and UX/UI design that, after years of effort, may result in something that somewhat resembles a usable product.
What the hybrid approach mentioned in the previous chapter gets right about open source is that you can:undefined:’:undefined:t inject artificial limitations on an open source project and expect it to grow into an ecosystem. What it gets wrong, however, is the assumption that no one will pay for the base platform. A vendor with this approach assumes that anyone can install the platform on their own and will never need to pay for it. This is simply false. Getting a platform that is certified against an array of complementary technologies, software components, and hardware takes significant time and effort. Any enterprise that values its IT systems and any independent software vendor that wants to make sure its applications work with the platform will gladly choose the certified solution that fits their needs. (Yes, I know, there are a significant number of organizations that choose un-certified goods. More on them later.) As most IT folks know, the cost of software acquisition, proprietary or open source, is far less than the total cost of operation (TCO) over time. Thus, if paying some more upfront means reducing the TCO over time, that:undefined:’:undefined:s a trade any CIO will gladly make.
(At the risk of losing readers here, the accounting calculations around software amortization are in the favor of upfront costs and then deducting the declining value of the software over time as a :undefined:“:undefined:loss,:undefined:”:undefined: whereas paying for continuing services over the years will track wage increases over time and cannot be amortized. Thus, some upfront costs with lower TCO makes sense for the bean counters out there, which is a point in favor of purchasing open source products, not necessarily services. Unfortunately, annual renewal fees may muddy this calculation, although I bet that the TCO aspect is still in favor of products, not services, even with annual renewals. Can you tell I married a CPA?)
So how do you know if you:undefined:’:undefined:re using the particular brand of open source software that is certified for your infrastructure? After all, if it:undefined:’:undefined:s open source code, then anyone can change it at any time, and you never know what you:undefined:’:undefined:re getting, right? Actually, that:undefined:’:undefined:s not true at all, and is one of the great myths of open source software. This is where copyright and trademark law come into play, and any smart open source vendor knows how to leverage the tools of intellectual property law to their advantage.
Let:undefined:’:undefined:s imagine you have open source project :undefined:“:undefined:foo:undefined:”:undefined: and you want to transform your highly successful open source project into a software business. You:undefined:’:undefined:ve looked at building services around support and customization, but frankly you have higher ambitions than a mom-and-pop software services and support business. No, you want the big enchilada and are obsessed with changing the world. How do you sell a commercial version of this without resorting to the open core or hybrid approaches, because of their inherent deficiencies?
If you take :undefined:“:undefined:foo,:undefined:”:undefined: devote many man-hours to polishing the software, and then create this splendid unicorn, how do you sell it in a way that connotes its value above and beyond the open source project? Do you call it :undefined:“:undefined:foo supreme:undefined:”:undefined: :undefined:“:undefined:foo super:undefined:”:undefined: or just :undefined:“:undefined:foo enterprise?:undefined:”:undefined: Think about this very, very carefully. You:undefined:’:undefined:ve spent much time, resources and money making :undefined:“:undefined:foo:undefined:”:undefined: into something most enterprises can use. If you call the product something that evokes the name :undefined:“:undefined:foo,:undefined:”:undefined: what are you saying? Someone might get the impression that it:undefined:’:undefined:s really just :undefined:“:undefined:foo:undefined:”:undefined: with some extra naming thrown in but not much else. Does the name :undefined:“:undefined:foo ___:undefined:”:undefined: confer the effort undertaken to make sure it works cleanly? This has been the great undoing for many open source vendors, from MySQL Enterprise to Hyperic Enterprise Edition and on and on. It also leads to the impression that just plain :undefined:“:undefined:Foo:undefined:”:undefined: is somehow crippled or otherwise less valued. Remember, you want your open source project and community to be highly valued, otherwise you lose the benefit of an open source strategy and fall back to the problems with open core.
Imagine an alternative scenario. You know that :undefined:“:undefined:Foo:undefined:”:undefined: is world class software, and you have a really large user and developer base. Now, instead of calling it :undefined:“:undefined:Foo X:undefined:”:undefined: let:undefined:’:undefined:s just call it :undefined:“:undefined:Bar.:undefined:”:undefined: What now? By naming it :undefined:“:undefined:Bar:undefined:”:undefined: you:undefined:’:undefined:ve now created an entire namespace reserved for your commercial efforts. There:undefined:’:undefined:s no more confusion in the market around what is paid for and what is free. The user and developer communities that either aren:undefined:’:undefined:t ready to buy a product yet or never will know that :undefined:“:undefined:Foo:undefined:”:undefined: is a dynamic open source community with a product that will satisfy their needs. Your prospective customers, the guys who just want something that works, know that they want to check out :undefined:“:undefined:Bar:undefined:”:undefined: because that:undefined:’:undefined:s the thing they:undefined:’:undefined:re looking for.
Every day, thousands upon thousands of enterprises are just looking for a product that works :undefined:–:undefined: why not give it to them? Perhaps they don:undefined:’:undefined:t care if it:undefined:’:undefined:s open source, because they:undefined:’:undefined:re simply looking for value from their software vendors. They won:undefined:’:undefined:t get confused by the name :undefined:“:undefined:Foo:undefined:”:undefined: because it:undefined:’:undefined:s either outside of their day-to-day work, or if they do know about it, they want the certified thing that they know provides a reasonable guarantee about how well it will work in practice. It also helps that the only way to get :undefined:“:undefined:Bar:undefined:”:undefined: :undefined:–:undefined: the certified thing that:undefined:’:undefined:s been tested against a wide array of different technologies :undefined:–:undefined: can only be obtained through entering into a commercial contract.
This is where protecting your trademark is essential. You are the one who creates the strategy for :undefined:“:undefined:Bar,:undefined:”:undefined: you:undefined:’:undefined:re the one who invests hours into quality assurance and testing, and you:undefined:’:undefined:re the one who:undefined:’:undefined:s taking on the risk by making a substantial investment in the product. Therefore, you are the only one who gets to create a product called :undefined:“:undefined:Bar,:undefined:”:undefined: assuming, of course, that you took the time to register the mark in the first place. It:undefined:’:undefined:s equally important to protect the mark of the open source platform, Foo. The last thing you want is some other company claiming that their version of :undefined:“:undefined:Foo:undefined:”:undefined: is :undefined:“:undefined:just like :undefined:’:undefined:Bar:undefined:”:undefined:! Thus, it:undefined:’:undefined:s important that whoever controls the mark for :undefined:“:undefined:Foo,:undefined:”:undefined: whether it:undefined:’:undefined:s a software vendor or a vendor-neutral organization, also engages in vigorous defense of the trademarks.
SECRETS TO OPEN SOURCE PRODUCTS
Creating, marketing and selling a product is no different in the open source space from any other endeavor. What trips up many software vendors is that theythink it:undefined:’:undefined:s much different, and because of that are led down a path of landmines and less successful strategies.
Considering the previous section about trademarks and namespace, is it really just about the name? Well, yes and no. Calling a product by a different name can be an important step that leads you in the right direction. After the decision to name your product something else from the open source platform, you invariably face a cascade of ramifications that force you to think about product development in a more positive manner, instead of simply thinking defensively about how to prevent your open source project from becoming :undefined:“:undefined:too successful.:undefined:”:undefined: After naming a product, you need to develop tools specific to your product name, including branding, documentation, etc. You:undefined:’:undefined:ll need to facilitate a community around your product, because you don:undefined:’:undefined:t want to give your customer community the idea that all they need to do is consult with your open source users. (While helpful, you need your customers to buy into the notion that you, not the volunteer community, are the final word on your product.).
And then you face the decision of what to do with the code itself. If you:undefined:’:undefined:re taking code from an open source project, don:undefined:’:undefined:t you have to release that code as open source? In many cases, yes, but that shouldn:undefined:’:undefined:t affect your product strategy. By all means,do release all of your source code, especially the bugs you find from your top-class QA and certification infrastructure. While you may release all of your source code, that doesn:undefined:’:undefined:t mean you have to release your full test plans, or your QA strategies, or your particular continuous integration suite, or anything else.
And that is the big secret of open source: It:undefined:’:undefined:s about way more than the code. In order to build a certified, predictable, manageable product that :undefined:“:undefined:just works,:undefined:”:undefined: it requires a lot more effort than just writing good code, although that is the starting point. You:undefined:’:undefined:re not just testing your code, rather you are testing how well your code integrates with the vast array of components that enterprises are forced to face down on a daily basis. You can release all the code you want, and you don:undefined:’:undefined:t have to worry about competitors :undefined:“:undefined:stealing:undefined:”:undefined: your productization process. Some may try, but if they:undefined:’:undefined:re capable of that, then frankly, they:undefined:’:undefined:re probably better equipped to sell an open source product in the first place (although nobody likes to hear that).
In the next chapter, I:undefined:’:undefined:ll go into more detail about the process of differentiating your product from the project(s) you rely on, and how users (freeloaders) of the open source code are actually an essential part of your product-building strategy.
The New, Open Platform Model
I:undefined:’:undefined:ve been saying for some time now that open source was not about innovation, but rather freedom. It was the freedom to deploy what you want, when you want it that led to the massive global adoption of open source platforms. I get more than a little peeved, then, when I still see references to the open source community in mainstream media circles that imply there:undefined:’:undefined:s no money in free software. This is what economist Paul Krugman would call a :undefined:“:undefined:zombie lie:undefined:”:undefined: :undefined:–:undefined: an argument that just won:undefined:’:undefined:t go away no matter how many times you kill it with facts.
When you add up all of the software vendors, service providers, consultants, systems integrators, enterprise IT veterans, and everyone else who works with free software, you:undefined:’:undefined:re talking about a total ecosystem that measures in the TRILLIONS of dollars, worldwide. We:undefined:’:undefined:re talking an economy that, if measured as a nation-state, either comes close to or eclipses that of the United States GDP. The sheer amount of financial transactions, internet business, government agencies, archives and every type of industry dependent on free software is staggering.
And yet, we still hear about how open source:undefined:’:undefined:s success is all just about price :undefined:–:undefined: something that couldn:undefined:’:undefined:t be sold because no one would pay for it. In my talks about open source innovation, I always like to point out that open source and free software are notjust about price, although that is certainly influential. The reason we know it:undefined:’:undefined:s not just about price is that we can easily compare results with a well-known product marketing tactic, the :undefined:“:undefined:freemium:undefined:”:undefined: model. The freemium model is all about giving away something of limited value to be consumed and, hopefully, lead the user to buy the full product in the future. There is certainly a place in the world for freemium products, as Splunk has shown, but freemium didn:undefined:’:undefined:t win the day :undefined:–:undefined: open source did. When you do any basic analysis of customers and how they acquire solutions, it:undefined:’:undefined:s easy to see why: as a potential customer, why on earth would I ever handcuff myself to a single vendor when I:undefined:’:undefined:m not even sure I like your product? And to invest any time in a freemium product means necessarily losing all of that effort if I then decide to go on to something else. It:undefined:’:undefined:s much better to spend time and effort that can be recouped should I decide to go with something else. It:undefined:’:undefined:s this value :undefined:–:undefined: freedom :undefined:–:undefined: that makes open source software, even open source software you pay money for, inherently more valuable and cheaper over the long-run than freemium products. Thus, we know that the act of open sourcing your software carries with it inherent value for the end user or developer.
This is what the open core folks completely miss :undefined:–:undefined: they see open source as just another freemium distribution tool, when it:undefined:’:undefined:s so much more than that. By devaluing the open source platform, they devalue the very thing that customers actually want. They think about open source solely as a distribution method or, worse, as a way to get free labor so that others will perform the mundane labor of :undefined:“:undefined:whitewashing our fence.:undefined:”:undefined: Word to the wise: NO ONE is going to whitewash your stupid fence, okay? You don:undefined:’:undefined:t get value in return without first giving up some control.
Now that we:undefined:’:undefined:ve settled that, let:undefined:’:undefined:s get on with making the sausage, shall we?
SOURCE CODE NUTS AND BOLTS
You may be thinking to yourself, it:undefined:’:undefined:s all well and good that free software has inherent value, yada yada yada, but how can I use that value to profit handsomely? As we turn our eyes to the making of the sausage, we know that the making of the sausage is never pretty, even if we do rather fancy the final product. Making open source products is no different. I:undefined:’:undefined:ve written the following as a suggestion of how to do it, not necessarily the only, or even best, way.
Now that we:undefined:’:undefined:ve investigated the idea of productization (see Chapter 3), how does it impact engineering practices? For one thing, if you:undefined:’:undefined:re creating a product with full test suites and certification tests, you probably can:undefined:’:undefined:t simply use the same release branch as the open source platform. This is another mistake many companies frequently make :undefined:–:undefined: they think that productization is as simple as packaging up the open source bits and, presto-change-o, let that money maker roll! The road to hell is littered with the carcasses of a thousand companies that thought productization was just a few sexy demos and some packaging of the bits.
Productization of open source software requires a bit of process hacking and, yes, complexity. First, a diagram of how many open source projects release code:
Figure 2: How many open source projects release code.
The open source process will be continuously producing new versions with multiple branches of code. You, the product vendor, must make some interesting choices:
- How do you decide which branch(es) to use for your product?
- How do you decide what to do with the source code changes you make?
- OMG, aren:undefined:’:undefined:t you making it easier for people to take your hard work and use it free of charge???
The answers, in order:
- It depends.
- You commit your changes, bug fixes and improvements to their respective upstream
Again, the object here is not to cripple the upstream open source project. Doing so would badly damage your own product, seeing as how you depend on the open source code. You also don:undefined:’:undefined:t want to maintain your source code changes privately, carrying them forward in your locked source repository, however valuable they might be. You:undefined:’:undefined:ll end up with a continuous code fork that:undefined:’:undefined:s never merged back into the open source code, and you:undefined:’:undefined:ll be maintaining that code fork for all eternity.
You may think that this is no big deal, but rest assured, the last thing you want to saddle your development and product management teams with is an inordinate amount of technical debt that grows substantially over time. You made the decision to create a product from an open source project, now deal with it. That means working to simultaneously improve the open source project in addition to your product. The good news is that by making the decision to occupy a separate product namespace, you no longer have to :undefined:“:undefined:prove:undefined:”:undefined: which version is the product that you:undefined:’:undefined:re selling. You:undefined:’:undefined:re free to continue to work on both project and product, with both evolving, without cannibalizing your product efforts. Remember, you:undefined:’:undefined:re selling a product that provides value for your customers, not source code. While source codedoes provide some value, it:undefined:’:undefined:s not the only thing you:undefined:’:undefined:re selling.
Once you have the engineering processes all worked out, it should look a bit like this:
Figure 3: The decision to create a product from an open source project means working to simultaneously improve the open source project in addition to your product.
The key point: :undefined:“:undefined:Bar:undefined:”:undefined: remains a stable branch that you do all of you testing, certification, QA/QE, packaging, product marketing, etc. It remains relatively static, especially in comparison to the upstream branches. This is a feature, not a bug. The open source releases will probably function similarly to your product branch, but without the QA/QE testing and other hardening that you:undefined:’:undefined:ve baked into your productization process, there:undefined:’:undefined:s no guarantee that it will work in all the environments you sell into. Again, it:undefined:’:undefined:s about theprocess more than just the code. I:undefined:’:undefined:ll leave it as an exercise for the reader as to what your specific process should be. You:undefined:’:undefined:re selling a product that is certified against many other software products and hardware configurations.
To further visualize this, forget the source code branches for a bit and imagine the platform as a wholly contained thing:
Figure 4: Every day, thousands upon thousands of enterprises are just looking for a product that works :undefined:–:undefined: why not give it to them?
With that in mind, your customers are rewarded because the product experience will be highly consistent, stable and not shift under their feet, especially between releases. Your ISVs and other external developers that rely on your product will also appreciate the fact that the API won:undefined:’:undefined:t be undergoing sudden switches, and the testing suites will help to maintain that level of consistency. And you, the vendor, will be rewarded, because it:undefined:’:undefined:s much easier to provide product support for something that doesn:undefined:’:undefined:t change much over time, until of course, it:undefined:’:undefined:s time to release a new version.
The advantages are obvious, after you start down this path. You:undefined:’:undefined:re still building and maintaining your open source code, and you:undefined:’:undefined:re creating a place for customers to come and benefit from all the open source contributions you:undefined:’:undefined:ve made. One anecdote to share here: Back in the day, a certain software vendor split its community product from its enterprise product. At the time, it was a controversial move, but as one salesperson who was there related to me, the :undefined:“:undefined:split:undefined:”:undefined: allowed her to focus on selling products to customers who wanted to buy, instead of spending time debating the merits of the GPL with people who were never going to buy anything. Everyone won: The market was less confused about what was sold and what was free, the company won because its product became a runaway success, customers won because they benefited from open source innovation, and the community won because they got a great free product that was produced in the open source way with transparent governance.
By now, you may think that I, as a free software bigot, would never endorse a proprietary strategy around free software. After all, that:undefined:’:undefined:s why I dislike open core, right? Actually, I dislike open core because it doesn:undefined:’:undefined:t work, not because it:undefined:’:undefined:s ideologically :undefined:“:undefined:impure.:undefined:”:undefined: As I mentioned, what I wrote above is not the only way to write and sell software, but it gives you a good start. Just to prove a point, I:undefined:’:undefined:m going to show you a way to utilize open source methodologies while selling proprietary software.
:undefined:“:undefined:But wait!:undefined:”:undefined: I hear you asking, :undefined:“:undefined:Didn:undefined:’:undefined:t you just say that the open core and hybrid approaches were unsuccessful? Why would we do that?:undefined:”:undefined: I:undefined:’:undefined:m going to advocate that you start from the position of the valuable open source platform as product and then build on top of that, instead of ignoring the value of the platform as one would do in open core. In other words, the core revenue driver is still the open source platform, and whatever proprietary bits you put together to sell with it serve to create a positive feedback loop, where open source platform adoption creates more potential value for your proprietary add-ons, and the more successful your proprietary add-ons, the more the open source platform becomes a larger center of gravity for its ecosystem. Of course, in this scenario, your add-ons could also be open source :undefined:–:undefined: after all, I just showed you how to make an open source product, right?
If you begin with the premise that open source platforms have great value, and you sell that value in the form of a certified software product, that:undefined:’:undefined:s just a starting point. The key is that you:undefined:’:undefined:re selling a certified version of an open source platform and from there, it:undefined:’:undefined:s up to you how to structure your product approach. If, in addition to selling the open source platform, you still want to sell proprietary applications, that:undefined:’:undefined:s entirely up to you, as long as you don:undefined:’:undefined:t choose an approach that devalues the platform itself :undefined:–:undefined: that is the key underlying difference between successful and unsuccessful approaches. Remember, successful open source platforms are very, very valuable, and enterprises appreciate (and pay for) that value.
WHAT ACTUALLY WORKS
This is not an easy process, and I would never tout it as such, but no successful product process ever is. Creating a successful product is always hard, whether open source or proprietary, but at least after reading this guide, I hope you have a better idea of how to take advantage of open source innovation and processes. At least this way, you:undefined:’:undefined:ll be using methodologies that are known to work.
The key is to make it crystal clear to your audience and market what you:undefined:’:undefined:re selling (and not selling), anticipate and remove potential confusion, and make sure your target audience understands the inherent value of your open source product. The open source platform and mixed approaches outlined above allow you, the vendor, to provide clarity, which allows your customers and community members to self-select, and makes you, and the wider ecosystem, more efficient.
If you:undefined:’:undefined:ll notice, the methodologies and strategies I:undefined:’:undefined:ve outlined above apply equally well to internal product development, designed for internal usage at your organization, and for external use by a paying customer. It doesn:undefined:’:undefined:t matter who the customer or end user is, whether they work for the same company as you or pay for your product as a customer. In Part II, I:undefined:’:undefined:m going to turn from processes for internal product development toward a discussion of external processes that affect your ability to deliver good products. We:undefined:’:undefined:ll cover how to influence open source code and utilize it for higher efficiency. In an open source world, we may depend on outside sources for software, but we have the ability to participate in those upstream sources to ratchet up the potential innovation and fully utilize the resources present in external communities. Put another way, let:undefined:’:undefined:s talk about supply chain management.
Improving Product Creation & Management
In the previous chapters, I discussed how to take open source software, crank up your product management engine, and produce shiny, polished products for use by others. But what about all that great open source software? Where does it come from, and how can you rely on it? How do you know if an upstream software project is capable of filling your needs? And how do you manage the risks that come with incorporating open source software into your products? This is where we turn to managing your software supply chain, and open source ecosystems introduce some tricky challenges that you:undefined:’:undefined:ll need to master.
Grasping the nuances of hardware supply chains and their management is straightforward:undefined:—:undefined: you essentially are tracking moving boxes. Managing something as esoteric as resources for building software with a variety of contributions made by the open source community is more amorphous.
I used to think of the supply chain for open source platforms as a single process, taking existing open source components and producing a single result, namely a product. Since then, I:undefined:’:undefined:ve begun to realize that supply chain management defines much of the open source ecosystem today. That is, those who know how to manage and influence the supply chain have a competitive advantage over those who don:undefined:’:undefined:t do it as well, or even grasp what it is.
THE OPEN SOURCE SOFTWARE SUPPLY CHAIN
In the hardware world, supply chains and component sourcing is a necessary part of the business. A well-managed supply chain is crucial to business success. How do you determine ideal pricing, build relationships with the right manufacturers, and maximize the efficiency of your supply chain so you:undefined:’:undefined:re able to produce more products cheaply and sell more of them? Apple:undefined:’:undefined:s supply chain is legendary:undefined:—:undefined:they were one of the first to realize that a key to competing is building out an effective supply chain of parts, and they did it at a time when Silicon Valley preferred to build most of the components themselves.
The computing industry laughed at Apple, calling them a :undefined:“:undefined:marketing company:undefined:”:undefined: that just took parts from elsewhere. These days, every hardware company has an extensive supply chain and dedicates teams of people to managing different aspects of it. The irony is that Apple is probably more innovative on supply chain logistics than they are on actual product. To put it another way, their innovation in supply chain logistics gave them a great platform from which to launch innovative products.
In software, the supply chain has traditionally been much simpler than that for hardware. Whereas hardware supply chains source parts from many different partners in different geographies, traditional software supply chains have mostly defined the process of creating software made in-house, with some third-party software from vendors via commercial license agreements. In this model, most of the supply chain is defined by software sources inside the company itself, possibly from multiple engineering teams. With a small percentage of software coming from outside the company, the process of defining a supply chain was mostly left to internal product management and engineering teams. Yes, licensing software from third-party vendors required license compliance checks as the product was assembled, which meant getting legal approval for any software license agreement. This process was well-established with common practices, with many of the license agreements derived from the same legal template that legal and product management teams had experience with:undefined:—:undefined:but then open source became a lot more common, and everything changed.
Software supply chain management went from a relatively simple, well-defined process, like this:
To a chaotic, multi-layered mix of unproven licenses, untested software repositories, and a Wild West mentality that software supply chain teams were ill-equipped to manage. The funnel is now shaped more like:
As you can see, at least one extra layer of complexity has now been added.
You might think that this wouldn:undefined:’:undefined:t be the case:undefined:—:undefined:that simply plugging in open source components would be a direct 1:1 replacement for the traditional method of licensing agreements from third parties, but there:undefined:’:undefined:s an extra wrinkle to take under consideration. With regards to upstream open source components, many of these raw source repositories have no mechanism for commercial support. As the supply chain or product manager you have no single :undefined:“:undefined:throat to choke:undefined:”:undefined: when things go wrong, as they inevitably do.
ROLE OF THE SOFTWARE SUPPLIER
You have two basic choices: either build your own internal means of vetting the code and applying product management processes, or rely on an intermediary to perform that function. You can make an argument for creating the processes for pulling down source code, determining legal compliance, applying patches, and getting it ready for production yourself, but it is expensive from a human resources point of view. You should base your decision of whether or not to self- direct the process on its strategic importance to the company and some ROI analysis: If you build a team to manage that process for some software components, will you see a sufficient return on that investment?
In many cases, companies make the decision to go with an intermediary to vet the code, perform some quality assurance engineering, and apply whatever glue code is necessary to make it work satisfactorily. This is where software distributions come into play, filled by companies like Red Hat, SUSE, and Canonical. People often ask me why these companies are essential, and I hope you can see now why that is the case:undefined:—:undefined:because without them, the open source supply chain falls flat.
Without distributions such as Red Hat Enterprise Linux operating system (RHEL) or its equivalent, companies creating products for either internal or external consumption would have to create from whole cloth the processes for pulling in these components, vetting them, hiring the in-house expertise to enhance them, and then perform the gluing process that allows a company to push a release into production. In this scenario, many companies determine that simply letting a distribution company fill in that layer and manage that part of the process is easier and more efficient.
:undefined:“:undefined:You must decide proactively which supply chains to invest in and which to ignore, while also reacting to rapid changes in relied- upon ecosystems.:undefined:”:undefined:
Besides, that:undefined:’:undefined:s just in the case of the open source :undefined:“:undefined:user,:undefined:”:undefined: not supplier. Here:undefined:’:undefined:s where it gets really interesting. At what point does a company that uses or inserts open source code into its products decide that it wants to become an influencer or supplier in the supply chain, and what:undefined:’:undefined:s the best way to do that? One potential conclusion is that to be successful at open source products, you must master the ability to influence and manage the sundry supply chains that ultimately come together in the product creation process. Once done, the end product you produce is able to benefit from your participation on the left side of the supply chain funnel directly.
ACHIEVING MAXIMUM EFFICIENCY
Instead of maintaining a standard set of patches that you continuously apply to every new vetted upstream component, why not contribute those into the upstream components, making them more easily maintained outside of your organization? If you:undefined:’:undefined:ve already made the decision that working with downstream software distributions is easier than sourcing and vetting the source code yourself, isn:undefined:’:undefined:t there a direct benefit from working with the distribution vendor to get your code contributed upstream? Doing so results in the added benefit of other groups managing and supporting the maintenance of this code, freeing up your engineers to work on the interesting stuff that directly adds value to your product. Whether you sell software, sell software consulting services, or create an open source community, studying your supply chain and learning the best way to manage it is worth your time.
Hardware supply chains, based on physical materials, are more static in nature compared to software supply chains. The open source software supply chain is by definition very fluid. Projects wax and wane over time, and you, whether business person, developer, or community leader, must decide which pieces are worth your time and when it:undefined:’:undefined:s best to cut your losses and switch out one supply chain for another. Which components you use, modify, and create from scratch will all depend on the state of the supply chain that make up your project or product. The process is both proactive and reactive. You must decide proactively which supply chains to invest in and which to ignore, while also reacting to rapid changes in relied -upon ecosystems. Those that master this art will, in theory, have the most efficient processes and, like Apple, will win out in the end. The desired result is achieving a level of efficiency that gives your project team the means to innovate more.
If you can efficiently manage your software component supply chains and simultaneously create an efficient supply chain funnel that allows for fast iteration on a product under development, your product creation and management processes will improve. This management requires the investment of resources in not just your product:undefined:’:undefined:s Quality Engineering (QE) team and supply chain funnel, but also in the supply chains that form the components you use to create your product.
Becoming a Supply Chain Influencer
I would bet that whoever is best at managing and influencing the open source supply chain will be best positioned to create the most innovative products. In this final chapter, I:undefined:’:undefined:ll explain why you should be a supply chain influencer, and how your organization can be an active participant in your supply chain.
In my previous chapter I discussed the basics of supply chain management, and where open source fits in this model. I left readers with this illustration of the model:
The question to ask your employer and team(s) is: How do we best take advantage of this? After all, if Apple can set the stage for its dominance by creating a better hardware supply chain, then surely one can do the same with software supply chains.
EVALUATING SUPPLY CHAINS
Having worked with developers and product teams in many companies, I learned that the process for selecting components that go into a product is haphazard. Sometimes there is an official bake-off of one or two components against each other, but the developers often choose to work with a product based on :undefined:“:undefined:feel:undefined:”:undefined:. When determining the best components, you must evaluate based on those projects:undefined:’:undefined: longevity, stage of development, and enough other metrics to form the basis of a :undefined:“:undefined:build vs. buy:undefined:”:undefined: decision. Number of users, interested parties, commercial activity, involvement of development team in support, and so on are a few considerations in the decision-making process.
Over time, technology and business needs change, and in the world of open source software, even more so. Not only must an engineering and product team be able to select the best component at that time, they must also be able to switch it out for something else when the time comes:undefined:—:undefined:for example, when the community managing the old component moves on, or when a new component with better features emerges.
WHAT NOT TO DO
When evaluating supply chain components, teams are prone to make a number of mistakes, including these common ones:
- Not Invented Here (NIH): I can:undefined:’:undefined:t tell you how many times engineering teams decided to :undefined:“:undefined:fix:undefined:”:undefined: shortcomings in existing supply chain components by deciding to write it themselves. I won:undefined:’:undefined:t say :undefined:“:undefined:never ever do that,:undefined:”:undefined: but I will warn that if you take on the responsibility of writing an infrastructure component, understand that you:undefined:’:undefined:re chucking away all the advantages of the open source supply chain:undefined:—:undefined:namely upstream testing and upstream engineering:undefined:—:undefined:and deciding to take on those tasks, immediately saddling your team (and your product) with technical debt that will only grow over time. You:undefined:’:undefined:re making the choice to be less efficient, and you had better have a compelling reason for doing so.
- Carrying patches forward: Any open source-savvy team understands the value of contributing patches to their respective upstream projects. When doing so, contributed code goes through that project:undefined:’:undefined:s automated testing procedures, which, when combined with your own team:undefined:’:undefined:s existing testing infrastructure, makes for a more hardened end product. Unfortunately, not all teams are open source-savvy. Sometimes these teams are faced with onerous legal requirements that deter them from seeking permission to contribute fixes upstream. In that case, encourage (i.e., nag) your manager to get blanket legal approval for such things, because the alternative is carrying all those changes forward, incurring significant technical debt, and applying patches until the day your project (or you) dies.
- Think you:undefined:’:undefined:re only a user: Using open source components as part of your software supply chain is only the first step. To reap the rewards of open source supply chains, you must dive in and be an influencer. (More on that shortly.)
EFFECTIVE SUPPLY CHAIN MANAGEMENT EXAMPLE: RED HAT
Because of its upstream-first policies, Red Hat is an example of how both to utilize and influence software supply chains. To understand the Red Hat model, you must view their products through a supply chain perspective.
Products supported by Red Hat are composed of open source components often vetted by multiple upstream communities, and changes made to these components are pushed to their respective upstream projects, often before they land in a supported product from Red Hat. The workflow looks somewhat like:
There are multiple reasons for this kind of workflow:
- Testing, testing, testing: By offloading some initial testing, a company like Red Hat benefits from both the upstream community:undefined:’:undefined:s testing, as well as the testing done by other ecosystem participants, including competitors.
- Upstream viability: The Red Hat model only works as long as upstream suppliers are viable and self-sustaining. Thus, it:undefined:’:undefined:s in Red Hat:undefined:’:undefined:s interest to make sure those communities stay healthy.
- Engineering efficiency: Because Red Hat offloads common tasks to upstream communities, their engineers spend more time adding value to products for customers.
To understand the Red Hat approach to supply chain, let:undefined:’:undefined:s look at their approach to product development with OpenStack.
Curiously, Red Hat:undefined:’:undefined:s start with OpenStack was not to create a product or even to announce one; rather, they started pushing engineering resources into strategic projects in OpenStack (starting with Nova, Keystone, and Cinder). This list grew to include several other projects in the OpenStack community. A more traditional product management executive might look at this approach and think, :undefined:“:undefined:Why on earth would we contribute so much engineering to something that isn:undefined:’:undefined:t established and has no product? Why are we giving our competitors our work for free?:undefined:”:undefined:
Instead, here is the open source supply chain thought process:
- Step 1: Look at growth areas in the business or largest product gaps that need filling. Is there an open source community that fits a strategic gap? Or can we build a new project from scratch to do the same? In this case, Red Hat looked at the OpenStack community and eventually determined that it would fill a gap in the product portfolio.
- Step 2: Gradually turn up the dial on engineering resources. This does a couple of things. First, it helps the engineering team get a sense of the respective projects:undefined:’:undefined: prospects for success. If prospects aren:undefined:’:undefined:t good, the company can stop contributing, with minimal investment spent. Once the project is determined to be worth the investment, the company can ensure its engineers will influence current and future development. This helps the project with quality code development, and ensures that the code meets future product requirements and acceptance criteria. Red Hat spent a lot of time slinging code in OpenStack repositories before ever announcing an OpenStack product, much less releasing one. But this was a fraction of the investment that would have been made if the company had developed an IaaS product from scratch.
- Step 3: Once the engineering investments begin, start a product management roadmap and marketing release plan. Once the code reaches a minimum level of quality, fork the upstream repository and start working on product-specific code. Bug fixes are pushed upstream to openstack.org and into product branches. (Remember: Red Hat:undefined:’:undefined:s model depends on upstream viability, so it makes no sense not to push fixes upstream.)
Lather, rinse, repeat. This is how you manage an open source software supply chain.
DON:undefined:’:undefined:T ACCUMULATE TECHNICAL DEBT
If needed, Red Hat could decide that it would simply depend on upstream code, supply necessary proprietary product glue, and then release that as a product. This is, in fact, what most companies do with upstream open source code; however, this misses a crucial point I made previously. To develop a really great product, being heavily involved in the development process helps. How can an organization make sure that the code base meets its core product criteria if they:undefined:’:undefined:re not involved in the day-to-day architecture discussions?
To make matters worse, in an effort to protect backwards compatibility and interoperability, many companies fork the upstream code, make changes and don:undefined:’:undefined:t contribute them upstream, choosing instead to carry them forward internally. That is a big no-no, saddling your engineering team forever with accumulated technical debt that will only grow over time. In that scenario, all the gains made from upstream testing, development and release go away in a whiff of stupidity.
BECOME THE SUPPLY CHAIN
Once you begin to understand Red Hat:undefined:’:undefined:s approach to supply chain, which you can see manifested in its approach to OpenStack, you can understand its approach to OpenShift. Red Hat first released OpenShift as a proprietary product that was also open sourced. Everything was homegrown, built by a team that joined Red Hat as part of the Makara acquisition in 2010.
The technology initially suffered from NIH:undefined:—:undefined:using its own homegrown clustering and container management technologies, in spite of the recent (at the time) release of new projects: Kubernetes, Mesos, and Docker. What Red Hat did next is a testament to the company:undefined:’:undefined:s commitment to its open source supply chain model: Between OpenShift versions 2 and 3, developers rewrote it to utilize and take advantage of new developments from the Kubernetes and Docker communities, ditching their NIH approach. By restructuring the project in that way, the company took advantage of economies of scale that resulted from the burgeoning developer communities for both projects.
Instead of Red Hat fashioning a complete QC/QA testing environment for the entire OpenShift stack, they could rely on testing infrastructure supplied by the Docker and Kubernetes communities. Thus, Red Hat contributions to both the Docker and Kubernetes code bases would undergo a few rounds of testing before ever reaching the company:undefined:’:undefined:s own product branches:
The first round of testing is by the Docker and Kubernetes communities. Further testing is done by ecosystem participants building products on either or both projects. More testing happens on downstream code distributions or products that :undefined:“:undefined:embed:undefined:”:undefined: both projects. Final testing happens in Red Hat:undefined:’:undefined:s own product branch.
The amount of upstream (from Red Hat) testing done on the code ensures a level of quality that would be much more expensive for the company to do comprehensively and from scratch. This is the trick to open source supply chain management: Don:undefined:’:undefined:t just consume upstream code, minimally shimming it into a product. That approach won:undefined:’:undefined:t give you any of the advantages offered by open source development practices and direct participation for solving your customers:undefined:’:undefined: problems.
To get the most benefit from the open source software supply chain, you must be the open source software supply chain.
Throughout this guide, I:undefined:’:undefined:ve walked through both internal as well as external processes and methodologies that will help you in your quest to create better, more resilient, open source products or services. Whether you:undefined:’:undefined:re a CIO, DevOps professional, product manager, entrepreneur or otherwise tasked with creating open source products, you now have the building blocks on which to build your success. And if you:undefined:’:undefined:re an investor, you now have the basis on which to judge the product management discipline of companies in your portfolio.
Using the methods in this guide, you can now understand how to utilize platforms of innovation and more efficiently build your products with them. You:undefined:’:undefined:ll know how to separate your innovation bits from the product management bits and how they are related but not the same. And above all, you can now appreciate how source code is not product :undefined:—:undefined: although it:undefined:’:undefined:s a key building block.
About the Author
John Mark Walker is a noted open source product, community, and ecosystem expert and has built numerous open source communities, launched new product initiatives, and implemented collaborative processes that yielded more efficient product development and higher innovation. You will often find him in the halls of various open source conferences, as he much prefers the hallway track to actual talks, talking to people doing interesting things. A recognized thought leader, he wrote the seminal articleThere Is No Open Source Community and has spoken at numerous conferences
on the subject of open source community engagement and product strategy. John Mark recently started the web site OSEN (osenetwork.com), where readers can learn more about creating products and services with open source software: supply chain efficiency, open source product management, inner source principles, and the value of increasing your employees:undefined:’:undefined: open source participation.
When he:undefined:’:undefined:s not thinking about this stuff, John Mark lives on the outskirts of Bostonia with his wife, Cathy, and their two children, Jackie and Cary.
Make ISO from DVD
In this case I had an OS install disk which was required to be on a virtual node with no optical drive, so I needed to transfer an image to the server to create a VM
Find out which device the DVD is:lsblk
Output:NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 465.8G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 464.8G 0 part ├─centos-root 253:0 0 50G 0 lvm / ├─centos-swap 253:1 0 11.8G 0 lvm [SWAP] └─centos-home 253:2 0 403G 0 lvm /home sdb 8:16 1 14.5G 0 disk /mnt sr0 11:0 1 4.1G 0 rom /run/media/rick/CCSA_X64FRE_EN-US_DV5
Therefore /dev/sr0 is the location , or disk to be made into an ISO
I prefer simplicity, and sometimes deal with the fallout after the fact, however Ive repeated this countless times with success.dd if=/dev/sr0 of=win10.iso
Where if=Input file and of=output file
I chill out and do something else while the image is being copied/created, and the final output:8555456+0 records in 8555456+0 records out 4380393472 bytes (4.4 GB) copied, 331.937 s, 13.2 MB/s
Recreate postrgresql database template encode to ASCIIUPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1';
Now we can drop it:DROP DATABASE template1;
Create database from template0, with a new default encoding:CREATE DATABASE template1 WITH TEMPLATE = template0 ENCODING = 'UNICODE'; UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1'; \c template1 VACUUM FREEZE;