8 reasons to choose commercial library instead of open-source one

Editorial Note

This article appears in the Third Party Products and Tools section. Articles in this section are for the members only and must not be used to promote or advertise products in any way, shape or form. Please report any spam or advertising.

Open-source software (i.e. software offered under free licenses with freely accessible source code) gains popularity day by day. The reason is obvious – price drops for the end-user software make it harder to invest cash into software development beforehand. And in case of in-house activities stiffer IT budgets make programmers choose code snippets of unidentified quality.

However while open-source libraries and code snippets seem to have zero initial cost of use, they start to consume resources later, during life cycle of your software. And commercial libraries can offer more than you can think of.

I will focus on professionally developed commercial solutions: putting a price tag on your code piece doesn't magically turns the code into the industry-level commercial product. Commercial library must be evaluated thoroughly to answer the question of how professional it is. Not everything with a price tag is good, that's obvious. But if it's commercial, chances are great that you will get the things missing in open-source offerings.

Let's review what exactly commercial software (and specifically component and class libraries for software developers) can offer, and then discuss objections and counter-objections.

Documentation and samples.

With modern APIs becoming increasingly complex documentation and samples allow easier and faster code reuse. You just copy the piece of code from the sample and it just works. If you need guidance, you can look into documentation to figure out where to go next or why the function could fail.

Adepts of open-source software claim that the source code is the best documentation. Maybe it can work as documentation when the code itself is well-documented, with comments and well-written (with proper formatting and variable and function names). In most cases the code is not the most entertaining reading in the world though.

Various studies show that presence of source code sometimes helps in diagnostics of various issues, but does not help much in use of the software simply because you don't know what to look for.

Also documentation should be written by technical writers, not programmers – programmers don't like and don't know how to write proper documentation. Let programmers do coding and technical writers write text.

Carefully crafted APIs

Any software as a complex engineering product requires design and development before it can be implemented in bare metal in code. Writing 1000 lines of code from scratch is not the same as designing those 1000 lines beforehand and then implementing the design. Proper design can turn 1000 lines of code into 200, and bad design would lead to 10K lines of code that needs to be written.

When it comes to open-source libraries, many of them are developed evolutionary, i.e. something small is created, then features are added like new toys on the new year tree. And in the end you get the construct that is as fragile as a new year tree.

In opposite, commercial APIs are in most cases designed with both ease of use and extensibility in mind. Often there are several levels of APIs in there, for low-level operations (where you get maximum control) and for high-level tasks (where you an get the job done quickly).

Finally, open-source libraries are mainly developed by coders, while professional commercial solutions are usually designed by software architects and analysts, and only then coded by programmers.

Unique features

As the goal of open-source developers is to deliver something and do this fast, usually only the most popular functionality in certain application domain is implemented.

Developers of commercial libraries have to stand out of the crowd and implementing wider scope of functionality is one method to accomplish this task.

The problem of extensibility (i.e. getting a feature that you need) can not be easily solved with open-source other than coding the feature yourself, which is almost always not an option, especially when the issue to be addressed is far from your area of expertise. With commercial software you can negotiate the extension to be made for you or to be included into the future software releases.

The motivation of the commercial vendor is to keep his business running, and this is the effective motivation. For open-source developer even one-time fee you can pay him can be not sufficient to motivate the developer to extend the product (which could have been abandoned long time ago, as it frequently happens in open-source world).

One more benefit of unique features offered by the component vendor is that such features let you create a USP (unique selling point) of the end-user software that you create. And when you do in-house development, those feature let you please the boss and show your attitude towards helping your colleagues and the business itself to act efficiently. In other words, those features show that you care about your user.

Reliability

One of the most valuable assets of every business is trust of its customers. You can't run a business for a long time when customers don't trust you. And in software business, where relations are long-term and information flies easily, trust is a must.

When the bug is encountered, it's the best interest for the commercial vendor to fix it, or trust will be lost. And the customer needs to be assured, that should the issue arise it will be addressed in the shortest possible time.

With open-source libraries, even if you submit a bug (when the developer provided you with such possibility), you usually have little hope for this bug become fixed in any foreseeable future. In opposite, bug fixing is sometimes offered by open-source developers for a fee that far exceeds the cost of the license for comparable commercial product.

Now, how many times did you encounter situation when this or that open-source product is not developed anymore (or has faded away) because the open-source software author has lost interest in the product? In fact, this is very common for open-source libraries. With commercial software the properly organized business offers not one by many motivators to his owners and managers. Money being one of the strongest, are not the only one. Obligations, responsibility, legal requirements are equally efficient motivators. So you can be sure that the product will not fade away or be dropped without notice of future. And you can build your project’s future upon such responsibility of the commercial vendor.

