‹ Reports
The Dispatch

OSS Report: facebook/folly


Development Team Focuses on Cross-Platform Build Stability Amidst Ongoing Compatibility Challenges

Folly, an open-source C++ library developed by Facebook, aims to enhance performance in C++17 applications. It serves as a foundational library for various Facebook projects, offering core components for high-performance computing.

Recent development efforts have concentrated on improving cross-platform build stability and addressing compatibility issues, particularly on Windows and macOS. This focus is evident from multiple pull requests and issues related to build failures and platform-specific challenges.

Recent Activity

The recent issues and pull requests indicate a concerted effort to address build-related problems across different platforms. Notable issues include #2285 concerning Windows build errors with CMake, and #2266 regarding macOS 10.15 build failures. These issues highlight ongoing challenges in maintaining cross-platform compatibility.

The development team has been actively engaged in resolving these issues, with notable contributions from members like Alexey Spiridonov, who improved coroutine tests, and Neil Mitchell, who updated Rust version support. Other key activities include Jay Feldblum's improvements to CMake builds and Simon Krueger's implementation of fast_float for string-to-float conversion.

Recent Activities of the Development Team

Of Note

  1. Cross-Platform Build Issues: Persistent challenges with building Folly on Windows and macOS platforms suggest a need for enhanced documentation or dependency management tools.

  2. Frequent Reverts: The number of reverts indicates a responsive approach to maintaining code stability but also suggests potential gaps in pre-release testing.

  3. SIMD Optimization Efforts: PRs focused on SIMD operations reflect a commitment to performance enhancements crucial for high-performance applications.

  4. Community Engagement: Active discussions around issues and pull requests demonstrate strong community involvement, essential for troubleshooting and feature development.

  5. Older Unresolved Pull Requests: Some older PRs remain open without resolution, indicating possible bottlenecks in the review process that could impact project momentum.

Quantified Reports

Quantify Issues



Recent GitHub Issues Activity

Timespan Opened Closed Comments Labeled Milestones
7 Days 1 0 0 1 1
30 Days 6 7 7 6 1
90 Days 23 48 33 23 1
1 Year 75 70 124 75 1
All Time 1129 823 - - -

Like all software activity quantification, these numbers are imperfect but sometimes useful. Comments, Labels, and Milestones refer to those issues opened in the timespan in question.

Quantify commits



Quantified Commit Activity Over 30 Days

Developer Avatar Branches PRs Commits Files Changes
Simon Krueger 1 0/0/0 6 11 1969
Jay Feldblum 1 0/0/0 28 35 1424
Denis Yaroshevskiy 1 5/0/4 10 43 837
Michael Z. Lee 1 0/0/0 2 1 740
Kenny Yu 1 0/0/0 1 3 579
Nitin Garg 1 0/0/0 1 3 579
Alexey Spiridonov 1 0/0/0 5 6 403
Giuseppe Ottaviano 1 0/0/0 3 5 326
Aaryaman Sagar 1 0/0/0 3 5 300
generatedunixname89002005232357 1 0/0/0 2 7 173
Ioan Budea 1 0/0/0 1 4 133
Jakob Degen 1 0/0/0 2 3 109
Nicholas Ormrod 1 0/0/0 9 33 106
Joe Quanaim 1 0/0/0 1 2 79
Open Source Bot 1 0/0/0 2 1 60
Chris Hawley 1 0/0/0 1 2 56
Máté Szabó 1 4/0/2 2 6 56
Neil Mitchell 1 0/0/0 4 4 49
Orvid King 1 0/0/0 2 6 33
Sotirios Delimanolis 1 0/0/0 1 4 25
Miro Bucko 1 0/0/0 1 1 18
Scott Smith 1 0/0/0 2 2 11
Adam Singer 1 0/0/0 1 2 11
Alper 1 0/0/0 1 1 9
Alper Yoney 1 0/0/0 1 1 9
you 1 0/0/1 1 1 8
Victor Zverovich 1 0/0/0 1 1 7
Adam Cantrowitz 1 0/0/0 1 1 7
David W 1 0/0/0 1 1 6
Lev1ty 1 0/0/0 1 1 5
Yashwant Singh 1 1/0/1 1 2 4
Anton Raiev 1 0/0/0 1 1 4
Yaohui Chen 1 0/0/0 1 1 3
Cedric Perthuis 1 0/0/0 1 1 3
Ben Rogers 1 0/0/0 1 1 2
Dmitry Ilvokhin 1 0/0/0 1 2 2
Alexey Kozhevnikov 1 0/0/0 1 1 2
Cameron Pickett 1 0/0/0 1 1 2
David Tolnay 1 0/0/0 1 1 2
Sofie Graham 1 0/0/0 1 1 2
Eric Griffith 1 0/0/0 1 1 2
Josef Svenningsson 1 0/0/0 1 1 2
Ezgi Cicek 1 0/0/0 1 1 1
Yufei Yuan 1 0/0/0 1 1 1
Noah Yao 1 2/0/2 1 1 1
Ayberk Kanberoglu 1 0/0/0 1 1 1
mhx (mhx) 0 0/0/3 0 0 0
Kefu Chai (tchaikov) 0 0/0/1 0 0 0
None (namanahuja) 0 0/0/1 0 0 0

