Hello everyone, today I would like to tell you about a development that interests me as a Flutter developer and that I am very excited about.
Flock was announced at the Flutter Silicon Valley Meetup on October 24th. Here is the video link of the Meetup.
Just before the announcement, developers Matt Carroll (@SuprDeclarative) and Jesse Ezell (@jezell) published an official post explaining in detail why they did this. I wanted to summarize and share this article for you, my readers, by simplifying it as much as possible. I hope it will be useful. So let’s get started!
Flutter started out as a mobile UI kit for iOS and Android, but it has grown significantly over time, expanding its scope to include web support, and later, Mac, Windows, and Linux. Despite this growth, the size of the Flutter team hasn’t increased much. Today, there are around 1 million Flutter developers, but the team consists of only about 50 members. This means that each team member is expected to support around 20,000 developers, which is not sustainable.
The hiring freeze at Google in 2023 and subsequent small layoffs in 2024 have made it even harder for the team to grow. Additionally, with Google’s focus shifting to artificial intelligence, desktop platform development has taken a backseat, leaving those areas almost stalled. To tackle these challenges, a fork of Flutter named “Flock” is being developed.
What is Flock?
The high cost of a limited workforce poses significant challenges for a rapidly expanding toolkit with a growing user base and scope. Because of the small number of developers, many requests can linger for years without being addressed, or worse, they may never be tackled. When the Flutter team finally begins to review a request, it might be years after it was submitted, and they often need more information. In that time, the person who reported the issue may have forgotten about it or moved on to other projects, making it difficult to recall the details and leading to unresolved problems. This situation creates major challenges not only for identifying and fixing bugs but also from a product management perspective. For instance, if a company has to delay a new release due to a critical Flutter bug that remains unresolved for two years, they may have to reconsider their use of Flutter altogether. These kinds of experiences are becoming more common, putting the future of Flutter at risk.
The Importance of Community
Being an open-source project, Flutter is quite open to community contributions, and it allows for collaboration in a language familiar to those building Flutter apps. These aspects make it easier for experienced Flutter developers and package creators to contribute to the Flutter framework. It’s estimated that around 1,000 developers worldwide could effectively contribute to the Flutter framework. If these developers contribute regularly, the developer-to-team member ratio could drop from 1:20,000 to 1:1,000. Increased external contributions would encourage other developers to join in, improving overall support. However, rather than contributing directly to Flutter, the idea of creating a fork is seen as a better way for the community to collaborate and contribute.
Working with the Flutter team can be a challenging experience for many developers, often contrary to expectations. While some developers succeed, others face frustration due to limited review times and communication issues. The time and workforce needed for reviews often lead to delays, and the communication style may not suit everyone. As a result, the number of contributors to the Flutter framework remains below 1,500, including those who have only contributed once. Although the Flutter team intends to support external contributions, the contribution processes and the current state of the team make it challenging to manage these contributions. Moreover, team members often don’t fully appreciate the importance and urgency of external contributions because they don’t actively use Flutter.
If the Flutter team does not recognize and take steps to address this contribution issue, they have announced the forking of Flutter as an alternative route.
The Mission of Flock
Flock, referred to as “Flutter+,” defines its mission as not wanting to divide the Flutter community; instead, it will stay updated with Flutter while adding crucial bug fixes and popular community features that the Flutter team may not be able or willing to implement. With Flock, the community will have a say in which changes to merge, enabling the support of a wider pool of contributors without compromising quality, all while providing faster review times. Flock also aims to optimize contribution processes, encourage more social contributions, and better meet user needs by identifying market priorities. When Flock sends significant bug fixes and features, the Flutter team can incorporate them into Flutter at their own pace. This allows the community to progress independently of the Flutter team’s availability.
Opportunities to Contribute to Flock
The development of Flock will be possible with the support of the community. As a first step, Flock plans to automatically reflect Flutter and replicate all version tags. Developers are encouraged to build applications with Flock and expect no difference between Flock and Flutter.
Flock is looking for many reviewers to ensure high-quality contributions. Reviewers will evaluate contributions in line with Flutter’s quality standards and guide contributors throughout the process. The goal is not only to ensure that contributions are accepted but also to support those who contribute.
Flock also needs leaders who can provide expertise in specific areas for it to be a long-lasting fork. For example, they are looking for a lead for the Flutter CLI tool and separate engine leads for each platform (Android, iOS, Mac, Windows, Linux).
Let’s Flock Together
Flock needs community support to make Flutter a universal UI toolkit. The goal is for the community to come together and achieve this. The potential of Flutter is far greater than its alternatives, but to realize this, the community must work together as Flock.
Now let’s talk about how to use Flock.
We can configure our Flutter project to use Flock. One important point to mention here is that Flock is a direct copy of Flutter for now and they are working on fixing the Github synchronization. That’s why they recommend that we first use the current version of Flutter that matches the master branch.
FVM (Flutter Version Manager)
Flutter Version Manager (FVM) allows us to install and use multiple versions of Flutter on the same machine. They say that to use Flock we have to start by installing FVM.
Configuring FVM in our project
In the root directory of a Flutter project where we want to use Flock, we create a new file called .fvmrc and configure .fvmrc as follows:
{
"flutter": "master",
"flutterUrl": "https://github.com/Flutter-Foundation/flutter.git"
}
Installing Flock
Open a terminal in the project directory and run fvm flutter — version. FVM will inform us that “Master” is not installed at this point and then ask us to install it.
Flutter SDK: Channel: Master is not installed.
? Would you like to install it now? (y/n) › yes
We start the installation by selecting “yes” to install the Flock version of Flutter in the FVM cache.
Verifying Flock Installation
To verify that the Flock installation is working, we can run the fvm flutter — version command.
Here we need to make sure that the Flutter git URL points to https://github.com/Flutter-Foundation/flutter.git.
Flutter 3.27.0-1.0.pre.200 • channel master • https://github.com/Flutter-Foundation/flutter.git
Framework • revision 452ef96537 (16 hours ago) • 2024-10-22 12:37:14 +0000
Engine • revision e6856502b5
Tools • Dart 3.7.0 (build 3.7.0-47.0.dev) • DevTools 2.40.1
Usage of Flock
After this step, we can start using Flock by running all our usual Flutter commands through FVM.
For example
fvm flutter --version
fvm flutter pub get
fvm flutter run
fvm flutter build
# etc.
Now in our project, FVM commands are configured to be sent to the Flock version of Flutter.
What is Nest?
Another project announced at Meetup is Nest. They describe it as a collection of scripts, extensions and tutorials designed to help anyone build and maintain a Flutter fork, again in conjunction with Flock.
However, they say they don’t have any tools to share at the moment, and suggest we keep an eye out for updates.
All in all, Flock seems to represent a promising step forward for the Flutter community, aiming to bridge the gap between user needs and development resources, fostering a collaborative environment where contributions are welcomed and supported. As this project develops, it is envisioned that Flutter has the potential to become a more robust and versatile toolkit, ultimately benefiting both developers and users. Flutter’s future is bright and Flock and the community can come together to ensure that Flutter continues to thrive and shine as a leading UI framework. I hope I have given enough information in general.
Thanks for reading.
Selin.