Maintenance

IT world is about links and connections between various actors – servers and services, client systems, mobile devices etc . With so many actors, changes and updates are frequent and you have the environment to which your software must adapt all the time. Otherwise you get compatibility problems, dissatisfied and complaining customers and finally business losses.

When you use third-party components in your software, they need to be adapted as well. And as with new features, adaptation of third-party components and libraries is much easier when the author is motivated for this.

Also for the running business maintenance and compatibility updates are one of the ways to inform their users that the business can be relied upon. So there exists a big chance that the required adaptation will be performed by the vendor even without your request.

Expertise

It's not a secret that you often don't need a third-party code when you can write this code yourself. That is true for general-purpose code, but can you take the risk doing the same in low-level programming or neural networking, OCR or cryptography?

No person is a specialist in everything, that's why we have so many different professions and specialists that focus on some one particular question.

Commercial vendors, especially those offering specialized software and components, use services of such narrow specialists to provide high-quality products. The vendor has a specialist in the application domain (eg. in OCR or networking), a specialist in software design and a specialist in programming environments and computer platforms. Cooperation between those specialists lets you get a reliable product. But in case of open-source this is a rare situation. Specialists in application domains most often prefer doing their job for money and spend free time with their families and hobbies. It's hard (though not impossible) to find a specialist who is a good software architect and programmer at the same time.

As a consequence, with commercial software you usually get a product of the higher quality (not just programming quality but quality of the application domain) than in case of open-source.

Assistance

Initial development of the open-source software is often driven by curiosity, desire for publicity and other similar emotional factors. This works well for a short time, usually enough for initial development, but not for maintenance and especially not for assisting you with the product. In other words, if you need help, you need to search for it anywhere you can … or pay for it to the developers.

As with bug-fixing the cost of such individual assistance services usually exceeds the cost of the license for commercial software. The reason is simple – the business of the commercial vendor is based on insurance model, where total development and support expenses are spread among all licenses sold no matter how much support you “consume” (extra support packages are sometimes offered as well, but the overall scheme is the one described). In case of open-source products the only source to compensate development and support is to charge you for everything possible.

Reason #8.

Everybody will find his own. I will put mine to my personal blog.

Objections.

* There are many open-source titles, which deliver exceptional quality. Yes, there do exist software titles (mainly end-user and server software, rarely libraries) which are open-source and which offer great value. But if you look carefully, most of them are (a) commercial products, just sponsored by big companies or institutions, (b) often free only for non-commercial use but who reads those EULAs, (c) not as great as initially seems, with internal management problems, bloated code and design and implementation flaws that lead to necessity to rewrite the titles from scratch from time to time.

* Open-source is free and nothing can beat such price. Yes, the cheese in the mouse trap is also free. But unlike the mouse trap, free software is a trap for each mouse involved. There are costs involved in maintenance and bug-fixing and in migrating to other solutions later if the chosen open-source stuff suddenly stops working. And such costs can exceed the initial costs of the commercial solution in a several powers, especially if you try to rely business processes on free solutions. Even when you keep using the open-source solution, assistance either needs to be paid or you need to hope that someone in programming community helps you for free (with absolutely no guarantee).

* Open-source offers source code. Yes, and so do most commercial libraries. Commercial end-user software is rarely offered with source code, that's true, but as mentioned, there's very little use in such source code (other than to satisfy curiosity).

* Open-source is documented. Yes, with mystifying comments and unreadable and badly formatted code. Wiki and publicly maintained knowledgebases are a weak substitute to professionally written documentation.

* I can ask for samples in the programming community. You can ask but this doesn't promise you the answer, neither you get a guarantee of the quality of the provided answer. The fact that something works in one particular case doesn't prove reliability of the solution in real-life conditions.

* Open-source has as much features as commercial software. Yes, the feature list can be the same initially although this needs proof: commercial libraries have to stand out and features are a good method. In any case extensibility of open-source software is lower due to lack of the main driving force for such extensibility and often due to bad design.

* Open-source software has great APIs. Yes, and shamans can sometimes offer good medical services. But it's a better idea to go to the hospital.

* I can modify the open-source product myself. Yes, and you can do the same with the source code of the commercial library.

* Open-source can also deliver unique features. Yes it can, but only for some time. All easy (and inexpensive) unique features become common quite fast. And really unique features need resources to be implemented.

