Developer
Kevin Doherty
kdoherty@meta.com
Performance
YoY:+93%Key patterns and highlights from this developer's activity.
Breakdown of growth, maintenance, and fixes effort over time.
Bugs introduced vs. fixed over time.
No bugs introduced or fixed in this period.
Reclassifies engineering effort based on bug attribution. Commits that introduced bugs are retrospectively counted as poor investments.
Investment Quality reclassifies engineering effort based on bug attribution data. Commits identified as buggy origins (those that introduced bugs later fixed by someone) have their grow and maintenance time moved into the Wasted Time category. Their waste (fix commits) remains counted as productive. All other commits retain their standard classification: grow is productive, maintenance is maintenance, and waste (fixes) is productive.
The standard model classifies commits as Growth, Maintenance, or Fixes. Investment Quality adds a quality lens: a commit that introduced a bug is retrospectively counted as a poor investment — the engineering time spent on it was wasted because it ultimately required additional fix work. Fix commits (Fixes in the standard model) are reframed as productive, because fixing bugs is valuable work.
Currently computed client-side from commit and bug attribution data. Ideal server-side endpoint:
POST /v1/organizations/{orgId}/investment-quality
Content-Type: application/json
Request:
{
"startTime": "2025-01-01T00:00:00Z",
"endTime": "2025-12-31T23:59:59Z",
"bucketSize": "BUCKET_SIZE_MONTH",
"groupBy": ["repository_id" | "deliverer_email"]
}
Response:
{
"productivePct": 74,
"maintenancePct": 18,
"wastedPct": 8,
"buckets": [
{
"bucketStart": "2025-01-01T00:00:00Z",
"productive": 4.2,
"maintenance": 1.8,
"wasted": 0.6
}
]
}Latest analyzed commits from this developer.
| Hash | Message | Date | Files | Effort |
|---|---|---|---|---|
| 3f93977 | This commit **fixes a critical use-after-free bug** within the **`folly::observer::HazptrObserver`** component, specifically during its destruction. The issue, identified by AddressSanitizer, stemmed from incorrect handling of the 'alive' state and the timing of lock release relative to retiring the old state. The **bug fix** ensures that the lock is properly released before the old state is retired, preventing memory corruption. This significantly improves the stability and reliability of the `folly::observer` library, particularly when `HazptrObserver` objects are being deallocated. | Feb 4 | 1 | waste |
| c941f98 | This commit **standardizes the `getUnderlyingObserver` method** across key leaf observer types within the **`folly/observer` library**. It introduces a new `getUnderlyingObserver` method to `CoreCachedObserver`, providing a **new capability** to directly access its underlying observer. Concurrently, the existing `getUnderlyingObserver` in `ReadMostlyTLObserver` is **refactored** to return a `const&`, aligning its behavior and efficiency with other observer implementations. This change enhances consistency and provides a uniform interface for inspecting the wrapped observer, with new tests ensuring the correct functionality of `CoreCachedObserver`'s new method. | Jan 29 | 3 | maint |
| e7a43cd | This commit **reverts** a previous change that initialized "luna settings" for Thrift flags, effectively restoring the system to its prior state. It **reintroduces** the `server_header_reject_framed` flags within **Thrift C++2 server connection handling** (`thrift/lib/cpp2/server/Cpp2Connection.cpp`), which were removed by the original commit. Additionally, this **back-out removes** the `initThriftFlagFollySettings` function and all associated `isMocked` logic from the core **Thrift flag management system** (`thrift/lib/cpp2/Flags.cpp`, `thrift/lib/cpp2/Flags.h`, `thrift/lib/cpp2/test/FlagsTest.cpp`). This ensures the **Thrift C++2 library's flag handling** and **server connection behavior** revert to their pre-luna settings configuration. | Nov 20 | 4 | maint |
| e9920c0 | This commit **refactors the flag mocking infrastructure** within **Thrift C++ test suites**, specifically affecting `thrift/lib/cpp2/async/tests` and `thrift/lib/cpp2/transport/rocket/framing/test`. It replaces the explicit `THRIFT_FLAG_SET_MOCK` and `THRIFT_FLAG_UNMOCK` calls with the more modern and safer `THRIFT_FLAG_MOCK_GUARD` mechanism. This **maintenance refactoring** is a crucial preparatory step for the upcoming migration of **Thrift Flags to Folly Settings**, which does not support the older "unmock" pattern. By adopting `THRIFT_FLAG_MOCK_GUARD`, the tests become more robust and compatible with future flag management systems, simplifying test setup and teardown. | Nov 17 | 2 | maint |
| 332dcb2 | This commit introduces a **general testing utility** for **Thrift Flags** by adding `ThriftFlagMockGuard` to `thrift/lib/cpp2/test/FlagTestUtils.h`. This **refactoring** centralizes the mock guard implementation, allowing tests to consistently mock Thrift Flags. It replaces a similar, previously duplicated utility in the `privacy/` module, thereby improving the **maintainability and reusability** of test infrastructure across the codebase. | Nov 17 | 1 | maint |
| dfbac2b | This commit introduces a **new capability** to initialize **Thrift flag Folly settings** for Luna, addressing a potential fiber stack overflow by running initialization on the fiber main context. It significantly enhances the **Thrift flag system** within `thrift/lib/cpp2` by adding support for reporting whether a flag has a mocked value, introducing a `hasMockValue` method to `FlagWrapper` and updating `getAllThriftFlags` to expose this status. This **refinement** also stops logging expected diffs when Thrift flags are mocked, improving clarity. New test cases in `FlagsTest.cpp` validate the `isMocked` functionality, ensuring robust handling of mocked flag states. | Nov 13 | 4 | grow |
| f1fcbd1 | This commit **introduces and initializes new Thrift flags** within the `thrift/lib/cpp2` module, specifically targeting **server header rejection settings** related to "luna". It **adds declarations** for these flags in `Flags.h` and **defines and integrates their initialization** into the existing flags backend in `Flags.cpp` via `initThriftFlagFollySettings`. This work represents a **new capability**, enabling configurable control over how Thrift servers handle certain header rejections by leveraging Folly settings. The changes primarily affect the **Thrift flags backend** and **server-side header processing logic**. | Oct 29 | 3 | grow |
| 0d86cc5 | This commit **removes** the `thrift/lib/python` library, as it has been identified as unused within the project. This **maintenance cleanup** specifically targets the **Thrift Python bindings**, eliminating dead code and reducing the overall codebase footprint. The primary motivation is to **break external dependencies** on internal `thrift` components, such as `thrift::detail::FlagWrapper`. By removing these references, the change significantly **simplifies future internal refactoring and modifications** within the core `thrift` library, improving its long-term maintainability and modularity. | Oct 27 | 11 | – |
| 29d0542 | This commit provides a **maintenance fix** for the **Folly Settings library**, specifically addressing compiler warnings related to unused variables. It modifies the `FOLLY_SETTING_REGISTER` macro within `folly/settings/Settings.h` to apply the `[[maybe_unused]]` attribute to its internal variable declaration. This change prevents the compiler from flagging variables as unused when a setting is registered but not immediately accessed, thereby **reducing build noise** and improving code hygiene. This fix specifically targets the registration mechanism and does not hide warnings for genuinely unused `FOLLY_SETTING_DEFINE`s. | Oct 1 | 1 | waste |
| 34939f5 | This commit provides a **bug fix** for **MSVC compilation** of the **`SingletonRelaxedCounter`** utility within the `folly/concurrency` library. It resolves a build issue by **modifying the `Arg` struct** in `folly/concurrency/SingletonRelaxedCounter.h`, specifically changing its members from references to pointers. Additionally, the initialization of the `mutate_slow` function is adjusted to accommodate these changes. This ensures the `SingletonRelaxedCounter` can be correctly compiled and utilized on the MSVC platform, restoring its functionality for Windows-based development. | Oct 1 | 1 | waste |
| 6539465 | This commit introduces a **refactoring** to the **Thrift C++2 library**'s flag management system. Specifically, it modifies the `THRIFT_FLAG_DEFINE` macro in `thrift/lib/cpp2/Flags.h` to **eagerly register flags** at definition time, rather than lazily upon first access. This **maintenance** change ensures that all Thrift flags are properly registered and available before any potential usage, preventing issues that could arise from accessing an uninitialized flag. The change improves the robustness and predictability of flag behavior for all downstream components utilizing Thrift flags. | Sep 25 | 1 | maint |
| c0e0586 | This commit **refactors** the **Folly settings system** by introducing a new macro, `FOLLY_SETTING_REGISTER`, which allows defining and registering a setting without automatically generating an accessor. This change splits the functionality previously combined in `FOLLY_SETTING_DEFINE`, enabling settings to be registered for discovery without direct usage in the current compilation unit. The primary benefit is to support scenarios where a setting might be conditionally used or only accessed indirectly, preventing `[[maybe_unused]]` warnings and improving code flexibility. This enhancement impacts how settings are declared and registered within the **Folly framework**, providing more granular control over setting definitions. | Sep 24 | 4 | grow |
| 627de48 | This commit introduces a **new capability** to the **`folly::settings`** module, enabling observers to be named based on the setting's identifier. By implementing `NamedObserverCreator` and modifying the `getObserver` function in `folly/settings/detail/SettingsImpl.h`, this change provides more meaningful metadata for observer instances. This enhancement is crucial for **improving observer dependency tracking tooling**, allowing for better introspection and debugging of setting changes. A new test in `folly/settings/test/SettingsTest.cpp` verifies this functionality, alongside minor refactoring in `folly/settings/Settings.cpp` to replace `std::map` with `std::unordered_map`. | Sep 15 | 4 | maint |
| 6889db1 | This commit introduces a **new API** within the `folly::settings` library, enabling direct access to a setting's value while automatically registering an observer dependency. Specifically, it adds `valueRegisterObserverDependency` and `observer()` methods to `SettingWrapper`, which now provides a direct way to retrieve a delayed-initialized `Observer` instance. This **enhancement** streamlines the process of observing setting changes, **deprecating** the standalone `folly::settings::getObserver` helper in favor of the more integrated `FOLLY_SETTING(proj, name).observer()` call. The change improves the ergonomics and consistency of the `folly::settings` API for dependency tracking, with new tests and benchmarks validating its behavior and performance. | Sep 15 | 6 | maint |
| dddac15 | This commit introduces a **feature enhancement** to the **`folly::settings` library**, modifying the observer mechanism to use **value observers** by default. The `observe()` method in `folly/settings/detail/SettingsImpl.h` now ensures that callbacks are only triggered when a `FOLLY_SETTING`'s value *actually changes*, provided the setting's type is equality comparable. This change prevents redundant notifications, aligning with user expectations and improving the efficiency of the **settings observer subsystem**. New tests in `folly/settings/test/SettingsTest.cpp` validate this behavior, confirming that observers are not called for unchanged values and can still be created for types without equality comparison. | Sep 15 | 3 | maint |
| 3bb5eda | This commit **refactors** the **`folly/settings`** library by fully qualifying `uint64_t` to `::std::uint64_t` within the `FOLLY_SETTING_DECLARE` macro and an `Accessor` struct in `folly/settings/Settings.h`. This **maintenance** change explicitly scopes the 64-bit unsigned integer type, enhancing **type safety** and robustness. By preventing potential ambiguity or compilation errors from varying `using namespace` directives, it ensures consistent and correct type resolution for settings values. This update improves the reliability of the settings system across different compilation environments. | Sep 12 | 1 | maint |
| e826220 | This commit introduces a **portable macro** within `folly/settings/Settings.h` to standardize the definition of **section attributes**. This **refactoring** effort specifically targets how **folly settings caches** are declared, ensuring compatibility across diverse compiler environments. By abstracting compiler-specific directives, the change improves the **cross-platform portability** of `folly`'s settings mechanism. This **maintenance** update supports MSVC, Apple, and ELF-based systems, preventing potential build issues and ensuring consistent behavior when defining settings caches on different operating systems and architectures. | Sep 11 | 1 | maint |
| 9f61d6f | This commit **refactors the build configuration** for the **`folly/settings`** module by updating its `BUCK` file. Specifically, it separates `types` and `immutables` into their own distinct build targets, extracting them from the main `settings` target. This **refactoring** improves the modularity and dependency management within the `folly` build system, ensuring clearer component separation and potentially optimizing build processes for cross-platform targets. | Sep 11 | 1 | maint |
| b5d2391 | This commit **fixes a compilation error on Windows** within the **`folly/settings` module**. It addresses an overload resolution issue where `tryTo(std::string_view)` failed to correctly find the `tryTo(StringPiece)` overload on Windows, preventing successful compilation. The **bug fix** explicitly converts `src.value` to `StringPiece` before passing it to the `tryTo` function within the `convertTo` function in `folly/settings/Types.h`. This ensures that code utilizing `folly::settings` for string conversions **compiles successfully across all platforms**, resolving a platform-specific build failure. | Sep 11 | 1 | waste |
| bcb18cd | This commit **refactors** the **Folly settings access mechanism** to ensure that setting access calls are more effectively **inlined across translation units**. It introduces an `Accessor` template struct in `folly/settings/Settings.h` and updates existing macros to leverage it, aiming for better encapsulation and potential **performance optimization**. This change is a **regression prevention** measure following D81616924, particularly for builds not using Link-Time Optimization (LTO). A new benchmark, `trivial_from_another_translation_unit`, was added to `folly/settings/test/SettingsBenchmarks.cpp` to validate this behavior. | Sep 5 | 3 | maint |
This commit **fixes a critical use-after-free bug** within the **`folly::observer::HazptrObserver`** component, specifically during its destruction. The issue, identified by AddressSanitizer, stemmed from incorrect handling of the 'alive' state and the timing of lock release relative to retiring the old state. The **bug fix** ensures that the lock is properly released before the old state is retired, preventing memory corruption. This significantly improves the stability and reliability of the `folly::observer` library, particularly when `HazptrObserver` objects are being deallocated.
This commit **standardizes the `getUnderlyingObserver` method** across key leaf observer types within the **`folly/observer` library**. It introduces a new `getUnderlyingObserver` method to `CoreCachedObserver`, providing a **new capability** to directly access its underlying observer. Concurrently, the existing `getUnderlyingObserver` in `ReadMostlyTLObserver` is **refactored** to return a `const&`, aligning its behavior and efficiency with other observer implementations. This change enhances consistency and provides a uniform interface for inspecting the wrapped observer, with new tests ensuring the correct functionality of `CoreCachedObserver`'s new method.
This commit **reverts** a previous change that initialized "luna settings" for Thrift flags, effectively restoring the system to its prior state. It **reintroduces** the `server_header_reject_framed` flags within **Thrift C++2 server connection handling** (`thrift/lib/cpp2/server/Cpp2Connection.cpp`), which were removed by the original commit. Additionally, this **back-out removes** the `initThriftFlagFollySettings` function and all associated `isMocked` logic from the core **Thrift flag management system** (`thrift/lib/cpp2/Flags.cpp`, `thrift/lib/cpp2/Flags.h`, `thrift/lib/cpp2/test/FlagsTest.cpp`). This ensures the **Thrift C++2 library's flag handling** and **server connection behavior** revert to their pre-luna settings configuration.
This commit **refactors the flag mocking infrastructure** within **Thrift C++ test suites**, specifically affecting `thrift/lib/cpp2/async/tests` and `thrift/lib/cpp2/transport/rocket/framing/test`. It replaces the explicit `THRIFT_FLAG_SET_MOCK` and `THRIFT_FLAG_UNMOCK` calls with the more modern and safer `THRIFT_FLAG_MOCK_GUARD` mechanism. This **maintenance refactoring** is a crucial preparatory step for the upcoming migration of **Thrift Flags to Folly Settings**, which does not support the older "unmock" pattern. By adopting `THRIFT_FLAG_MOCK_GUARD`, the tests become more robust and compatible with future flag management systems, simplifying test setup and teardown.
This commit introduces a **general testing utility** for **Thrift Flags** by adding `ThriftFlagMockGuard` to `thrift/lib/cpp2/test/FlagTestUtils.h`. This **refactoring** centralizes the mock guard implementation, allowing tests to consistently mock Thrift Flags. It replaces a similar, previously duplicated utility in the `privacy/` module, thereby improving the **maintainability and reusability** of test infrastructure across the codebase.
This commit introduces a **new capability** to initialize **Thrift flag Folly settings** for Luna, addressing a potential fiber stack overflow by running initialization on the fiber main context. It significantly enhances the **Thrift flag system** within `thrift/lib/cpp2` by adding support for reporting whether a flag has a mocked value, introducing a `hasMockValue` method to `FlagWrapper` and updating `getAllThriftFlags` to expose this status. This **refinement** also stops logging expected diffs when Thrift flags are mocked, improving clarity. New test cases in `FlagsTest.cpp` validate the `isMocked` functionality, ensuring robust handling of mocked flag states.
This commit **introduces and initializes new Thrift flags** within the `thrift/lib/cpp2` module, specifically targeting **server header rejection settings** related to "luna". It **adds declarations** for these flags in `Flags.h` and **defines and integrates their initialization** into the existing flags backend in `Flags.cpp` via `initThriftFlagFollySettings`. This work represents a **new capability**, enabling configurable control over how Thrift servers handle certain header rejections by leveraging Folly settings. The changes primarily affect the **Thrift flags backend** and **server-side header processing logic**.
This commit **removes** the `thrift/lib/python` library, as it has been identified as unused within the project. This **maintenance cleanup** specifically targets the **Thrift Python bindings**, eliminating dead code and reducing the overall codebase footprint. The primary motivation is to **break external dependencies** on internal `thrift` components, such as `thrift::detail::FlagWrapper`. By removing these references, the change significantly **simplifies future internal refactoring and modifications** within the core `thrift` library, improving its long-term maintainability and modularity.
This commit provides a **maintenance fix** for the **Folly Settings library**, specifically addressing compiler warnings related to unused variables. It modifies the `FOLLY_SETTING_REGISTER` macro within `folly/settings/Settings.h` to apply the `[[maybe_unused]]` attribute to its internal variable declaration. This change prevents the compiler from flagging variables as unused when a setting is registered but not immediately accessed, thereby **reducing build noise** and improving code hygiene. This fix specifically targets the registration mechanism and does not hide warnings for genuinely unused `FOLLY_SETTING_DEFINE`s.
This commit provides a **bug fix** for **MSVC compilation** of the **`SingletonRelaxedCounter`** utility within the `folly/concurrency` library. It resolves a build issue by **modifying the `Arg` struct** in `folly/concurrency/SingletonRelaxedCounter.h`, specifically changing its members from references to pointers. Additionally, the initialization of the `mutate_slow` function is adjusted to accommodate these changes. This ensures the `SingletonRelaxedCounter` can be correctly compiled and utilized on the MSVC platform, restoring its functionality for Windows-based development.
This commit introduces a **refactoring** to the **Thrift C++2 library**'s flag management system. Specifically, it modifies the `THRIFT_FLAG_DEFINE` macro in `thrift/lib/cpp2/Flags.h` to **eagerly register flags** at definition time, rather than lazily upon first access. This **maintenance** change ensures that all Thrift flags are properly registered and available before any potential usage, preventing issues that could arise from accessing an uninitialized flag. The change improves the robustness and predictability of flag behavior for all downstream components utilizing Thrift flags.
This commit **refactors** the **Folly settings system** by introducing a new macro, `FOLLY_SETTING_REGISTER`, which allows defining and registering a setting without automatically generating an accessor. This change splits the functionality previously combined in `FOLLY_SETTING_DEFINE`, enabling settings to be registered for discovery without direct usage in the current compilation unit. The primary benefit is to support scenarios where a setting might be conditionally used or only accessed indirectly, preventing `[[maybe_unused]]` warnings and improving code flexibility. This enhancement impacts how settings are declared and registered within the **Folly framework**, providing more granular control over setting definitions.
This commit introduces a **new capability** to the **`folly::settings`** module, enabling observers to be named based on the setting's identifier. By implementing `NamedObserverCreator` and modifying the `getObserver` function in `folly/settings/detail/SettingsImpl.h`, this change provides more meaningful metadata for observer instances. This enhancement is crucial for **improving observer dependency tracking tooling**, allowing for better introspection and debugging of setting changes. A new test in `folly/settings/test/SettingsTest.cpp` verifies this functionality, alongside minor refactoring in `folly/settings/Settings.cpp` to replace `std::map` with `std::unordered_map`.
This commit introduces a **new API** within the `folly::settings` library, enabling direct access to a setting's value while automatically registering an observer dependency. Specifically, it adds `valueRegisterObserverDependency` and `observer()` methods to `SettingWrapper`, which now provides a direct way to retrieve a delayed-initialized `Observer` instance. This **enhancement** streamlines the process of observing setting changes, **deprecating** the standalone `folly::settings::getObserver` helper in favor of the more integrated `FOLLY_SETTING(proj, name).observer()` call. The change improves the ergonomics and consistency of the `folly::settings` API for dependency tracking, with new tests and benchmarks validating its behavior and performance.
This commit introduces a **feature enhancement** to the **`folly::settings` library**, modifying the observer mechanism to use **value observers** by default. The `observe()` method in `folly/settings/detail/SettingsImpl.h` now ensures that callbacks are only triggered when a `FOLLY_SETTING`'s value *actually changes*, provided the setting's type is equality comparable. This change prevents redundant notifications, aligning with user expectations and improving the efficiency of the **settings observer subsystem**. New tests in `folly/settings/test/SettingsTest.cpp` validate this behavior, confirming that observers are not called for unchanged values and can still be created for types without equality comparison.
This commit **refactors** the **`folly/settings`** library by fully qualifying `uint64_t` to `::std::uint64_t` within the `FOLLY_SETTING_DECLARE` macro and an `Accessor` struct in `folly/settings/Settings.h`. This **maintenance** change explicitly scopes the 64-bit unsigned integer type, enhancing **type safety** and robustness. By preventing potential ambiguity or compilation errors from varying `using namespace` directives, it ensures consistent and correct type resolution for settings values. This update improves the reliability of the settings system across different compilation environments.
This commit introduces a **portable macro** within `folly/settings/Settings.h` to standardize the definition of **section attributes**. This **refactoring** effort specifically targets how **folly settings caches** are declared, ensuring compatibility across diverse compiler environments. By abstracting compiler-specific directives, the change improves the **cross-platform portability** of `folly`'s settings mechanism. This **maintenance** update supports MSVC, Apple, and ELF-based systems, preventing potential build issues and ensuring consistent behavior when defining settings caches on different operating systems and architectures.
This commit **refactors the build configuration** for the **`folly/settings`** module by updating its `BUCK` file. Specifically, it separates `types` and `immutables` into their own distinct build targets, extracting them from the main `settings` target. This **refactoring** improves the modularity and dependency management within the `folly` build system, ensuring clearer component separation and potentially optimizing build processes for cross-platform targets.
This commit **fixes a compilation error on Windows** within the **`folly/settings` module**. It addresses an overload resolution issue where `tryTo(std::string_view)` failed to correctly find the `tryTo(StringPiece)` overload on Windows, preventing successful compilation. The **bug fix** explicitly converts `src.value` to `StringPiece` before passing it to the `tryTo` function within the `convertTo` function in `folly/settings/Types.h`. This ensures that code utilizing `folly::settings` for string conversions **compiles successfully across all platforms**, resolving a platform-specific build failure.
This commit **refactors** the **Folly settings access mechanism** to ensure that setting access calls are more effectively **inlined across translation units**. It introduces an `Accessor` template struct in `folly/settings/Settings.h` and updates existing macros to leverage it, aiming for better encapsulation and potential **performance optimization**. This change is a **regression prevention** measure following D81616924, particularly for builds not using Link-Time Optimization (LTO). A new benchmark, `trivial_from_another_translation_unit`, was added to `folly/settings/test/SettingsBenchmarks.cpp` to validate this behavior.
Commit activity distribution by hour and day of week. Shows when this developer is most active.
Developers who frequently work on the same files and symbols. Higher score means stronger code collaboration.