Opening up a can of source: Open Source Pros and Cons

One of the more interesting decisions I think an individual or organization can make is whether or not to make their software open source.  Here are some factors I've been going over that I think make the difference.

Difficulty

Open source lends itself best to the very easiest and very hardest problems.  The very easiest will get implemented by competitors anyway, so no advantage is kept by proprietary source.  The very hardest are beyond the scope of most teams, crowd-sourcing is a major help for these projects.  Configuration scripts might be an example of the former, research projects the latter.

Budget

Open source works on no budget, or more accurately donated time budgets.  Proprietary code rarely works under that environment.  Proprietary code is boxed in by budget, so your code must be justified by the financial returns.

Time Frame

Is your code timeless?  Do you expect it to be used far into the future?  Then it may be a good fit for open source.  The longer you are in development, the more dividends crowd sourcing can pay.  The longer your solution is useful, the more likely someone else is going to develop a similar solution.  Open source also let's your users update it themselves after you've dropped official support.  Proprietary code instead trades on users needing a solution "now" for the problems they have "now".  Support of proprietary code is only provided as long as it provides a good rate of return.

Audience

Are your users developers, system administrators, or highly technical?  Is your user population very large or very small?  If your users are effective contributors (in development or testing) then open source is going to get a super charged crowd sourcing effect.

If your user population is very large, then crowd sourcing still is in effect even if average contribution per user is low.  Large user populations also attract competitors, which can be hard to fight off without network effects of obtaining a large user base.

Very small user populations are difficult to monetize.  Even if the your company generates some advantage from internally developed niche applications, it might still be useful.  You might generate more by getting contributions from other niche users who don't compete directly.  You might open up new business strategy by lowering the cost associated with maintaining the code.  Finally, if your internal project is behind the market leader open source may help you achieve parity at a lower development cost.

Final Thought


There are better explanations of the pros and cons of open source, but I hope you've gotten something out of mine.  The most important factor of all of these is time.  When development time is plentiful, open source thrives.  When you start running against some constraints, proprietary code begins to make sense.  If you box your development constraints in too far however, proprietary code no longer makes sense.