By Yu Jia (Zongxin), client leader of the Xianyu technical team, and Tina, editor at InfoQ
Xianyu introduced Flutter in 2017. At that time, Flutter was far from mature, and there was no precedent in the industry for putting Flutter into an existing engineering system for development.
After that, the Xianyu team of fewer than 15 people made some innovations in the engineering architecture, hybrid stack calls, package building, and collaboration mode, ensuring that Flutter can be integrated into the existing client engineering system. From 2017 to 2019, Xianyu has also constantly fixed bugs to improve the stability of Flutter and synchronized it with Google and developed a set of its own hybrid technology solutions in practice - which opened sources for the Flutter Boost engine.
In 2019, Xianyu began a large-scale landing to promote the application of Flutter in Xianyu. In 2020, the main links of Xianyu online had almost entirely accepted Flutter. In the past two years, Flutter has gradually landed in other enterprises, but at the same time, there are constant voices of doubt. There are even rumors that "Xianyu's new business has abandoned Flutter" and "I believe Xianyu has encountered great difficulties."
So, as a pioneer and pathfinder of Flutter, has Xiianyu taken any detours in the exploration process of the past few years? What kind of challenges does Xianyu face now? Will Flutter be abandoned? What technology has the new business chosen? What are the corresponding principles for selecting a technology? In response to these questions, Yu Jia (Zongxin), the client leader of the Xianyu technical team, will give us answers one by one.
What was the main problem that Xianyu was trying to solve when it introduced Flutter?
Yu Jia (Zongxin): During the research stage in 2017, the client team of Xianyu had less than 15 people, and Xianyu's business scenario can be called a "small Taobao," which is relatively complicated. The first problem we need to solve is sharing manpower at multiple ends. The benefits of multi-end manpower not only allow one person to develop both ends but also represent better flexibility in the deployment of research and development (R&D) resources. In other words, the team's iOS versus Android ratio no longer needs to be 1:1, while the base of Android engineers on the market is much larger than that of iOS.
In addition, we hope that this technology fits the mobile R&D technology stack rather than the frontend technology stack. For RN and Weex, the toolchain and R&D habits are quite different. In the end, we expect the experience of this technology can be close to native, and Flutter under AOT basically met our requirements at that time. In the actual testing process, Flutter performs better than Native in the low-end machine with the same detail page without deep optimization. Therefore, Flutter was selected based on these three conditions at that time.
During the trial investment in 2018, the entire infrastructure construction and exploration brought certain costs. In 2019, the team officially began to use Flutter for research and development. Currently, 70 percent of the team's commits come from Dart, and it can be said that we have fulfilled our original expectations. In the actual R&D process, it is possible to accomplish the goal of one demand for one client.
Many people doubted the Dart language and thought it was different and not very popular. There are still problems such as multi-level nesting. What do you think of the application of the new language?
Yu Jia (Zongxin): Language is one of the factors in our choice of technical solutions, but it is relatively weak. We will look at it from several perspectives:
For problems like multi-level nesting, we can avoid them by further abstracting some control classes or methods, which is not a big problem.
What are the key innovations made by Xianyu after it introduced Flutter? What are the benefits of using Flutter?
Yu Jia (Zongxin): Xianyu has done many innovations and has applied for a lot of patents internally.
What are the biggest challenges you have encountered in Flutter development in the last year or two? Are the challenges the same as when you first started using Flutter?
Yu Jia (Zongxin): In the early years of Xianyu, as a pioneer in the entire industry, the main challenge was that the entire technological ecology was poor and we had to do everything by ourselves. The other is that the stability of the early engine has a big problem.
In recent years, with the in-depth use of the whole technology and the rapid business development behind Xianyu, more and more experience-related problems have been mentioned. Therefore, we have made a significant revision of the entire product last year, and the goal of the client-side is to optimize and create a better user-side product experience.
Therefore, after the ecosystem is gradually improved, our challenge is how to achieve a more refined user experience through Flutter. Last year, this part did take us a lot of effort. Based on this proposition, we have developed many internal Flutter-based detection tools for memory and lagging. To add to it, we have some more specific methods for memory optimization and lagging optimization. Still, it must be said that all the details of optimization are relatively labor-intensive, and both Native and Flutter have to invest considerable effort. Hence, we are currently recruiting for the whole industry on the client-side and hope that students interested in exploring the Flutter field will contact me.
Under the hybrid R&D system, Xianyu has also customized its engine. So what are the main problems of the official solution? For the average small business, will hybrid development be too complex?
Yu Jia (Zongxin): Xianyu has made many changes to the engine in the early stage. I have some reflections on my own about that time. On the one hand, it is because Flutter is not perfect. On the other hand, in about 2018, we do not have a deep understanding of our engines. Most of the time, we could have used higher-level solutions to solve problems, which indirectly makes it difficult for many of our engine customization modifications to be incorporated into the backbone.
So what I want to say in this part is that the current official solution can solve 90% of the problems. If you must talk about customization, there are still some problems on the performance side. For example, the current homepage of Xianyu is still native and does not use Flutter because the loading experience after the replacement is not suitable. In addition, we have tried to solve the lagging problem of the long-list side that has been criticized for a long time to a certain extent through the upper-level framework. Next, we may need the lower-level engine to help optimize it. Some other issues, including inconsistent fonts at both ends, and volatile input box experience, require long-term official optimization.
At present, we mainly hope to follow the backbone branch and try not to modify the Flutter code. The Xianyu team has some engine-side experts and relies on the ecosystem of the AliFlutter group. In the entire AliFlutter organization, different BUs are also good at different things. For example, UC students are better at engine customization, the Xianyu team has a large number of upper-level application frameworks, and the Taobao team provides support based on the construction of relevant infrastructure. In this way, most problems can be solved in large manufacturers by using internal open-source communities to develop with confidence.
For small and medium-sized enterprises, it is necessary to be clear about the scenarios they face. If the early development is rapid, there can be some compromises on the details. Choosing Flutter is a relatively clear path. The current environment is much better than the one in which Xianyu was born. We recommend that you use Flutter Boost for hybrid development. In some scenarios, if you encounter problems that require a quick response, you can also use Native in hybrid projects for backup purposes. The overall complexity is average if only introduce the hybrid stack.
There are rumors that Xianyu has not adopted Flutter in its new business, which makes many people think that Xianyu has abandoned Flutter. So what factors have you considered in the technology selection of your new business?
Yu Jia (Zongxin): As a technical decision-maker, one should avoid being kidnapped by a specific technology and making mistakes in the implementation process. Flutter, like other technologies, is ultimately to help teams realize business value. At the same time, it is only a technology on the mobile terminal. It is not appropriate to praise or abuse it too much. This is also why I particularly do not want to respond to this matter in front of the public because the technology itself depends on the application scenario.
From the current personnel size and the business scale of Xianyu, my philosophy is to pursue consistency and conciseness as much as possible for architecture design.
From the language perspective, the whole client organization will put Dart first in the future and minimize the investment in research and development at both ends. The choice of other containers is mainly based on H5. In the future, the access to other containers will be reduced as much as possible, and frontend development will be brought back to the standard path.
There are two advantages:
1) The organizational cost is the lowest, including the learning cost and collaboration cost of students. There will be additional costs caused by multiple technology stacks and containers, which I do not want to see.
2) Architectural consistency contributes to both R&D efficiency and quality. For example, as the business becomes more complex, the memory surge and package size problems caused by multi-container deployment are fatal, and there is almost no solution. This requires the architect to make a decision, abandon something and keep something. Returning to the R&D efficiency, the supporting tools and processes must be expanded around a type of container and language. If there are a lot of solutions, additional supporting facilities are required in each direction, resulting in very few benefits, and the sense of happiness of research and development is also shallow.
From this design point of view, we will have several clear choices:
After many years of using Flutter, now looking back, which companies and scenarios do you think are suitable for Flutter?
Yu Jia (Zongxin): Currently, it seems that several typical scenarios are suitable:
What do you think Flutter needs to improve in the future?
Yu Jia (Zongxin): From the feelings I have shared with some frontline developers after Flutter 2.0 was released, Flutter still needs to promote cross-terminal performance and optimize detail experience. Last year, Flutter did an excellent job in its major strategic direction (cross-terminal), with achievements on the PC and Web sides and some progress in cooperation with car companies and operating system vendors. However, there is still a long way to go when it comes to product experience and developer experience. Sometimes, for a demanding business party, experiences as small as fonts and controls can be the reason for not choosing this technology in the end. In this part, I hope that the entire open-source community can make some progress in the New Year. Within the AliFlutter organization, our students, led by the UC kernel team, have accumulated a lot of experience and PR in this area and have improved significantly in the internal engine. In the future, besides improving the infrastructure of the entire company, we will also pay more attention to the detail experience and accumulate some best practices to other development personnel.
With Flutter2.0 coming, will Flutter become a mainstream choice?
Yu Jia (Zongxin): Let me talk about my judgment on Flutter's future. On the one hand, in the future, the operating system is likely to split. In the multi-terminal scenario, Flutter will have a relatively good development. The cross-platform itself has great demands on the cost side for enterprises, especially Internet companies. However, judging from historical experience, Flutter is only a rendering engine. Even today's game development, with the perfection of the game engine and supporting tools, some function modules (for example, the community and live broadcast functions) are still hybrid frameworks. Therefore, hybrid development always exists. I can't give an answer to the question of whether it can become the mainstream of the whole mobile R&D in the future, but it is inevitable that after the ecology is more accurate, it will become another common technical choice for client-side R&D at a certain stage of history.
Yu Jia, nickname Zongxin, is the client leader of the Xianyu technical team. He joined Alibaba after graduation in 2012 and experienced an important period of the group's wireless transformation. He has participated in the design and development of many vital apps and mobile middleware of the group and has been a client-side veteran for many years. In 2014, he participated in the upgrade of the architecture of the iOS client of mobile phone Taobao, which for the first time completed the support for the parallel development of a team of 100 people. In the same year, Alibaba led the normalization of the basic architecture of mobile Tmall clients and the architecture of Mobile Taobao, laying a solid foundation for Taobao's future wireless mid-end. He joined the Xianyu client team in 2015 and took charge of the end-to-end architecture and team building. During his work, he completed the overall architecture design of the Xianyu client based on the Flutter hybrid architecture. He also improves the engineering system for Flutter's continuous integration and high availability system support, promotes the Flutter-based services of the Xianyu main link, and will continue to focus on the evolution and development trend of terminal technologies.
56 posts | 4 followers
FollowXianYu Tech - August 6, 2020
XianYu Tech - May 13, 2021
XianYu Tech - September 11, 2020
XianYu Tech - May 20, 2021
Alibaba Clouder - November 24, 2020
XianYu Tech - January 13, 2021
56 posts | 4 followers
FollowHelp enterprises build high-quality, stable mobile apps
Learn MoreAlibaba Cloud (in partnership with Whale Cloud) helps telcos build an all-in-one telecommunication and digital lifestyle platform based on DingTalk.
Learn MoreProvides comprehensive quality assurance for the release of your apps.
Learn MoreA low-code development platform to make work easier
Learn MoreMore Posts by XianYu Tech