* Open-source is better tested due to larger audience. “It's better tested” doesn't mean better quality. It means only more bugs in the bug tracker. And as bug fixing is generally slower in open-source than in commercial software, the latter one has a better chance to be of higher quality.

* The open-source library I use worked fine for me for years. Yes, in closed environments and in simple tasks the code which has been tested once will work for years and decades. However if this code communicates or interacts with other software and network, changes of external actors can bring your business down in minutes, and when this happens, you will have very little time to react.

* I have very simple tasks where no expertise is needed and where open-source works for me. A match (the one to get the light with) is a trivial thing. Or is it? The components of the match were developed for decades by numerous scientists in chemistry, biology and physics. Things you consider trivial now are the result of years and centuries of scientific research. And in software there are no trivial tasks and no trivial solutions.

* I can get assistance from community, I don't need a paid service. And you surely ask community for health care, legal services, car repair services etc. But this is not effective and is like playing with fire – one incompetent suggestion can get you into serious trouble. Professional services are a must for any activity of the modern civilization.

* You are biased. Everybody is.

* You don’t like open-source. I personally use open-source and our company has been offering open-source licenses for some of our products (MsgConnect, VoxPopuli etc) for years. And I see big problems with open-source.

* Open-source will rule the world. And this is what I worry about, because, as described above, open-source lacks many (mainly quality-related) features that can hurt civilization.

* You don’t know open-source. Working in this industry (development of publicly reused components and libraries) for over 15 years I have studied all alternatives and business models, and I try to keep track of changes and innovation in this area (including licensing and business models).

* Linux and other open-source has overpowered the world everywhere except desktop, and desktop is the next. We’ve been hearing this for years. Windows Server becomes more and more popular as a server platform, Azure is an outstanding PaaS, many people are switching back from OpenOffice/LibreOffice to Microsoft Office. Indeed Linux is a large player on smartphones and similar devices, but this is first of all Microsoft’s fault which lost momentum. I am not an evangelist of Microsoft at all, but I don’t like monopolies and Linux tends to become a monopoly.

* I had negative experience with commercial vendors and never had any problems with open-source. As I mentioned, price tag doesn’t magically turn the programmer into a reliable businessman. But the chance is much higher with commercial software, that you will get value and service for your money. With open-source you will most likely get nothing for the time you invest into using it.

* Commercial vendors can not be trusted. That’s a question of belief and faith. If you believe that you can’t trust anyone, then there’s little we can do to convince you.

* How can I ensure that the vendor can be trusted? That’s a good question that moves you from denial to curiosity. I will publish a separate article on this, cause there are many factors to consider when making decision about investing into any product (not necessarily commercial, by the way).

Share

About the Author

Eugene Mayevski takes a post of Chief Technical Officer in EldoS Corporation (www.eldos.com), the company that specializes in development of security and data storage components for software developers.

I went through the pain of reading the whole article, plus the comments and replies of everyone who expressed their feelings at the end of the page. I even checked your Google profile and your website.

(Can anyone guess what kind of products does this guy “offer”?)

Did so not because I’m a masochist or because I’m a “devilish advocate” of FOSS: I did it because I wanted to know if you really vehemently believe that entire BS you wrote or just wanted to shove a psychologically poisoned pill down naive people's throats so you and some like you can somehow make some money at last by denigrating free source/open source. There’s no point in going “reason by reason” (nonsense by nonsense) of your 8 misconceptions refuting them: it would just make an article probably equally long and barely assertive of things which most of us already know.

Your article is almost political. We should take a vow (and perhaps make a vote) in the Code Project to avoid opinionated and, specially, irrational articles such as this one. It is just what I think; it’s not what I actually expect to happen (though it would be nice and extremely pleasant). Know what? Perhaps you could have just posted all this verbatim in the lounge, that’s probably the only place where it could –arguably– belong.

Open source/free source is a revolution. You hate it because it affects your personal economy in some way. Suffer in silence, sir, and let everyone else have a nice day.

Anything that could possibly go wrong in some moment, will definitely go wrong in the worst possible moment...In the worst way that could be possible!

I approved this article when it appeared on the "needing approval" section. At that moment I said that it is well written, but I simply don't agree with your opinion. In fact, I see that the open-source community has a lot more bad-quality products simply by the fact that anyone can write a new piece of code and publish it. Yet, I don't agree that the code is going to be better simply because it is commercial... there are a lot of bad quality commercial products out there. Also, I really think that the ones that want to deliver things FAST are the ones doing commercial products. Someone programming something "for fun" does not have to worry about dead-lines.