PRs: created by that dev and opened/merged/closed-unmerged during the period

Detailed Reports

Report On: Fetch issues



Recent Activity Analysis

The Facebook Folly project currently has 306 open issues on GitHub, with recent activity indicating a mix of bug reports, feature requests, and build-related problems. Notably, several issues are related to build failures across different platforms, particularly concerning compatibility with various compilers and operating systems.

A recurring theme among the issues is the difficulty in building Folly on specific environments, such as Windows and macOS, often due to missing dependencies or compatibility problems with libraries like OpenSSL and Boost. Additionally, there are multiple reports of segmentation faults and undefined references during compilation, which may indicate underlying stability issues within the library's codebase.

Issue Details

Most Recently Created Issues

  1. Issue #2285: build on windows error for cmake Evaluation file to be written multiple times with different content

    • Priority: High
    • Status: Open
    • Created: 2 days ago
    • Update: N/A
  2. Issue #2281: fbcode_builder should be synced to the mcrouter repo

    • Priority: Medium
    • Status: Open
    • Created: 8 days ago
    • Update: N/A
  3. Issue #2280: Potential Issue in SharedMutex Implementation

    • Priority: Medium
    • Status: Open
    • Created: 11 days ago
    • Update: Edited 9 days ago
  4. Issue #2266: Build fails on macOS 10.15

    • Priority: High
    • Status: Open
    • Created: 36 days ago
    • Update: Edited 9 days ago
  5. Issue #2264: build from source failed on win11

    • Priority: High
    • Status: Open
    • Created: 36 days ago
    • Update: Edited 2 days ago

Most Recently Updated Issues

  1. Issue #2280 (Updated): Potential Issue in SharedMutex Implementation

    • Discusses verification of behavior using TLA+ modeling.
  2. Issue #2266 (Updated): Build fails on macOS 10.15

    • Involves a critical build failure linked to a specific commit that broke compatibility.
  3. Issue #2264 (Updated): build from source failed on win11

    • Involves a subprocess error during dependency fetching.

Notable Anomalies and Themes

  • There is a significant number of issues related to build failures across various platforms (Windows, macOS, Linux), suggesting that cross-platform compatibility remains a challenge for the Folly library.
  • Several issues highlight difficulties with dependencies such as Boost and OpenSSL, indicating potential gaps in documentation or setup scripts that could lead to user confusion.
  • The presence of segmentation faults and undefined reference errors suggests that some components may not be adequately tested across all supported platforms or configurations.
  • The community seems actively engaged in troubleshooting these issues, as evidenced by detailed comments and discussions within the issue threads.

