Is Open Source Right for You? Maybe, But Cost Should Be the Last Consideration

DZone 's Guide to

Is Open Source Right for You? Maybe, But Cost Should Be the Last Consideration

Without a doubt, open source is making the software business better. But, if you’re considering going the open source route for software that’s critical to your company, keep in mind that “open” doesn’t mean “free.”

· DevOps Zone ·
Free Resource

Without a doubt, open source is making the software business better. But, if you’re considering going the open source route for software that’s critical to your company, keep in mind that “open” doesn’t mean “free.” It’s understandable that cost would be a major factor in the decision to go open source, as it’s free to license and allows you to spin up unlimited instances. However, there are a number of hidden expenses associated with using open source software that in many cases can drive up the price tag way past commercial software. The real differentiating factors in open source have less to do with cost than they do with your objectives, and the capabilities of your team.  

Freedom From Vendor Lock-In Is a Double-Edged Sword

As Julia Vowler pointed out, the open source route gets users off of the supplier’s upgrade cycle, allowing you to upgrade when you choose. Freedom may come at a price, however. A vendor contract goes both ways, and when you purchase commercial software, you typically also purchase a maintenance contract which gives you access to experts who live and breathe the kind of problems you’ll face. Cutting the vendor cuts out your traditional route to quality and timely tech support.

Open source doesn’t have traditional tech support. A maintenance contract is much better than simple reliance on a dev community who might not be ‘interested’ in helping you solve your problem. Communities have interest in the general purpose and direction of the software, but no obligation to your business — they shouldn’t be considered any sort of replacement for tech support.

Unless you have an IT staff with several experts in a particular open source code, you’re going to  have to hire consultants to help you tune what is really a general purpose tool. As David Lithancum observed, to correctly configure and install open source software, it may require an army of consultants. They won’t know about your business, and will require ramp up time and an ongoing relationship.

Software May Be Free, But Hardware Ain’t

A chief advantage of open source is often scalability, since you can spin up an infinite number of instances, and this is often cited as a major cost differentiator. But, you also have to take into account how efficiently you’re using your hardware too. For example, in order to scale the open source MySQL RDBMS to enterprise-level performance, it’s very easy to exceed the capacity of cost-effective hardware on a single node, and then you’ll need to either pay up to 5x for 2x the cores (for example, 64core machines aren’t available on AWS), or run on bare metal. MySQL doesn’t “scale out” by adding nodes, so you’ve got to run it on a very big box, or split your database into shards which each run on separate boxes, but lose transactional integrity. By contrast, with ClustrixDB, a MySQL drop-in replacement, you can buy cores in a commodity package, and scale as needed by adding nodes.

Generally speaking, if the software is free to license but requires a lot of big, expensive hardware, you’re not saving money.

Are You Experienced?

Do you want to experiment with your software, or do you just want it to work for you? It’s an important question, because open source is going to require a lot of trial and error. Taking a general purpose open source tool and running it in a production environment can consume a lot of consultant hours and IT resources. By contrast, a commercial software publisher will typically offer datasheets, proof points, and a team of engineers that can run a proof of concept.

Furthermore, Rachel Skinner made a good point regarding user-friendliness when she observed that “Open source software is generally purpose-built to fulfill a need by developers, with developers in mind. The way these developers use software is often vastly different from ordinary users. There isn’t any reason for the developers to refine the user experience (UX) – if it works for them, they are justifiably happy.”

As Raj Sabhlok pointed out in Forbes, the real deciding factor between open source and commercial may be whether or not software development is a core competency of your business. You’ll be responsible for “maintaining, enhancing and customizing the application to meet your needs.” Sharding, the most common way to scaling-out RDBMS’s like MySQL, requires a lot of custom code to ensure transaction integrity between shards. Expecting a sharded MySQL database to guarantee the ‘single source-of-truth’ ACID properties of a single MySQL instance requires constant developer and DevOps maintenance. Can you envision implementing a major architectural change or on your own? If that’s not something you want to do, open source may not be right for you.

To Open Source or Not to Open Source?

Choose open source because you want open source, not to save time or money. As Chris Riley stated, “The idea is that you are deliberate about adopting open source, and not adopting just because it is easy.” If you want to experiment with the software, collaborate with a community, etc., it may be the way to go. But the bigger point is, it’s not really free, and it certainly isn’t easy.

As Skinner pointed out “If your software users have a three year computer science/software development degree or similar, then for their workflows using open source software makes a lot of sense.” If not — and if you basically just want the software to do a specific job for you — commercial software is probably the way to go.

commercial, mysql, open source, support, tech, tech support

Published at DZone with permission of Lisa Schultz , DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}