The difference is that badly written commercial product fades away quite quickly, while the badly written open-source product stays on the market forever and is widely promoted for a reason of being free. As a sample I can name SharpSSH library which is abandoned, doesn't work well with modern servers, but is still mentioned again and again (and is attempted to be used again and again). In commercial case such product would simply disappear from the market quite quickly and would not mislead people.

With best regards, Eugene Mayevski http://www.eldos.com - Security and low-level system components for your applications

Or it will be published as open-source, giving the bad image again to the open-source community when, in fact, it was a commercial product.

I really understand everything you said. I simply can't agree with the entire idea.For example, I know many commercial libraries that work well during the early stages of development. Later, they become a problem, as they aren't really prepared to "expand". Yet, thanks to the initial fast-to-do-something (or should I say RAD?) they are seen as great.And many will argue that as the libraries don't have bugs they are of good quality. But good quality is not only not having bugs. Good quality is not only making things easier at the beginning. Also it is not only about having a good documentation. In fact, many commercial products become well known because they are really easy to use... but have no extension points at all.

Yet, such kind of commercial product will probably not die if new developers keep finding it and considering it good for their initial tasks.

My main issue with commercial libraries that don't offer source code is flexibility. They are faster to develop in the beginning but maintenance and making some small modifications become a huge task after some time. If they serve something unique, they are worth it, otherwise I'd always like open-source.

"They are faster to develop in the beginning but maintenance and making some small modifications become a huge task after some time."

As the product grows larger, amount of time needed for support is increased. Also new features indeed are added slower than when the product is small due to more backend work required for each new feature. Next, first most popular features are added. And each new feature is less-popular than previous ones, so the benefit of implementing is lower (it would attract less new customers).

But this is not specific to commercial product (other than commercial products require support which is asent in open-source) - if the open-source product were supported and maintained in the same mode, it would have the same decreasing development speed.

With best regards, Eugene Mayevski http://www.eldos.com - Security and low-level system components for your applications

I am sorry, I missed one word and it changed the complete meaning of the sentence . I wanted to say "They are faster to develop with in the beginning but maintenance and making some small modifications become a huge task after some time." Although that could be true for open source stuff as well but because of access to code, they remain more flexible. But I agree that abstraction come at a price, but for constantly changing application that price is too much to pay.

Flexibility of open-source is illusion. The best you can do in most cases is look at the code. In very rare cases you can change something to fit your needs. But in 99,9% of cases you won't add a feature just because you need it (even if you are technically able of doing this). The reason is that as soon as you do, you fork a code and need to maintain it in future. This is too risky for business (while might be ok when you have lots of spare time). Some companies do take this risk, and the consequence is that lots of time is lost on maintenance. I saw many such examples (they are more widespread in web world) - bugs need to be fixed, code needs to be merged with main stuff (and soon this becomes merely possible) and everything turns into complete mess.

With best regards, Eugene Mayevski http://www.eldos.com - Security and low-level system components for your applications

This is too risky for business (while might be ok when you have lots of spare time)

I agree that it might take a lot of time for development and testing but still would be preferable to waiting for those new features from the supplier of commercial libraries. Anyway your article is biased towards commercial libraries to a certain extent ,hence my 3.

This is why, when possible/practicle, you should use standard (NON-proprietary) APIs and then pick an implementation that best fits your needs/budget. That way you should be able to swap in/out different implementations as you go (e.g. start with free open-source, and move to paid one later; start with a commercial product and drop it for a free one later if they start to jerk you around or nickle-and-dime you in licensing; use open-source for development [to avoid license scaling limitations], but deploy commercial versions with product [where customer covers those costs in the purchase price]).

You couldn't be more wrong on this. What are you basing your opinion on ? This whole article is biased and approached from a wrong perspective.It's not supposed to be either "black or white", but it's a choice based on needs and availability, time, budget and most importantly SKILL.

FOSS is the very basis of MOST commercial software too. Every self-respecting company uses best OS libs available on the market instead of writing them from scratch. OS has many advantages over proprietary code, like well tested , portable, often more secure, scalable and modular.

