.. 
.. Copyright 2015 Comcast Cable Communications Management, LLC
.. 
.. Licensed under the Apache License, Version 2.0 (the "License");
.. you may not use this file except in compliance with the License.
.. You may obtain a copy of the License at
.. 
..     http://www.apache.org/licenses/LICENSE-2.0
.. 
.. Unless required by applicable law or agreed to in writing, software
.. distributed under the License is distributed on an "AS IS" BASIS,
.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
.. See the License for the specific language governing permissions and
.. limitations under the License.
.. 

General
*******

Who is using Traffic Control?
=============================
	`Comcast Cable <http://www.comcast.com/>`_
		Comcast is the original developer or Traffic Control and is using it for all it's video delivery to so-called 'second screen applications' (PCs, tablets, phones), but also for delivering images and software to it's X1 platform, and other applications. The Traffic Control CDN at Comcast serves more than a peta byte of content a day.

	`Cox Communications <http://www.cox.com/>`_
		.

What is Rascal?
===============
	Rascal was the original name for Traffic Monitor. You will sometimes still see this name in the source, or in older documents.

What is the CCR?
================
	Comcast Content Router was the original name for Traffic Router. You will sometimes still see this name in the source, or in older documents.

What is Twelve Monkeys?
=======================
	Twelve Monkeys was the the original internal name for Traffic Ops. You will sometimes still see this name in the source, or in older documents. It's also a good movie.

What license is Traffic Control released under?
===============================================
	See the `LICENSE file<https://github.com/Comcast/traffic_control/blob/master/LICENSE>`_
