Question: I used to work in a Ubuntu environment. Machines would be pointed at one of three repos: unstable, testing, or stable. To quote the [Ubuntu FAQ](https://wiki.ubuntu.com/Debian/ForUbuntuDevelopers#What.27s_stable.2C_testing.2C_unstable.3F):

> 
> The “stable” distribution contains the latest officially released
>  distribution of Debian. The “testing” distribution contains packages
>  that haven't been accepted into a “stable” release yet, but they are
>  in the queue for that. The main advantage of using this distribution
>  is that it has more recent versions of software. The “unstable”
>  (codenamed sid) distribution is where active development of Debian
>  occurs. Generally, this distribution is run by developers and those
>  who like to live on the edge.
> 
> 
> 

Even more details are here in the [Debian Release page](http://www.debian.org/releases/).

Now I work in a CentOS environment. Does CentOS use similar names or have an entirely different methodology?

The reason I'm asking is that I want to set up a repo for home-grown packages and I want to have the benefits of unstable/testing/stable but I want to do it in a CentOS-friendly way.

Answer: 
CentOS do not have an unstable branch, because they aim to be binary-compatible with upstream. CentOS's upstream is Red Hat Enterprise Linux.

RHEL is a server distribution intended for long (2 year) release cycle and very long (now 13 year) support lifecycle, so it's all stable. Red Hat's development is all internal, there is no public "bleeding edge" repo like Debian's "testing" or "unstable", although Red Hat will usually do a public beta of RHEL shortly before release.

Red Hat's upstream is the Fedora project, which is a desktop distribution with a shorter (6 month) release cycle and a ~13 month support lifecycle. A significant number of the Fedora developers are Red Hat employees and Red Hat provide the project with infrastructure, but decisions about the distro are ultimately down to the steering committee ballot and Red Hat only have a vote just like other contributors and no greater. The point I'm trying to make is that Fedora is its own distro, it's not simply "unstable RHEL", although neither is the Fedora project ignorant that its software will be consumed by enterprise eventually.

Anyway, Fedora have a "rawhide" branch which can be seen as somewhat equivalent to Debian's "unstable". Rawhide is supposed to be a stable rolling-release testbed but it breaks often and is fixed often, as any testbed should.

Fedora packages very recent upstream versions of software, and are not afraid to change a version number mid-release. They're almost always on top of the most recent kernel too. For example, the current F18 released with kernel 3.6, the current available Fedora kernel is 3.9.6, and the latest stable available from kernel.org is 3.9.8.

Personally I think Fedora is the most stable way to get the latest version a lot of software. Arch probably packages more recent versions, but I feel Arch requires *a lot* more maintenance to use day-to-day than Fedora does.

The EPEL repository is exactly what the acronym stands for "Extra Packages for Enterprise Linux". These are additional packages built for EL (RHEL, CentOS, Scientific, etc) maintained by the Fedora Project. This contains packages which Red Hat don't package for RHEL but the community feel will be useful to have available anyway. It's not in any way an unstable or development branch, it's just community additions to the stable codebase. Packages in EPEL are usually intentionally structured *not* to interfere with the original underlying OS.
There is the RHN [FasTrack](http://www.redhat.com/rhn/rhndetails/fastrack/) channel. I would consider this to be very close in definition to Ubuntu's Testing. It provides packages which are considered production ready, but are slated for release during the next minor update to the OS.

As said in the other answers, this is an enterprise product and does not have a public development (unstable) channel.