I wonder what browser are you using... IE?? doubt it, probably FF or Chrome (#1 browser in the world), both 100% open source - HOBBY! - think again... Win Phone or Android... Android is #1 phone in the world - HOBBY??? Those big OS projects are all based on FOSS.

Microsoft, Apple, IBM, HP, DELL all use FOSS all over the place in their products, they even add to them a lot.

Chrome and Firefox are open source, but hardly developed by a "community."

Most of the big open source projects (Linux, Apache, Eclipse, Java, MySQL, Chrome, Firefox, etc.) are actually commercially-backed products that fit into a big-picture strategy. They'll spin on a dime the moment their mothership needs them to.

When you buy takkies, do you select "adidas" made on official factory or "aBiBas" hell knows where produced? Same story here: FOSS is a "china barn" where you never know how good people are and how well they care about architecture, security, usability and so on.

Ridiculous and ignorant example! are you implying that FOSS is mimicking the REAL proprietary code ? Bollocks! Remember that Open source was first, as shared code across universities and libraries, then people realized that not-sharing, means *money*. Yes there are applications which were designed to be as close to original as they can, but the reason is not to mimic them, but to provide alternative, free alternative, often with features which can't be found in proprietary software.

Nice trolling, but it has nothing to do with reality. In reality if some software is open source or proprietary is a marketing and/or development model issue and has very little to do with the quality. If we're talking about specialised libraries the proprietary are often little more than hobby projects and the support and documentation is actually often worse than the equivalent open source alternative. The difference can often just be marketing and web design.

Exactly. With closed source there is no possibility to review the code and there is no traceability. It's a black box and you just have to trust the seller.With open source you have full transparency. You can see the source code, you can view bug lists and so on.

There's no easy way to create anything commercial for scripting languages (like jQuery) due to high level of piracy. Even for desktop components this level is high, but for web stuff it's prohibitive. Another reason is that there are two much web platforms (about a dozen of just programming languages used) for developer to address them. And I must note, that this leads to lack of many functions on those platforms.

As for Hadoop - the tasks that Hadoop addresses appeared long before Hadoop itself, so I am sure that some alternative must exist, though it's not as well-known.

With best regards, Eugene Mayevski http://www.eldos.com - Security and low-level system components for your applications

You forgot to mention that most Comercial vendors also have public forums, but they normaly monitor it and they are alot more responsiv. Also most OSS libraries and products are done by divas, that think they are so superior that only their ideas count ( x264 for ex. )

I have to agree with darren_1065. Everything that you brought up is, unfortunately, true. Since I work with government, one of the acquisition requirements for *any* third party software is that it is actively supported by a company with five years or more providing the type of software that you're acquiring. This requirement of support completely eliminates OSS because community support is not the same thing. Those who favor OSS can claim it is, but it's quite simply not.

The rosy promises made by open-source advocates are rarely, if ever, realized. This essay far more realistically depicts the real world than does the glittering but hollow bragging of the open-source crowd.

I have just one argument like a kick on eggs: Linux. The biggest and shittiest system I ever seen. Never ever documented/designed/written properly, having a lot of issues and holes. And this is still example of successfull FOSS!

Who is "Richard Stallman"? Why he is famous (except his corn)? Did he wrote something big and high quality? Let's see:1. Emacs. Shitiest editor which does EVERYTHING, except... editing text!2. GCC. Ugly designed set of compilers, which (thanks to normal people) is rewritten in LLVM platform. BTW FreeBSD moves to CLang, leaving GCC to use by author himself. 3. GDB - again ugly sister of "debug" utility from DOS sentury. VS outperforms this rubbish by all terms.

Anything else?

So we're ready to listen real arguments, not shaking with 3-rd party persons. Can YOU PERSONALLY reply on article?

It didn't come across as a balanced appraisal, more emphasis on the negative aspects of OSS but hardly anything said about negative commercial offerings. Such as licensing/usage restrictions irrespective of whether there is source code made available, or end-of-life release into the public domain which definitely would remove the fear of investing time/effort with paid-for libraries/software.

I'd agree that OSS suffers from poor documentation. But then again how do you document a moving target such as software? And keep the original team around long enough to help with documentation? Chances are they've moved on up and-or out.

"It's true that hard work never killed anyone. But I figure, why take the chance." - Ronald Reagan

The benefit of the commercial offering is that if you don't like restrictions, you can refrain from using that library. And as said in the article, you get the source code with most commercial libraries, so there's no need to release anything into public domain at any time - you are secured by the source code offer.

With best regards, Eugene Mayevski http://www.eldos.com - Security and low-level system components for your applications

None of the listed were commercial libraries. These are free SDKs for commercial hardware. Feel the difference. Microsoft's business is not commercial libraries, but end-user software. So is Apple's business (end-user hardware). They are free to not give a damn about developer needs.

With best regards, Eugene Mayevski http://www.eldos.com - Security and low-level system components for your applications