.. 
.. 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 of Traffic Control and is using it for all it's IP video delivery, delivering images and software to it's X1 platform, and for `delivering third party content <https://www.comcastwholesale.com/products-services/content-delivery-network>`_ to it's footprint.

	`Cox Communications <http://www.cox.com/>`_
		
	`Cisco <http://www.cisco.com/>`_
		Cisco has a product called `Open Media Distribution <http://www.cisco.com/c/en/us/products/video/open-media-distribution/index.html>`_ that is based on Traffic Control. 

	`Concurrent <https://www.ccur.com/>`_ 
		Concurrent has a product that uses Traffic Control, see their `github page <https://github.com/concurrentlabs/laguna>`_ for more info.

	`Augere Pakistan / QUBEE <http://www.qubee.com.pk>`_

How do I get help with Traffic Control?
=======================================
	Hop on to our Slack Channel by filling out `this form <https://goo.gl/Suzakj>`_, or send a question to our google forum `here <https://groups.google.com/forum/#!forum/traffic_control>`_.
	
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>`_