Overall, while Folly is a powerful library with broad functionality, its current state reflects ongoing challenges in maintaining compatibility and stability across diverse environments.

Report On: Fetch pull requests



Report on Pull Requests

Overview

The analysis of the pull requests (PRs) from the Facebook Folly project reveals a total of 92 open PRs and 1021 closed PRs. The recent activity indicates a focus on improving build configurations, enhancing compatibility with various platforms, and addressing deprecation warnings in CI workflows.

Summary of Pull Requests

  1. PR #2284: Fix actions/upload-artifact deprecation
    Created 6 days ago, this PR addresses the deprecation of actions/upload-artifact version 3, migrating to version 4 to ensure continued support beyond November 2024. It includes updates to multiple workflow files.

  2. PR #2282: Add missing scaffolding to mcrouter manifest
    Created 8 days ago, this PR adds necessary scaffolding to the mcrouter manifest, ensuring proper recognition as a Meta first-party project. It is linked to resolving issue #2281.

  3. PR #2279: folly simd-friendly
    Created 16 days ago, this PR extracts common "simd-friendly" type helpers into a utility. It has been exported from Phabricator and is significant for SIMD operations.

  4. PR #2204: Optimize crc32 & crc32c on NVIDIA Grace
    Created 105 days ago, this PR introduces hardware-accelerated routines for CRC32 and CRC32C hashes on Arm AARCH64 CPUs, enhancing performance on NVIDIA Grace architecture.

  5. PR #2124: AsyncFdSocket.h: fix for macOS < 11
    Created 230 days ago, this PR fixes compatibility issues for macOS versions below 11, addressing specific breakages that affect multiple macOS releases.

  6. PR #2275: migrate simdForEach #2: remove unroll step
    Created 23 days ago, this PR simplifies the simdForEach implementation by removing unnecessary unrolling steps.

  7. PR #2260: Build folly OSS CI on arm64/linux too
    Created 43 days ago, this PR ensures that Folly builds correctly on arm64 architecture using GitHub Actions, aiming to prevent future breakages.

  8. PR #2228: Add more files to shim
    Created 85 days ago, this PR adds recently introduced files to the fbsource for proper buck build integration.

  9. PR #2225: Update headers for folly-config.h path
    Created 86 days ago, this PR updates header paths necessary for building fizz.

  10. PR #2181: airstore next: bundle V4: thrift working in OSS build
    Created 125 days ago, this PR integrates Thrift support into the OSS client build for Airstore.

Analysis of Pull Requests

The recent pull requests reflect several key themes and areas of focus within the Folly project:

Compatibility and Deprecation Management

A significant number of open pull requests are aimed at ensuring compatibility with newer versions of dependencies and addressing deprecations in GitHub Actions workflows. For instance, PRs like #2284 and #2181 demonstrate an ongoing effort to keep the build process aligned with current standards and practices while maintaining functionality across various platforms.

Performance Enhancements

