diff --git a/libs/ftl/Android.bp b/libs/ftl/Android.bp
index eb8e57a..883d138 100644
--- a/libs/ftl/Android.bp
+++ b/libs/ftl/Android.bp
@@ -5,9 +5,9 @@
         address: true,
     },
     srcs: [
-        "SmallMap_test.cpp",
-        "SmallVector_test.cpp",
-        "StaticVector_test.cpp",
+        "small_map_test.cpp",
+        "small_vector_test.cpp",
+        "static_vector_test.cpp",
     ],
     cflags: [
         "-Wall",
diff --git a/libs/ftl/README.md b/libs/ftl/README.md
new file mode 100644
index 0000000..bdd750f
--- /dev/null
+++ b/libs/ftl/README.md
@@ -0,0 +1,41 @@
+# FTL
+
+FTL is a template library shared by SurfaceFlinger and InputFlinger, inspired by
+and supplementing the C++ Standard Library. The intent is to fill gaps for areas
+not (yet) covered—like cache-efficient data structures and lock-free concurrency
+primitives—and implement proposals that are missing or experimental in Android's
+libc++ branch. The design takes some liberties with standard compliance, notably
+assuming that exceptions are disabled.
+
+## Tests
+
+    atest ftl_test
+
+## Style
+
+- Based on [Google C++ Style](https://google.github.io/styleguide/cppguide.html).
+- Informed by [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines).
+
+Naming conventions are as follows:
+
+- `PascalCase`
+    - Types and aliases, except standard interfaces.
+    - Template parameters, including non-type ones.
+- `snake_case`
+    - Variables, and data members with trailing underscore.
+    - Functions, free and member alike.
+    - Type traits, with standard `_t` and `_v` suffixes.
+- `kCamelCase`
+    - Enumerators and `constexpr` constants with static storage duration.
+- `MACRO_CASE`
+    - Macros, with `FTL_` prefix unless `#undef`ed.
+
+Template parameter packs are named with the following convention:
+
+    typename T, typename... Ts
+    typename Arg, typename... Args
+
+    std::size_t I, std::size_t... Is
+    std::size_t Size, std::size_t... Sizes
+
+The `details` namespace contains implementation details.
diff --git a/libs/ftl/SmallMap_test.cpp b/libs/ftl/small_map_test.cpp
similarity index 99%
rename from libs/ftl/SmallMap_test.cpp
rename to libs/ftl/small_map_test.cpp
index fa00c06..4e7662b 100644
--- a/libs/ftl/SmallMap_test.cpp
+++ b/libs/ftl/small_map_test.cpp
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include <ftl/SmallMap.h>
+#include <ftl/small_map.h>
 #include <gtest/gtest.h>
 
 #include <cctype>
diff --git a/libs/ftl/SmallVector_test.cpp b/libs/ftl/small_vector_test.cpp
similarity index 96%
rename from libs/ftl/SmallVector_test.cpp
rename to libs/ftl/small_vector_test.cpp
index d0c2858..dbb2d4f 100644
--- a/libs/ftl/SmallVector_test.cpp
+++ b/libs/ftl/small_vector_test.cpp
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include <ftl/SmallVector.h>
+#include <ftl/small_vector.h>
 #include <gtest/gtest.h>
 
 #include <algorithm>
@@ -72,8 +72,8 @@
     }
     {
         // Array constructor.
-        const float kFloats[] = {.1f, .2f, .3f};
-        SmallVector vector(kFloats);
+        const float floats[] = {.1f, .2f, .3f};
+        SmallVector vector(floats);
 
         EXPECT_EQ(vector, (SmallVector{.1f, .2f, .3f}));
         EXPECT_FALSE(vector.dynamic());
@@ -149,8 +149,8 @@
     EXPECT_STREQ(chars.begin(), "abcdefghij");
 
     // Constructor takes iterator range.
-    const char kString[] = "123456";
-    SmallVector<char, 10> string(std::begin(kString), std::end(kString));
+    const char numbers[] = "123456";
+    SmallVector<char, 10> string(std::begin(numbers), std::end(numbers));
 
     EXPECT_FALSE(string.dynamic());
     EXPECT_STREQ(string.begin(), "123456");
@@ -171,7 +171,7 @@
 
 TEST(SmallVector, CopyableElement) {
     struct Pair {
-        // Needed because std::vector emplace does not use uniform initialization.
+        // Needed because std::vector does not use list initialization to emplace.
         Pair(int a, int b) : a(a), b(b) {}
 
         const int a, b;
@@ -325,8 +325,8 @@
 
     // Constructor takes array reference.
     {
-        const char* kStrings[] = {"cake", "lie"};
-        strings = SmallVector(kStrings);
+        const char* array[] = {"cake", "lie"};
+        strings = SmallVector(array);
         EXPECT_FALSE(strings.dynamic());
     }
 
diff --git a/libs/ftl/StaticVector_test.cpp b/libs/ftl/static_vector_test.cpp
similarity index 95%
rename from libs/ftl/StaticVector_test.cpp
rename to libs/ftl/static_vector_test.cpp
index db42d23..3e66282 100644
--- a/libs/ftl/StaticVector_test.cpp
+++ b/libs/ftl/static_vector_test.cpp
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include <ftl/StaticVector.h>
+#include <ftl/static_vector.h>
 #include <gtest/gtest.h>
 
 #include <algorithm>
@@ -68,8 +68,8 @@
     }
     {
         // Array constructor.
-        const float kFloats[] = {.1f, .2f, .3f};
-        StaticVector vector(kFloats);
+        const float floats[] = {.1f, .2f, .3f};
+        StaticVector vector(floats);
         EXPECT_EQ(vector, (StaticVector{.1f, .2f, .3f}));
     }
     {
@@ -122,11 +122,11 @@
             const char* str;
         };
 
-        const char* kStrings[] = {"a", "b", "c", "d"};
+        const char* strings[] = {"a", "b", "c", "d"};
 
         {
             // Two iterator-like elements.
-            StaticVector<String, 3> vector(kStrings, kStrings + 3);
+            StaticVector<String, 3> vector(strings, strings + 3);
             ASSERT_EQ(vector.size(), 2u);
 
             EXPECT_STREQ(vector[0].str, "a");
@@ -134,7 +134,7 @@
         }
         {
             // Disambiguating iterator constructor.
-            StaticVector<String, 3> vector(ftl::IteratorRange, kStrings, kStrings + 3);
+            StaticVector<String, 3> vector(ftl::kIteratorRange, strings, strings + 3);
             ASSERT_EQ(vector.size(), 3u);
 
             EXPECT_STREQ(vector[0].str, "a");
@@ -153,8 +153,8 @@
     EXPECT_STREQ(chars.begin(), "abcdefghi");
 
     // Constructor takes iterator range.
-    const char kString[] = "123456";
-    StaticVector<char, 10> string(std::begin(kString), std::end(kString));
+    const char numbers[] = "123456";
+    StaticVector<char, 10> string(std::begin(numbers), std::end(numbers));
 
     EXPECT_STREQ(string.begin(), "123456");
     EXPECT_EQ(string.size(), 7u);
@@ -290,8 +290,8 @@
 
     // Constructor takes array reference.
     {
-        const char* kStrings[] = {"cake", "lie"};
-        strings = StaticVector(kStrings);
+        const char* array[] = {"cake", "lie"};
+        strings = StaticVector(array);
     }
 
     EXPECT_GT(sorted, strings);
