One of the our customers, using Ubuntu OS to develop its next gen product, considers the best OS for his product. The product is NOT service based, but an “appliance” computer with OS and all software artifacts installed on it , shipped and deployed to his customers. A natural question would be, which OS to choose for production ?

One option is we use Ubuntu also for production, lowering our QA time, testing time (system-test, stress tests etc) , training (people are less experienced on Linux/Unix world) etc. Going this way the customer can reduce expenses for the product development. Alternatively, he can use one (or even more , in case there will be demand for it) of the commercial and common OS like Redhat and Solaris.

We can look on it with two different views : technical and marketing. On the technical level many questions comes to mind: among other are security, support, stability, performance etc. On the marketing level its the time and money (as explained above) and on top of that, making the product itself more expensive for the end customer (especially he uses the commercial OS and NOT CentOS).

Let me just say , the developed product is pure Java. However, the product product also includes 3rd parties component which are OS dependent (i.e. MySQL, Apache). That been said, from development perspective, we will probably NOT change the code, but from other aspects, including build distribution, installer, QA, testing, performance, configuration, managment, tools, and other technical aspects, it surly influence the product agenda and life-time.

Since my experience is mostly with Ubuntu (both on development and production), I decided to research about it. I read some interesting thread like this one, however, the most valuable answers I've got were from my colleagues at Tikal (please see their comments at the end) – Ittay and Haggai.

Considering their opinion other links I've read, it seems to me, that Ubuntu is much more convenience for development than other Linux (both commercial and and open source) and Unix distribution. However, for production usage, RedHat is considered to be superior on Ubuntu for most of the technical levels.
The argument to use Ubuntu on production is of course ... money (the marketing view) - the development team will use the same environment for production and will NOT have to invest QA and time on yet another OS. In addition, the price for commercial Ubuntu may be cheaper than Redhat making the PO cheaper to the customer. However, as detailed here when considering money aspect, it might end as narrow lookup.

I put here both Haggai and Ittay replies (thanks again guys) as a reference:


Haggai :

"The fact is RedHat is more reliable / stable than ubuntu, thus more common in the commercial / enterprise market.

Convincing one to use ubuntu would be quite hard for the commercial support for ubuntu server side isn't mature enough to convince big companies to trust it.

Ubuntu is a flavor of choice for developers due to it's cutting edge adaptation unlike redhat / centos which are much more conservative you can use the release cycle as a benchmark for that fact.
Nevertheless, if you are shipping a blackbox which means the end customer dissent have shell access you can of course embed any flavor you want."

Ittay : 

"Traditionally, RedHat dominates the server-linux market. It has been there longer, offers more mature tools and sysadmins know it best. Ubuntu dominates the desktop-linux market and has just recently entered the server market.
I would have expected RHEL to be the first distro to be supported. Supporting just ubuntu server because it is similar to the desktop environment in which you develop looks like a weak reasoning. I'm surprised no client complained about this before.
"The choice between CentOS and RHEL is the choice of support. I don't think many datacenters will rely on CentOS. However, it is a good platform to develop and test a product in when out-of a datacenter.
While not knowing the exact reasons it is difficult for the customer to support RedHat (maybe just the need to install a few servers?), the way to support many Linux distributions is by following the LSB standard ( which is supported by all major distributions."
"The thing is there's no such thing as a "black box linux" for data centers. In Windows, the vendor of the distribution is always the same (Microsoft) regardless of version. The tools are also similar and the personnel knows them all. In Linux you have different vendors, each with his/her own set of tools which are usually centralized and can manage only machines with the vendor's distribution.
IMHO, they have only one choice and that is to standardize on LSB and test on RHEL (probably different versions of it). They may also need to provide packages (rpm, deb) for each distribution they want to support, mainly to allow for patch management (again, vendor specific). "


I hope this post can put some light for you when you come across these same questions for you product.




Ubuntu is a wise decision since it has both excellent desktop and server versions, each is flavored for its target users/tasks, making it suitable both for development and production. It has a wide community which keeps it stable, secure, and fast. I've worked with Ubuntu since version 7.04 and I strongly recommend it.  

One distro to mention here is SUSE from Novell, SLES is a major competitor to RHEL in the server world, some people would say its better especially if you need a mixed OS environment with MS. Although the Novell & Microsoft partnership is not so good for the linux world. bottom line it comes down to what applications you need to run and which of the two gives better support for your needs. opensuse (and SLED) is a competitor to ubuntu, I switched from ubuntu to opensuse and I find it a better desktop,more polished ,easier to maintain with YAST, stable, and with all the top edge packages you need for your desktop. but also here I think its a matter of flavor and what your used to.

 I had the opportunity to use Ubuntu, RHEL on Intel, RHEL on PPC and CentOs for development. On top of the other comments regarding support, I would like to add the following comments:   From my experience, it is always better to use the same OS you are going to be deploying to as your developer platform for the following reasons:   a) When you use different distros for develop/deployment, you might be using different versions of the same packages. Depending on the required packages, these differences can be minimal or very significant. One example is that if you use a language like python or PHP, CentOS 5 and RHEL provide on their repositories older versions than Ubuntu. The new versions might include features that are not available on the old ones which can make things work on develop but not on deployment.   b) If you use a different distro for development, you will still need to install testing servers with the selected deployment distro. This has the following implications:      1) It forces the developers to learn to use both distros        2) It forces the IT department to support both distros and      3) developers often like to use  their own development environment for testing. In this case, the differences in packages can be critical.   c) When you are developing, you set up a development environment and use it all along. Usually there is no need to install other packages on the fly. For this reason, the fact that there are "other tools" available on different distros is less relevant.   d) Regardless if you select Ubuntu or RHEL, you should make sure you get support for your hardware. Take into consideration that Hardware changes faster than some distros. For example, after we started to deploy or system, we had to buy new servers and the network driver for the new network card was not part of the CentOS distro we were using. In this case, we had to compile and install the drivers manually, which is sometime not a simple procedure. On other other hand, you need to consider that  you don't want to change the version of your deployment distro very often. It is better to have stability by updating only critical parts. Therefore you should go to a version distro with Long Term Support.   e) Before selecting your distro, take a look at the distro's roadmap. For example, if you need or develop a GNOME application, take into consideration that Ubuntu is moving to their Unity desktop. IMO, this forces you to go for another distro and not Ubuntu. I also see that Ubuntu is, in some cases, moving away from the Linux Upstream. This has the potential problem that you might find yourself locked into a specific vendor. If you go with RHEL or CentOS, you always have a chance to move from one to another or even to SUSE with minimal effort. This item alone was very important in our decision to go with CentOS and not Ubuntu.   In conclusion, regardless of the distro you select, make sure it is the same for develop and deployment and make sure it fits your current and future needs.     Hope this helps Natan