# Extend

This section explains how developers can add functionality to TensorFlow's
capabilities. Begin by reading the following architectural overview:

  * @{$architecture$TensorFlow Architecture}

The following guides explain how to extend particular aspects of
TensorFlow:

  * @{$adding_an_op$Adding a New Op}, which explains how to create your own
    operations.
  * @{$add_filesys$Adding a Custom Filesystem Plugin}, which explains how to
    add support for your own shared or distributed filesystem.
  * @{$new_data_formats$Custom Data Readers}, which details how to add support
    for your own file and record formats.
  * @{$extend/estimators$Creating Estimators in tf.contrib.learn}, which explains how
    to write your own custom Estimator.  For example, you could build your
    own Estimator to implement some variation on standard linear regression.

Python is currently the only language supported by TensorFlow's API stability
promises.  However, TensorFlow also provides functionality in C++, Java, and Go,
plus community support for [Haskell](https://github.com/tensorflow/haskell) and
[Rust](https://github.com/tensorflow/rust).  If you'd like to create or
develop TensorFlow features in a language other than these languages, read the
following guide:

  * @{$language_bindings$TensorFlow in Other Languages}

To create tools compatible with TensorFlow's model format, read the following
guide:

  * @{$tool_developers$A Tool Developer's Guide to TensorFlow Model Files}