Several pull requests focus on optimizing performance, particularly regarding SIMD operations (#2279) and hardware acceleration for CRC calculations (#2204). These enhancements are crucial as they directly impact the efficiency of applications built on top of Folly, especially in high-performance computing environments or applications requiring extensive data processing.

Cross-Platform Support

The project continues to enhance its cross-platform capabilities with pull requests like #2124 (macOS compatibility) and #2260 (support for arm64). This commitment is vital given the diverse environments in which Folly is expected to operate, including various Linux distributions and macOS versions.

Community Engagement and Contribution Patterns

The volume of recent contributions suggests an active community engagement with ongoing discussions around proposed changes. Notably, many pull requests are linked to internal discussions or issues raised within the community (e.g., linking back to specific issues like #2281). This indicates a collaborative environment where contributors are responsive to feedback and actively work towards resolving outstanding issues.

Anomalies and Concerns

While there is a healthy flow of contributions, some older pull requests remain open without significant activity or resolution (e.g., PRs over 200 days old). This could indicate potential bottlenecks in the review process or a need for clearer prioritization within the development team. Additionally, there are instances where contributors have had to address compiler-specific issues (e.g., GCC warnings), which may require ongoing attention as compilers evolve.

In conclusion, the current state of pull requests in the Folly project highlights a proactive approach towards maintaining compatibility, optimizing performance, and fostering community involvement. However, attention should be paid to older unresolved requests to ensure that they do not hinder overall project progress.

Report On: Fetch commits



Repo Commits Analysis

Development Team and Recent Activity

Team Members and Activities

  1. Alexey Spiridonov

    • Recent Activity:
    • Improved AsyncGenerator symmetric transfer tests.
    • Simplified ExtendedCoroutinePromise interface.
    • Strengthened symmetric transfer test to handle stack overflow scenarios.
    • Collaborators: yfeldblum, iahs.
  2. Cameron Pickett (capickett)

    • Recent Activity:
    • Upgraded base64 to version 0.21.
    • Collaborators: zertosh.
  3. Neil Mitchell (ndmitchell)

    • Recent Activity:
    • Updated Cargo.toml for derive-more upgrade.
    • Fixed version stripping code.
    • Supported suffixed Rust versions in GitHub.
    • Collaborators: dtolnay.
  4. Jay Feldblum (yfeldblum)

    • Recent Activity:
    • Path-qualified test names in CMake build.
    • Fixed naming of build rules.
    • Tweaked thread entry optimizations.
    • Fixed warnings and improved code structure across various files.
    • Collaborators: DenisYaroshevskiy, Orvid, Aaryaman Sagar.
  5. Cedric Perthuis

    • Recent Activity:
    • Fixed a warning in folly::align_ceil.
    • Collaborators: Orvid.
  6. Aaryaman Sagar

    • Recent Activity:
    • Reverted changes that caused broken tests in Singleton.
    • Added logging for singleton destruction to aid debugging.
    • Collaborators: dogdoggoos.
  7. David Tolnay

    • Recent Activity:
    • Unbroke Windows build of buck2_client_ctx.
    • Collaborators: zertosh.
  8. Adam Singer (adam-singer)

    • Recent Activity:
    • Fixed issues with shim/third-party directory inconsistencies.
    • Collaborators: dtolnay.
  9. Simon Krueger (skrueger)

    • Recent Activity:
    • Added fast_float implementation for string-to-float conversion.
    • Collaborators: yfeldblum.
  10. Jakob Degen (JakobDegen)

    • Recent Activity:
    • Backed out changes causing segfaults in builds related to F14Chunk instances.
    • Collaborators: asm89.
  11. Ioan Budea

    • Recent Activity:
    • Reverted changes related to virtual inheritance from Task/AsyncGenerator/ViaIfAsync.
    • Collaborators: manicaesar.
  12. Alper Yoney

    • Recent Activity:
    • Reverted changes to keep the executor alive for iobuf_from_memoryview().
    • Collaborated with yfeldblum.
  13. DenisYaroshevskiy

    • Multiple commits focused on simplifying code and enhancing performance across various components, including SIMD optimizations and memory management functions.

Patterns and Themes

  • The team is actively improving testing frameworks, particularly around coroutine functionality and memory management, indicating a focus on stability and performance enhancements.
  • Collaboration is prevalent, with many developers reviewing each other's work, suggesting a strong team dynamic and shared responsibility for code quality.
  • There is a notable effort to address platform-specific issues, especially concerning Windows and macOS compatibility, which reflects the project's cross-platform nature.
  • Frequent reverts indicate ongoing adjustments to maintain stability and address regressions quickly, showcasing a responsive development approach.

Conclusion

The development team is engaged in continuous improvement of the Folly library, focusing on performance enhancements, testing robustness, and cross-platform compatibility. The collaborative environment fosters quick resolution of issues while maintaining high code quality standards through peer reviews and shared contributions.