Flutter’s Engineering Pipeline: A Great Workflow with Minor Hiccups
7 min read
Flutter gained a stronghold in the market with its ability to build beautiful, natively compiled applications for mobile, web, desktop, and embedded devices from a single codebase. Many top companies such as BMW, Alibaba, and Google use Flutter for their flagship apps. And it’s not just the big players; developers love it too, with over 1,416 contributors and nearly 165k stars on GitHub.
If you’re excited to explore these insights further and connect with fellow engineering leaders, join us in The Middle Out Community and subscribe to the newsletter for exclusive case studies and more!
How did this framework, launched by Google in 2017, climb the ranks so fast? Check out the Annual StackOverflow Survey Report 2023
What best practices have fueled its rise?
Where might this open-source repo fall short?
With Middleware OSS, we set out to analyze Flutter’s engineering Dora Metrics.
Read more: What is Dora Metrics?
Flutter’s Engineering Pipeline: Robust Yet Vulnerable
Flutter’s engineering pipeline seems robust with its high deployment frequency. Comparing it to the benchmarks established in the 2023 Accelerate State of DevOps Report, Team Flutter's performance stands out as exceptional.
However, July brought a significant anomaly, marked by a steep decline in Deployment Frequency, plummeting from 253 deployments in June to just 85 in July, before rebounding to 159 in August. Check out some effective strategies to improve deployment frequency
Several potential reasons for this anomaly could be:
1. High Rework Time:
The significant jump in rework time, from 18.99 hours in June to 50.34 hours in July, suggests that more code had to be sent back for revisions or fixes. This could be due to:
A sudden influx of lower-quality code, requiring more fixes.
Inconsistent or delayed code reviews, causing defects to slip through and then be caught later in the cycle.
2. Longer Lead and Merge Times:
Lead time surged to 133.57 hours, and merge time extended to 44.79 hours in July.
This points to a bottleneck in the approval and integration process, either due to:
Resource constraints (e.g., fewer developers or reviewers available during this period).
Review complexity, where the code changes were more substantial or complicated, requiring extra time for analysis and approval.
3. Community Engagement Fluctuations:
Open-source projects often see variations in contributor activity due to external factors like contributor availability, interest levels, or major events.
In July, the Flutter repo may have experienced a drop in active contributors or maintainers, leading to slower review cycles and fewer deployments.
Flutter’s Strengths and Best Practices
Flutter has quickly established itself as a powerhouse in the app development ecosystem. A few key factors contribute to its strong performance and rapid growth:
Code Reusability: Write Once, Use Everywhere
Flutter’s capability to share a single codebase across multiple platforms (iOS, Android, web, etc.) significantly reduces redundancy in development. By writing code once and deploying it across various environments, developers save valuable time and effort, leading to quicker feedback cycles and a consistent user experience.
CI/CD Made Easy: Smooth Sailing for Releases
The seamless integration of Flutter with continuous integration and continuous deployment (CI/CD) pipelines automates the testing and deployment processes. This automation ensures that every code change is tested and deployed efficiently, minimizing manual errors and speeding up release cycles. As a result, teams can respond swiftly to user feedback and release improvements or new features more frequently.
Also read: How to Leverage DORA Metrics to Optimize Your CI/CD Pipeline
Frequent, Low-Risk Changes
Instead of relying on massive feature drops, Flutter’s community focuses on small, incremental updates that reduce the risk of bugs and ensure a steady deployment rate. This practice of delivering smaller, manageable changes enables faster feedback and more responsive iteration, which is crucial in open-source environments.
Active Community Engagement
Flutter's vibrant open-source community is one of its greatest assets, fueling rapid evolution through continuous contributions from over 1,400 developers. This active participation ensures quick issue resolution, regular feature proposals, and a fast development pace.
The efficiency of Flutter's review process is evident in pull requests (PRs) like #151126, which improved documentation with a cycle time of just 22 hours and 56 minutes, and PR #151073, addressing system-related fixes in 1 day, 20 hours, and 44 minutes. This swift handling of both minor and technical updates showcases a well-organized review system that supports fast, incremental changes, keeping Flutter both cutting-edge and stable.
Steady Deployment Cadence
With an active community making frequent contributions, Flutter maintained a steady cadence of deployments. Despite a dip in deployment frequency in July 2024, Flutter managed to push changes at a high rate, keeping the project moving forward smoothly. The combination of active contributors, automated CI/CD pipelines, and small, manageable updates enables this pace.
Improving Performance: How Flutter Can Prevent Future Anomalies Like July's Dip?
Flutter’s strong engineering pipeline is evident in its regular high deployment frequency, efficient CI/CD integration, and vibrant community. However, the dip in deployment frequency during July points to areas for improvement that can enhance its overall performance.
1. Backup Reviewers During Community Downtimes
The spike in rework time could be attributed to a temporary slowdown in contributions from the Flutter community. While Flutter’s community is typically active, the dip in July suggests a need for dedicated expert code reviewers, with backup reviewers ready to step in during slower periods like this to maintain consistency.
Automate Workflows, Distribute Complex Reviews
July saw a noticeable increase in lead and merge times, pointing to bottlenecks in the approval and integration processes. A solution to this problem is introducing automated approval workflows and distributing complex reviews among senior developers. Automating simpler checks will allow human reviewers to focus on more complex code, reducing lead and merge times while keeping code quality intact.
3. Host Hackathons; Recognize Contributors to Boost Community Engagement
Community engagement is one of Flutter’s key assets, driving rapid development. However, fluctuations in contributor activity, such as in July, can lead to slower review cycles and fewer deployments. To counter this, Flutter can maintain contributor enthusiasm with regular hackathons, contributor recognition programs, or clear release goals. Keeping contributors motivated and engaged will prevent slow periods in development, leading to steadier deployment rates.
4. Make CI/CD Pipeline Efficient
Flutter’s CI/CD pipeline is well-integrated, but the dip in deployment frequency suggests the system may not handle large volumes or complex updates as efficiently as needed. Improving the CI/CD pipeline’s capacity by optimizing test suite performance and implementing parallel testing will allow Flutter to manage heavy workloads without slowing down deployments. By scaling up the pipeline, even during busy months, Flutter can maintain its impressive deployment cadence.
Also, check out some other interesting case studies of God-level repos. What are they doing right? What are the hiccups they are facing and learn from the best!
Dora Metrics Rating
On the Dora Metrics scale, Flutter scores a solid 8 out of 10. Their deployment frequency was impressive, showing strong performance despite a dip in July. They shifted gears in August 2024, maintaining lead times that, while fluctuating, stayed within the benchmarks set by the 2023 State of DevOps Report.
However, their primary weakness lies in rework time, which spiked in July. Although it decreased in August, it still remained above the benchmark. By streamlining their rework process, they could significantly improve their overall performance.
Flutter’s Engineering Pipeline: A Great Workflow with Minor Hiccups
Flutter’s engineering pipeline performs exceptionally well due to its strategic emphasis on collaboration, code reusability, and streamlined processes. The framework’s ability to share a single codebase across multiple platforms minimizes redundancy and accelerates development cycles, allowing for quicker feedback and enhanced user experiences.
Moreover, the integration of CI/CD practices automates testing and deployment, ensuring efficient updates and high-quality releases. Coupled with an active and engaged community, these strengths create a robust ecosystem that not only supports rapid iteration but also fosters continuous improvement. This dynamic approach positions Flutter to adapt and thrive in the app development world.
We’d love to hear your thoughts on this case study and its actionable insights! If you're interested in analyzing and monitoring your project’s engineering pipeline, give DORA metrics a try with Middleware Open Source.
Feel free to reach out to us at productivity@middlewarehq.com with any questions. We're more than happy to create a custom suggestion study for your repo—absolutely free!
Moreover, If you’re excited to explore these insights further and connect with fellow engineering leaders, come join us in The Middle Out Community. and subscribe to the newsletter for exclusive case studies and more!
Trivia
The Flutter community loves to share! There are thousands of packages available on pub.dev, allowing developers to add features and functionalities to their apps with just a few lines of code.