When it comes to processing RAW images, there is not necessarily a single correct way to process the data. RAW images contain original sensor data, which is usually a bayer array of RGBG pixels (rows of red/green/red/green and green/blue/green/blue pixels). The most common form if RAW image processing is bayer interpolation, which samples 2x2 quads of RGBG pixels at each intersection to produce a final image. This is the most common form of RAW processing, and is used by all of the major programs you listed.
There are other ways to process RAW images if they are a Bayer sensor (Foveon sensors are different, in that they stack all three colors at each photosite). These include "super-pixel" processing, which produces a lower-resolution final image, but does not overlap and interpolate sensor data to produce each image pixel. This usually results in less color moiré, and produces better color per pixel, at the cost of megapixels.
Another form of RAW processing is called Bayer Drizzle, which is based on Nasa's Drizzle supersampling algorithm. This process applies the drizzle algorithm to RAW pixels rather than RGB pixels, and produces a supersampled image output that can be two or three times as large as the original image. This process is not ideal for all types of images, however it is quite popular in astrophotography. There are even image stacking algorithms that can drizzle super-sample pixels from multiple RAW inputs, producing truly fantastic output. (DeepSkyStacker, and astrophotography stacking program, offers a Bayer Drizzle RAW processing option.)
A very popular third-party, open sourced RAW processor is DCRaw, which supports a wide variety of RAW formats, and gives developers low-level access to the original pixel layouts of the RAW files for maximum flexibility.