Open-Source Wikis

/

TensorFlow

/

Fun facts

tensorflow/tensorflow

Fun facts

Curiosities discovered while surveying the repo.

"A. Unique TensorFlower" is not a person

Roughly 12 000+ commits since 2024-01-01 are attributed to A. Unique TensorFlower <gardener@tensorflow.org>, plus ~500 to TensorFlower Gardener (the older name). That's the Copybara mirroring bot copying changes from Google's internal monorepo. The project has effectively two faces: an open-source GitHub repo where humans send PRs, and an internal monorepo where Googlers commit. PRs flow inward, internal commits flow outward, and the bot signs everything that goes through.

If you git log --pretty=format:"%an" | sort | uniq -c you'll see this single "author" eclipse every individual contributor.

A 764 KB release notes file

RELEASE.md at the repo root is ~764 574 bytes — a single Markdown file documenting every release since v0.5.0 in 2015. It is one of the largest tracked text files in the tree.

tensorflow.bzl is bigger than most subsystems

tensorflow/tensorflow.bzl is ~129 878 bytes of Bazel/Starlark macros. It defines the cc_library / py_library / proto_library helpers that almost every BUILD file in the project uses. Touching it can re-key the build graph for thousands of targets.

Keras backend.py is a 200 KB Python file

tensorflow/python/keras/backend.py is ~205 953 bytes — a kitchen-sink of low-level utilities that Keras layers used to call. It's now part of the legacy bundled Keras (Keras 3 lives in keras-team/keras), but the file is still here for tf.keras compatibility.

The single largest kernel file

tensorflow/core/kernels/maxpooling_op.cc is ~78 170 bytes. The runner-up is matmul_op_impl.h at ~50 KB. Pooling and matmul both have many specialised paths (CPU/GPU, dtypes, padding modes), which is why their files balloon.

Some directories were named for the world that no longer exists

  • tensorflow/python/keras/legacy_tf_layers/ — exists because the original tf.layers API was deprecated in favour of tf.keras.layers, so the old layer base class still lives in a directory called legacy_tf_layers inside the legacy Keras snapshot.
  • tensorflow/lite/toco/ — TOCO ("TensorFlow Lite Optimizing Converter") is the original v1 converter; the MLIR-based replacement under tensorflow/compiler/mlir/lite/ is now the default, but TOCO is kept around for compatibility.
  • tensorflow/contrib/ doesn't exist anymore (purged in 2.0), but enormous numbers of old issues, blog posts, and StackOverflow answers still reference it.

The C API has been astonishingly stable

tensorflow/c/c_api.h is the cross-language ABI. The headline entry points (TF_NewSession, TF_Run, TF_NewTensor) have been backwards-compatible for nearly the entire life of the project — and as a result tensorflow/java/, tensorflow/go/, and tensorflow/js/ all bind to them rather than re-implementing the runtime.

Two TensorFlows in one repo: Eager and Graph

The repo carries two execution modes side by side. Eager mode runs ops immediately (the modern default). Graph mode (still alive via @tf.function and tf.compat.v1.Session) builds a Graph and hands it to an Executor. Most ops have to work in both worlds, and a lot of complexity in tensorflow/python/eager/polymorphic_function/ exists exactly to bridge them.

Two converters for TFLite

  • The original TOCO lives in tensorflow/lite/toco/.
  • The newer MLIR-based converter lives in tensorflow/compiler/mlir/lite/.

The TFLiteConverter Python class transparently routes to one or the other based on flags. Most paths now go through MLIR, but TOCO is still vendored.

The repo started with a single commit message

"TensorFlow: Initial commit of TensorFlow library. TensorFlow is an open source software library for numerical computation using data flow graphs."

That's the very first entry on 2015-11-06. Ten years and ~193 000 commits later, the project is still organised around the same metaphor — a graph of ops on tensors — even though most users never see the graph anymore.

The repo is largely a monorepo of monorepos

  • third_party/ vendors Eigen, gRPC, protobuf, Abseil, ICU, MKL, ml_dtypes, ruy, FlatBuffers, NCCL, TensorRT, and many more, each via its own Bazel patch.
  • The XLA compiler used to live at tensorflow/compiler/xla/ and was lifted out to its own openxla/xla repo in 2023, but it's still pulled back in via third_party/xla.
  • Keras was lifted out the same way — tensorflow/python/keras/ is a frozen v2 snapshot; new development happens in keras-team/keras.

The pattern is "extract to its own repo, depend back on it" — this repo keeps shrinking at the edges while staying the same shape.

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Fun facts – TensorFlow wiki | Factory