Revitalizing Flutter with Flock
Engineering
Flutter
Open-source Community
Summary
This article introduces Flock, a community-centric fork of Flutter, designed to overcome limitations faced by Google's team. It focuses on enhancing developer responsiveness, prioritizing desktop support, and fostering open-source contributions. With its community, Flock aims to address the backlog of issues, expand review capabilities, and create a responsive environment that ensures Flutter’s sustainable growth as a cross-platform framework.
Key insights:
Flock’s Goal: Flock was created as a fork of Flutter to enable faster development, more responsive support, and greater community collaboration.
Developer Responsiveness: Flock expands the review process and empowers developers, addressing delays and extensive issue backlogs in the Flutter ecosystem.
Community-Centric Approach: Unlike Flutter, Flock minimizes bureaucratic hurdles, allowing a more agile and contributor-friendly workflow.
Enhanced Desktop Support: Flock prioritizes desktop platforms, filling a gap left as Google shifts Flutter’s focus toward AI initiatives.
Synchronized Development: Flock stays in sync with Flutter’s mainline updates while adding community-driven features and bug fixes.
Challenges Ahead: Flock must balance growth with quality control, community adoption, and resource management to prevent fragmentation.
Getting Involved: Developers can contribute through testing, code reviews, and project leadership, supporting Flock’s evolving framework and community.
Introduction
The need for more responsive development and community interaction has grown as the popularity of the flexible open-source UI framework Flutter has increased. Even while Google has over a million engineers as users, its Flutter team is still somewhat tiny, which causes major delays in responding to bug reports and feature requests. The community has responded to these issues by launching Flock, a specialized fork of Flutter designed to speed up development and promote a more cooperative atmosphere.
This insight will discuss the goals of Flock, how it affects the Flutter ecosystem, and how it seeks to improve developer collaboration. It will also guide developers on how to get started with Flock.
Forking Flutter: The Motivation Behind Flock
Flutter's emergence as a flexible, open-source UI framework was revolutionary; it supported web, Mac, Windows, and Linux in addition to mobile applications. However, the Flutter team experienced a significant labor imbalance as a result of its quick growth, which created issues that the community could assist with.
More than a million developers are utilizing the toolkit, demonstrating Flutter's impressive scale. With an estimated 50 developers, Google's Flutter team is still very tiny while serving a large worldwide user base. Due to the burden on Google's resources caused by the 1:20,000 developer-to-support ratio, feature requests and issues have been piling up for years. Additionally, desktop platform support in Flutter was deprioritized due to Google's strategic shift toward artificial intelligence (AI), leaving large gaps in a valuable area.
In order to fill in the gaps that Google's team is now unable to cover, the Flutter community needed greater control over the development timeline, improved responsiveness to bug reports, and a more inclusive contribution approach. This is why Flock–a separate fork of Flutter–was created. Flock intends to give the framework a more community-driven and agile approach by forking Flutter.
The Role of Community in Flock
Flock recognizes the enormous potential of the community, especially that of the estimated at least 1,000 developers with the skills and know-how to expand the basic framework. By decentralizing the review process, Flock promotes an open-source, collaborative atmosphere that welcomes contributions from developers of all experience levels. By removing obstacles and giving contributors more authority, Flock fosters a culture where developers can learn, engage, and quickly see their innovations included in the framework, resulting in a dynamic and adaptable ecosystem.
Challenges with Google’s Flutter Development Model
Google’s development model for Flutter faces structural and cultural limitations that are increasingly evident as the platform grows in scope and community demands expand:
1. Labor Shortages and Delays
Compared to its user base, the Flutter team is severely understaffed. This problem has only gotten worse due to Google's financial limitations, headcount limits, and corporate restructurings, which make it challenging to grow resources in accordance with community demands. With a core team of only about 50 people and an estimated 1,000,000 developers utilizing Flutter, each member of the Flutter team is in charge of meeting the demands of about 20,000 developers. It is impossible to reply to feature requests, criticism, or problem reports in a timely or comprehensive manner with this ratio.
2. Ticket Backlog and Delayed Issue Resolution
Due to the manpower shortage, there is a large backlog of tickets. Unresolved tickets frequently become out of date since they can sit in the queue for months or even years. Information on an issue may be lacking or irrelevant by the time it is evaluated, and the individual who first reported it may have moved on. This cycle makes it hard to fix problems quickly, which frustrates developers and occasionally prevents them from utilizing Flutter for important projects.
3. Reduced Focus on Desktop Support
Flutter's support for desktop platforms (Mac, Windows, and Linux) has been deprioritized as a result of Google's recent shift toward AI. These platforms are currently in maintenance mode as a result, lacking the ongoing development required to meet changing market demands. Flutter's usability as a universal development toolkit is limited by the stagnation of desktop support, which makes this decision challenging for businesses and developers seeking reliable cross-platform solutions.
4. Communication and Contribution Hurdles
Even though Flutter is an open-source platform, contributors may find the process to be cumbersome, tedious, and disheartening. Because of the strict submission standards and the limited time available to Flutter team members, review cycles are frequently lengthy. The labor deficit is made worse by these difficulties, which foster an atmosphere in which few developers regularly contribute. Furthermore, communication has a tendency to favor a particular style, which is not necessarily compatible with the varied experiences and backgrounds of contributors from across the world.
All of these issues have hindered Flutter's development and discouraged developers, particularly those looking for dependable desktop features. Businesses considering Flutter for cross-platform projects encounter ambiguity in areas where specific desktop enhancements or prompt support are essential. Therefore, without a more responsive structure or more resources to support its enlarged scope, Flutter will find it difficult to develop into a widely used toolkit due to Google's development approach.
Advantages of Flock Over Flutter
Flock offers several distinct advantages over Google’s current Flutter model:
1. Expanded Review Team
Flock wants to create a strong, community-driven review mechanism in contrast to the existing team's restricted review capability. Flock can greatly accelerate the review process by enlisting a larger team of committed code reviewers from the Flutter community. This guarantees prompt response on modifications that are submitted, and it fosters a more welcoming and cooperative atmosphere, enabling contributors to witness the seamless and efficient integration of their work.
2. Community-Centric Contribution Process
A significant change from Flutter's current structure is shown by Flock's dedication to lowering bureaucratic barriers. Flock promotes more effective, contributor-friendly workflows by eliminating strict constraints like regular conference calls and required design documentation. This adaptability enables contributors to give development practicality top priority, facilitating quicker innovation without sacrificing quality. By emphasizing guidance for contributors rather than gatekeeping contributions, Flock's strategy promotes a constructive review process.
3. Flexible Issue Prioritization
The team prioritizes pressing issues as they arise because of the team's practical production experience and the leadership of Flock's active involvement in Flutter development. Flock's methodology places a strong emphasis on adaptability to production-level, real-world requirements, especially for developers using Flutter for mission-critical applications. This increases the stability and dependability of Flock for business-critical projects by reducing the likelihood that problems impacting production settings will be postponed.
4. Constant Synchronization with Flutter
Flock is made to remain in sync with the main Flutter framework even while it adds its own special features and improvements. This implies that Flock users get access to more community-driven features, quick bug fixes, and Google's official upgrades and enhancements to Flutter. The user experience is continuously improved thanks to the combined benefits of receiving official Flutter updates and profiting from Flock's contributions.
Potential Challenges and Considerations
Despite its promising goals, Flock faces several challenges in ensuring long-term success and community trust:
1. Resource Management
It takes a lot of work to run a fork of Flutter to keep up with its changing codebase and replicate its quick changes. This comprises the organizational commitment to oversee both short-term bug patches and the long-term development of Flock-specific additions, in addition to the engineering resources required to reproduce Flutter's basic functionality. Maintaining this level of work will require a large investment in administrative and technological infrastructure, including automated dependency management and synchronizing procedures.
2. Quality Control
Flock's trust depends on striking a balance between rigorous standards and expedited contribution evaluations. A strong, knowledgeable team of reviewers and leads that can oversee the codebase across several platforms will be needed for this. These professionals must uphold strict guidelines to make sure that fresh contributions satisfy the community's requirements for safe and dependable code. Flock strives to preserve the integrity of its structure while remaining open to a variety of contributors who have special knowledge and abilities by thoroughly screening contributions.
3. Community Adoption
Flock must gain a sizable following among developers and businesses that already use Flutter in order to be successful. This entails making steady, noticeable progress in areas that consumers care about the most, such as fixing persistent problems, adding new features, and creating a more responsive support environment. Gaining the trust of developers will be essential since they must perceive definite advantages and observable benefits when implementing Flock in their projects.
4. Risk of Fragmentation
The community could become divided as a result of forking Flutter, which could result in redundant work and diluted resources. Flock might find it challenging to adapt to any major architectural or strategic changes Google makes to Flutter, particularly if those changes add complexity that is hard for Flock to implement in real time. Unless deliberate steps are taken to promote collaboration and reduce duplication across the Flutter ecosystem, such fragmentation might limit Flock's effect and erode the community's overall support.
How to Get Involved with Flock
Flock’s success will depend on active community involvement. Developers can support Flock by:
Alpha Testing: To ensure cross-platform compatibility, community members are urged to test Flock in conjunction with Flutter to find and report inconsistencies.
Joining as Reviewers: To support code quality standards and promote contributor success, Flock is looking for seasoned Flutter developers to volunteer as reviewers.
Becoming Project Leads: To guide development in these crucial areas, Flock is seeking leads with specialized knowledge of platforms like desktop, iOS, and Android.
The Three Stages of Flock Development
Flock is designed to enhance functionality while addressing developers' needs through three key phases:
1. Phase 1: Mirroring the Framework
Making sure Flock stays current with Flutter's updates is the key goal of the first phase. This entails automating the master, beta, and stable branches of Flock's synchronization procedure. These branches are maintained by the Flutter team according to different schedules:
Master: Continuously updated.
Beta: Receives updates from master monthly.
Stable: Updated from beta every three months.
Flock will implement scripts to automate merging and apply Flutter's release tags to allow seamless updates.
2. Phase 2: Mirroring and Delivering the Engine
Flock will concentrate on the Flutter engine, which is made up of platform-specific components and C++ code, when the framework is synchronized. The engine is provided as pre-compiled binaries, in contrast to the framework. Flock will develop automated build scripts during this stage to upload binaries for user access and compile the engine on a regular basis. As a result, Flock users will receive timely updates without the need for manual intervention, improving the development experience.
3. Phase 3: Fixes and Extensions
In the last stage, Flock starts introducing new features and bug fixes in response to community requests. To provide a more responsive development environment, the Flock team will give priority to eliminating problems that impede businesses. During this stage, moderation is essential; the team will implement tactics to reduce disputes and stay in line with Flutter. Flock hopes to find high-value enhancements that improve the user experience and spur innovation by actively interacting with the community.
Getting Started with Flock (Flutter+): A Guide
Flock is a community-driven fork of Flutter that incorporates new features that the community has requested in addition to staying current with Flutter's core updates. This tutorial will show you how to utilize the Flutter Version Manager (FVM) to configure an existing Flutter project to use Flock. You will eventually be able to use Flock in your development environment, giving you access to its most recent upgrades and community-specific improvements.
1. Install Flutter Version Manager (FVM)
To handle Flutter versions on the local environment and enable to switch between Flutter and Flock as needed, Flock needs FVM. The official FVM documentation contains installation procedures that can be followed to install FVM.
2. Prepare for Flock Installation
If Flutter is installed in the master
branch through FVM, some cleanup is necessary due to FVM’s method of identifying versions, any existing Flutter master
installation should be deleted. Follow the following steps to delete the existing Flutter master
installation:
Locate FVM cache directory.
Inside the cache directory, delete the subdirectory called
master
. This clears any conflicts and ensures a clean installation of Flock.
3. Configure FVM for Your Project
With FVM ready it is possible to set up your Flutter project to use Flock.
Select the Flutter Project: Choose the project where you want to use Flock.
Create a .fvmrc
File: At the root of the project, create a new file named .fvmrc
.
This setup tells FVM to pull from the Flock repository rather than the official Flutter repository.
4. Install Flock
Next, install Flock using FVM in your project directory:
Open a Terminal in the Project Directory: Navigate to the project’s root directory in your terminal.
Run FVM Install Command: Enter the following command to check your Flutter version with FVM:
Respond to Installation Prompt: There should be a prompt similar to:
Type ‘yes’ to proceed with the installation. FVM will now download the Flock version of Flutter into your cache.
5. Verify Flock Installation
After installing Flock, verify the installation to ensure it is properly configured. Run the following command to check Flock’s version and repository details:
You should see an output similar to:
The URL should point to https://github.com/Flutter-Foundation/flutter.git
, confirming that Flock is now installed and active in the local environment.
6. Start Using Flock
Now that Flock is installed, you can run all standard Flutter commands through FVM, which will redirect them to Flock.
Examples of commands to use:
Using FVM ensures that these commands apply specifically to Flock within the project. This enables access to the latest Flock updates and any new community-driven features.
After configuring the Flutter project to use Flock, the setup allows to access and experiment with Flock’s extended functionality and community enhancements, and staying up-to-date with Flutter’s mainline development. If any user encounters any issues along the way, the Flock team welcomes feedback, so it is encouraged to file an issue on their GitHub page to contribute to this evolving platform.
Engaging with the Community
To solve particular issues inside the Flutter ecosystem, Flock and its companion products, including Nest, were created. Companies that have experienced major changes or release obstacles are invited to share their experiences with the Flock team. Feedback is essential to determining Flock's future and making sure it successfully serves the needs of the community. For developers, it is possible to get in touch with Flock to work together to reduce these obstacles as Flock develops.
Conclusion
The Flutter framework's shortcomings, which result from an imbalance in Google's development team, are addressed by Flock. The backlog of problems and feature requests has increased along with the demand for Flutter, which has frustrated developers. By forking Flutter, Flock hopes to create a more agile environment by utilizing community contributions, improving bug responsiveness, and giving desktop support first priority.
Collaboration and active community involvement are essential to Flock's success. In order to bridge the gaps created by Google's strategy, Flock aims to synchronize with its upgrades and establish a mechanism for community-driven contributions. Flock empowers contributors and encourages active participation from the Flutter community through adaptable processes and an emphasis on real-world developer demands, guaranteeing that the framework develops to address present and future cross-platform development difficulties.
Authors
References
Flock. flutterfoundation.dev.
We’re Forking Flutter. This Is Why. flutterfoundation.dev/blog/posts/we-are-forking-flutter-this-is-why.