Ask The Expert: How the Red Hat Linux Development Process Works

Dave Mason
Red Hat OS Development Manager

UTB:  When work on a new product begins, what is the first step in the process?

First, we collect requirements for the product. These come from requests for features in bugzilla and email from the community as well as from our large-scale customers. We go through these lists to determine what is feasible in the timeframe we set.

UTB:  How does the timeframe get set and is it usually the same or does it change depending upon the requirements/requests?

We have a long tradition here at Red Hat to never discuss when we will release or what the release number will be! Having said that, it has generally been a 6 month development cycle for Red Hat Linux. With Advanced Server we have made the conscious decision to have 12 to 18 month development cycles.

UTB:  How do you decide what requirements/requests will be in the next version? Specifically, are there any technical dependencies?

This is a very difficult question. We certainly want to keep up with the latest technologies that offer our customers something useful in their daily computing but we are always very careful to not stick things in that haven't had adequate testing and a long life-cycle in the open source community. It is a delicate balance sometimes but we have been proud of our decisions through the years.

UTB:  What technical infrastructure needs to be there in order to add the new requirements and requests?

It all depends on the feature. If it is a request to support some new piece of specialty hardware we will need that hardware. If it is some application we take the time to investigate the status of the app and its stability/performance. It is a case-by-case process.

UTB:  How do new versions of other companies' applications affect implementation into the Red Hat Linux product, or do they affect it at all?

With the number of partners we have for Advanced Server this has become a critical issue. We want to make sure that applications designed to run on our operating systems actually do so and continue to do so. This is done only with a great deal of communication with our partners so that they can move forward with us each release. For applications that are in the community it simply depends on the application. If it is something critical to most customer's daily computing we will work hard to make sure it works, if it is the latest chat client or mp3 player we aren't quite as worried about it.

UTB:  Okay, so we know what requirements/requests are going into the product, we've tested the new versions of applications, what happens next?

Someone in Engineering is assigned the 'package' and starts working on fixing bugs, adding improvements, and creating the RPM. It then goes through the QA/beta testing process which takes a few months.

UTB:  Does the community have a role in the evolution of the next version of Red Hat Linux?

Certainly! The community writes the majority of what's in Red Hat Linux. Without the community we would have no product. The guys working on the apps in the community drive the direction of their own apps. We have to make sure that those apps are ready to ship for our customers. We make sure they are stable, and safe as well as delivering what they are supposed to deliver.

UTB:  What entails making a product ready for public consumption?

We have a large beta testing program made up of people in the community and at major companies throughout the world. We release a few beta releases to these good people and then release a couple of public betas to allow the open source community a chance to test the OS in real world scenarios. We find and fix a great deal of bugs and security holes thanks to our beta team. At the same time our QA department works through the same code with automated and manual tests. All this occurs while some development is still going on - it makes somewhat of a cycle.

UTB:  How much of a role does hardware play in the evolution of a product? What exactly is that role? Is it challenging to work with new versions of hardware?

Hardware plays more of a role in the kernel than it does in most of the rest of the OS. It is obviously very important for us to make sure the latest hardware works with our OS and has drivers that are open source. The most challenging aspect is working with vendors who will not open source their drivers. Because of this the company in question must support the device but we do all we can (which is hard without source code!) to help customers who have that hardware.

UTB:  Specifically related to Red Hat Linux 7.3, what is interesting about this version from a technical perspective?

Red Hat Linux 7.3 is most interesting for its stability. This is the first time we have done a "dot 3" release. We decided to add a few things that became important in the community like the Evolution mailer and KDE3 to an already stable platform (7.2). To that end we have one of the most stable releases on record.

UTB:  What is the most interesting stage in the evolution of a new version?

Probably deciding to do the release instead of moving on to the next greatest leap. We had plans to add a great deal of new things to the release like the GCC 3.1 compiler but we decided that it was simply too early to have our customers using some of this software. This goes back to an earlier point, we must find that balance between brand new and stable.

UTB:  Can you give us a sneak preview to the next version?

Sure I can, but I won't!

UTB:  Thanks for your time, Dave.