Every (Open-Source) Software Project needs a Business Model
Most software developers have little interest in entrepreneurship, but an open-source software project will survive and thrive only by delivering value into a market (users) with business partners (contributors) and against competitors (other open and closed source software). If you want to run a successful open-source project, it helps if you consider the key questions that apply when defining a commercial business model. I'll expand on Chesbrough's and Rosenbloom's list of 6 themes to demonstrate why.
1. Value proposition - a description of the customer problem, the product that addresses the problem, and the value of the product from the customer's perspective.
To an extent it's true that if you build it, they will come - but users and potential contributors may not understand it when they get there.
Many open-source software projects state what their software does (or will do) in terms that are either too brief, too vague, too complex, too aspirational or too hard to find. The value proposition is the most important part of your project, so if you can't yet explain it clearly and simply, you probably need to think about it some more until it can be clearly understood by your target market and (ideally) to some extent by anyone. Even before you share your project with the world, it's worth writing down the delivered benefits for yourself; the efforts you invest will lead to a more useful and relevant software product if it has clearly defined goals that serve some (ideally large) market of users or customers.
The best approach to clarify and refine your project's value proposition is to talk to a few people in your industry who you trust and try to describe what you want to achieve. You may get useful or poor feedback, but you use different parts of your brain when you communicate, so one way or another you will certainly clarify your project's value.
If you get only negative feedback, consider it carefully but remember that engineers and analysts just love to nit pick and rarely think about supporting the good points in a proposal; it is essential to look for feedback from non-developers and (most important) to ensure you talk to at least one woman or the rare gifted male with the ability to see the big picture, separate the wood from the trees, and (most important) park their ego at will. If no one understands your proposal or likes some aspect of it, this is a sign you need to either look for more feedback or to consider an alternative project. Not every idea has to be good, let alone great, and some ideas are simply before their time; for example, once upon a time Windows was a disruptive innovation on DOS, and internet search was expensive for the hoster and almost useless for the user - so don't give up on a great idea.
In the end, don't be concerned if you decide that your original project idea is not worth pursuing; your time is too valuable to waste on developing software that for one reason or another won't be successful - and there's plenty of real problems to solve and great software to create.
In fact the best possible outcome of this investigation is that you find an existing solution that meets some or even most of your needs; in that case, it's better to add your critical 10-15% to it rather than building 50-90% all over again. Joining an existing software project means that you start with a foundation of users and contributors. It also means you can spend more time developing software and less into supporting and evangelising it. Finally, if you can't drive the project in the directions you need it to go, the open-source license may permit you to fork the code, though this is clearly a last resort because of the ill will it creates among contributors and users, not least because it dilutes the effort on the original and your forked project.
The worst possible outcome is that you overlook a strong competitor project. If you discover it later, the best response may be to adopt it, as a user and possibly as a contributor.
If you decide to proceed independently, do so knowing that you will face a harder battle to gain users and contributors than originally expected. Remarkably, quite a few open-source developers find marginal reasons to justify redeveloping software from scratch; these reasons usually have little to do with providing better capabilities (usually just different ones) or more usability (usually just different user experiences) than the existing applications.
2. Market segment - the group of customers to target, recognizing that different market segments have different needs. Sometimes the potential of an innovation is unlocked only when a different market segment is targeted.
In terms of product scope and development focus, open source tends to target developers, IT and end users, in that order. The choice of technology platform (e.g. web browsers, Java, .NET, Windows, UNIX) and implementation (e.g. Sun, JBoss, Apache, Microsoft, GNU) may define your market segment. Alternatively the standards (e.g. SOAP, HTTP) and formats (e.g. HTML, XML, OASIS OpenDocument). But technology and standards are the meat and drink of developers so you'll naturally think about those aspects. There's a lot more however to defining your project's market.
First off, it's worth highlighting that every open-source project effectively has two markets: the product's users and the project's contributors. Ideally these two markets are large and congruent (so all users are potential contributors), but practically speaking a contributor has several qualities that a user doesn't have: the ability to contribute but also the will to do so, possibly motivated by generosity, a need to share, ego gratification or because they actually need the feature they are contributing. Of these, the last is most likely to benefit the project because it requires real effort to satisfy the need.
The more ambitious the project, the more important it is that it focus on meeting the needs of contributors (architecture and in-source documentation, source version control, simple IDE-neutral build system, etc). It will also be necessary to have a separate web page (or even a micro-site) for users versus contributors; the user page should focus on the pragmatic, the contributor page should guide and facilitate the possible.
In the same way as you need to consider the value your project will provide, it's worth thinking about what characteristics define the ideal customer for your project. A developer who believes their software will be useful to absolutely everybody is probably also haunted by daydreams of world domination, getting a call to join (or be acquired by) Google or receiving an Open Source Oscar from Milla Jovovich. Realistically, in the short term your software will be useful only by a small target group - developers who are prepared to accept a small set of features, simple packaging or imperfect quality. Success in most open-source projects means first to focus on meeting your own short-term needs and then to grow the software organically, in part responding to what other contributors offer in terms of skills and enhancements.
After a phase of early adoption and as your project attracts more users (and possibly customers who fund the project by donations or via commercial licensing, service and support contracts, or custom development) the desire for more features increases, but the expectation and even demand for quality also increases. Just because people aren't paying for your software doesn't mean they will accept major functional or non-functional bugs, or tolerate data loss or regressions across subsequent versions. If you can't sustain quality at your present pace, you need to slow down feature development to improve the code base and your development process. Otherwise the user volume your open-source strategy provides is simply giving you a chance to demonstrate widely that your software is buggy; your project may never recover from bad reviews.
3. Value chain structure - the firm's position and activities in the value chain and how the firm will capture part of the value that it creates in the chain.
Open-source projects deliver obvious value in terms of code, build and installation support, and user or developer documentation. External contributors are often a key part of the process of delivering value; this is often the main reason for making a project open-source.
A company that participates in or runs an open-source project may extract value from the project by extended product, solution or service offerings.
Many open-source projects start from one developer's need to solve a specific problem. If you are focussed on meeting your own current need, your effort can't be wasted; in this case, thinking about your market isn't necessary.
Some developers hope that they will attract contributors simply by publishing their code on an open-source host; practically however, sourceforge.net might as well be sourceforget unless you create a useful web-site and some documentation around the project.
Open-source contributors
A company may benefit directly from the open-source project if it uses it within its own offerings and if it attracts external contributors, however it's important to be realistic about the pyramid of contributors:
- informal testers are the broad foundation, then
- translaters,
- sporadic bug-fixers,
- platform-porters,
- niche implementers, and last and definitely least,
- broad-based developers
Aside: Understand the motivation4. Revenue generation and margins - how revenue is generated (sales, leasing, subscription, support, etc.), the cost structure, and target profit margins.
If the idea to open-source code comes from within your R&D organisation, consider whether this is simply an attempt by a developer to secure the ability to use the code in other companies. An open-source strategy should not be selected lightly and only after considering the above points.
Conversely, if a developer within a company wishes to open-source code that they develop on their own time, they should be allowed to do so at least on a probationary basis, so long as the scope of the project does not allow any of the company's IP to be leaked. At the very least the developer is honing their skills on their own time, their motivation may be improved; in the best case the company may be able to use the code in its own products.
The simplest (but possibly the least effective) way to make money from open-source is to radically restrict the rights to use or redistribute the code in the hope that this encourages users to purchase your commercial-friendly license or service package. The GPL license for example prevents third parties from building a partially closed source application that includes your code (depending on the interpretation, it may even cover building install scripts that install non-GPL and GPL code; it certainly covers calls from non-GPL to GPL code). For customers who cannot live with these limitations, this is essentially commercial software with read-only access to the code. The terms of GPL (and to a lesser extent LGPL) are sufficiently ambiguous that in a distributable product, they are only really safe to use if it is entirely GNU-licensed.
Note: GPL seeks to impose it's license virality even across executable boundaries; for this reason, it's not even safe to execute a GNU program (even a commodity utility like sort or uniq) from a closed-source program!From a broader business perspective, if the open-source project is to be the vehicle for establishing or extending a volume market for a company's services (consultancy, support, custom solutions, branded training/certification) or other products (an extended or enterprise edition), then it is critical to define:
- the boundaries of the free and the value-add of the fee-based offerings
- the customer's paths from free to fee
- the organisational investment in marketing, execution and distribution required to capitalise on the opportunity created by the core open-source offering
- how your company will respond to competitive threats from companies that simply incorporate your open-source software into a (marginally) later offering
The irony of open-source software within a business strategy is that all open-source software functionality is immediately a commodity and the more valuable the source (due to its clarity or documentation), the less valuable it is to the originating company because competitors can more readily build on it. Either the functionality of the open-source base should be significantly less than the extended fee-based product, or the source code should be impenetrable and thus hard for a third party to service or expand.
It is hard to withhold quality as a motivation for customer to pay because the volume users who try your open-source software are unlikely to believe that they can benefit from your fee-based offerings; at best you can offer support that guarantees that the customer can raise a certain number of issues annually that will be resolved promptly.
If you really want to leverage contributors, you will have to be prepared to both offer and share leadership with them. Some open-source project forums simply become a talking shop, but every successful project has a clear public vision, shares its knowledge, and offers specific guidance on what kinds of contribution they are looking for and how to provide them.
5. Position in value network - identification of competitors, complementors, and any network effects that can be utilized to deliver more value to the customer.
Let's start with network effects. Open-source is all about exploiting the internet as a platform for a web of contributors to collaborate. See 3 above for a list of likely types of contribution from informal tester to broad-based developer, noting that you typically get far more of the former than the latter.
Depending on the open-source license you choose, you open the potential for complementors. True complementers create non-competitive value-adds, which enhances the market for your product. But open-source enhances the risk that complementors become competitors who simply embed your offering within their own. If however you have a means to get value from your open-source product regardless of how it is used (e.g. service, support, training), then complementors are simply a way to achieve greater volume.
The next section addresses competitors.
6. Competitive strategy - how the company will attempt to develop a sustainable competitive advantage, for example by means of a cost, differentiation or niche strategy.
Competition may seem like something that only a commercial product needs to consider, but if there are existing solutions, then your project has to offer something more, better or different if its going to reach a lot of users.
If you decide to offer more, then it may still be effective to join or complement the best existing open-source project.
If your project will be successful because it's better or different, then be clear how the difference will benefit the users. If the differences are purely in terms of qualities of the code (in-source documentation, readability, ease of maintenance or extension), then you could still achieve those qualities incrementally by refactoring; any modern IDE will provide some very useful facilities for making reliable mechanical restructurings such as generating and applying get- and set-methods, renaming classes and members, or extracting methods and interfaces. An existing project will give you the benefits of having runnable code, existing functionality and a community of users and contributors that you don't have to start from scratch.
When considering the field and threat of competitors, look at companies with closed and open-source products, and consider both the obvious competitors and those that provide competitive value. For example, even though spreadsheets, office database applications and wikis all clearly provide less value than an enterprise database-based solution designed to support specific use cases and workflow, they all compete at some level because they enable data to be manipulated, stored and shared. They compete most of all because they are already paid for and installed in most companies, and people naturally want to leverage their existing skills even if it is costs more in time than buying and learning a new purpose-built application.
Conclusion
Open-source isn't easy; it's far easier in many ways (or at least, it requires a narrower range of skills) to develop something yourself or within a team in a single company. But the potential benefits of the open-source approach are clear. It's good to code and great to share - your open-source project will be more successful if you start it with the forethought of an entrepreneur.
Update: there's a fair bit of discussion going on around this post - check the comments for links.

12 comments:
Every _business_ needs a business model. Not all software projects are businesses. Sometimes you just need to make some software to meet an immediate need. If you want to maximize usage of your code (whether for commercial reasons, or to reap the network effects of a large install/developer base) then your points start to apply
Thanks much for detailed article with such well-thought-out analysis.
Hi Greg, you're right that not all open-source projects are business-motivated, but all successful open-source projects (lots of users *and* contributors) have to do a lot of the thinking that a business does. This was my motivation in trying to promote the idea of thinking about the elements of a business model.
Hi Tom, many thanks for your appreciation - it's great when readers also share their feedback, especially when it's positive ;)
A detailed, well thought out and helpful article. I learnt a lot. Thanks Colm. :)
Overall, this article is no great shakes, but section #4 ("Revenue generation and margins") is singularly god-awful.
"The GPL license for example prevents third parties from building a partially closed source application that includes your code"
False for most scenarios. If the "partially closed source application" is used in-house, the GPL imposes no limitations. Only with redistribution does the GPL apply; even then, a common pattern is for a project to offer commercial licensing terms as an option, tying neatly back into the purported theme of this section. Case in point: MySQL, now a teeny little division of Sun Microsystems.
"depending on the interpretation, it may even cover building install scripts that install non-GPL and GPL code"
If you are going to lob grenades like this, you owe your audience link(s) to examples where people have taken this interpretation. Certainly the FSF disagree with you.
"Note: GPL seeks to impose it's license virality even across executable boundaries; for this reason, it's not even safe to execute a GNU program (even a commodity utility like sort or uniq) from a closed-source program!"
See above. If you can't provide links demonstrating your points, one must question their accuracy. And if these passages appear inaccurate, one must question the accuracy of the rest of the article.
Now, you are welcome to lob these grenades in the form of opinion ("I believe that the GPL seeks to impose its virality..."), but you didn't do that.
Also, the GPL is a license and as such has no means to follow your "seeks to impose its virality" statement. To paraphrase a sig, don't anthropomorphize licenses -- they don't like that.
"Volume without a business model to capitalise on it won't keep a company running long."
And this is about as close as you get to actually providing readers with recommended solutions to the issue of "Revenue generation and margins".
"Either the functionality of the open-source base should be significantly less than the extended fee-based product, or the source code should be impenetrable and thus hard for a third party to service or expand."
This only is relevant in your second scenario -- that of selling an "extended fee-based product". If the goal is to sell other products/services, using the open source project as a branding vehicle, you don't have a separate "fee-based product" and having "impenetrable" code is bad for your branding exercise, as it will limit uptake by the open source community.
This article would be vastly improved if you would cite examples and link to them, rather than merely pontificating.
Open source software promote Competition.
Closed source software promote Collusion.
Open source software is about welfare of the society.
Closed source software is about profit and loss from the society.
Choice is yours...
It's nice to see an FSF believer respond to my views on GPL; I guess I'm not surprised you didn't like my post. I'd like to respond to your comments.
The GPL is all about controlling distribution, so to say that "in-house" usage somehow covers "most scenarios" is a rather narrow viewpoint. The interesting open-source derivatives are actually available for download or licensing.
In reference to my interpretation on install scripts, I say this - the FSF devised GPL; that doesn't mean they understand it or that their opinion about it should be considered "expert" in a court of law. That's why lawyers are usually responsible for devising licenses.
In relation to anthropomorphising GPL, it's inevitable - most licenses have static qualities, but GPL is a virus (for one concept of "free" software, as well as one concept of an open-source
license), which by most definitions is living entity. When we talk about even virtual viruses (like software), we don't say that the virus developer makes something happen - we say that the virus does. A viral license is code that executes not only in a court-room but on your code-base as soon as you include one line of it. To indulge your pedantry however, my anthropomorphic references to GPL should have the FSF as subject.
In reference to MySQL, the fact that Sun as new owners of that product/project have the rights to offer a different license for it now that they own it is utterly beside the point. That merely shows that GPL can in exceptionally rare cases support an "exit strategy" for an open-source project.
Anyone wishing to investigate GPL further would do well to read Groklaw, but the best thing to do is to go through the license yourself and see if its text does what you need. On no account choose a license because someone (including the FSF) suggests you should.
And anyone who believes in open-source should consider using a non-viral (which also means non-FSF) license, because that enables companies that have some closed-source to use your code and contribute to it. If not, they will have to look elsewhere, so your project loses a contributor with pockets.
Why do people assume that money is the only motivating factor? I have been maintaining an open-source project since 1990. I do it because I need the product and because it's a whole lot of fun!. I don't have a business plan. I don't care if the project makes money. I just do it because I really enjoy it and I find hacking fun and relaxing.
There were a few flames over on LinuxToday. I commented there, but the comment grew into a full-on response, so I thought I'd re-post it here.
[intro deleted; "thread" below refers to the comments to this post]
I'm not promoting business itself or financial gain from open-source software.
I used one too many buzzwords from the domain of business)
But I do think that software development is an expensive (at least in time) activity, and that the resulting software should have some kind of value.
If a developer chooses to ignore all the elements of a traditional business model that I outlined (maybe simply because I use business terms like "business model" or "value network"), then perhaps they are like the author of one the earlier comments in this thread - they believe that a very small number of users is an adequate target for the results of their efforts.
I believe that software is valuable, that software development is a professional activity that requires training and talent, and that developers should get some reward for their labours, either in recognition (by having 100k users as one developer claims above) or in salary.
Conversely I think that for a talented developer to invest time creating software that few people will use is a horrible misuse of talent.
In relation to the aside on GPL, I that some software licenses deny the value of a software developer's time by promoting the use of a viral license that ensure that that developers who use that software *must* make their software free.
My goal with the article was to encourage open-source developers to think about their time and the value they create, and to use some solid notions from the world of business, with the aim that more developers create something of value.
In particular (and here's where I invite even more criticism), I think open-source in general tends to suffer from a lack of *useful* creativity, mainly because it is often (but certainly not exclusively) focussed on providing an *alternative* to some commercial software that already exists. One of my article's critics suggested I cite examples. On this point, I certainly don't need to but if you insist:
- Linux (UNIX clone)
- KDE, GNOME (Windows/Mac clones)
- OpenOffice.org (Microsoft Office)
- JBoss (J2EE implementation)
I'm not denying that each of these projects has introduced some innovations. But they are essentially aimed at being alternatives to closed source products. They are the open and/or inexpensive shadow of products of the business world that so many open-source developers (and even many more hangers-on) seem to hate.
Perhaps more destructive is the broad array of competing projects in the space of libraries and frameworks. For example, has anyone time to evaluate all the Java web UI frameworks out there? Does anyone developing one of those frameworks actually help by doing some of that evaluation themselves and pointing out where their project differs in terms of philosophy or capabilities? Or by creating ways to integrate with the other frameworks? Very few. If they thought of those other frameworks as "competitors" and considered in advance how they were going to get "market share", perhaps we would have fewer better quality frameworks, or ones where the choices and differences were more distinct.
Of course there are examples of smallish developer-oriented projects that succeed in being innovators, Struts or Spring DI for example - but see above for the host of imitators and variations that Struts spawned.
There are plenty of examples of failed open-source projects: Chandler in particular comes frustratingly to mind - frustrating because that group of developers had ideas and talent but still lost the way (dare I say it) to their market.
Anyone who has read any of my other posts will know that I place a high value on open-source, but I wrote a post that used the metaphor of a business model because I also place a high value on the talent and efforts of open-source developers, and I would not see any of that be wasted.
Thanks for reading.
Colm Smyth writes:
Conversely I think that for a talented developer to invest time
creating software that few people will use is a horrible misuse of
talent.
Why? What if that talented developer gets terrific satisfaction from writing that software? What if along the way, he or she learns a lot?
Remember, the vast majority of programmers not only write
software that very few people will ever use (because they write
captive in-house applications), but that software usually never sees
the light of day outside the employer. To me, that is a
tragic waste of talent.
It's great when developers gain satisfaction from their work. It's also great when they gain a paycheck from it.
If code sees the light of day in a useful product or a much used open-source project, that's great too.
I'm just arguing for techniques to ensure that an open-source developer's effort doesn't create software that is open and ignored.
• The mushrooming of the software development companies have been instrumental in raising the bar for the quality of the software services. The increase of the concerns providing software services have made it possible for the clients to choose the best software development company from among the lot. In the cut throat competition only the best can survive and hence the companies give their best in order to thrive amidst this competition.
Post a Comment