About a month ago, I promised to write an article for Apache 20th Anniversary on behalf of Weex. I have finished the work until today. The content is shown below. Feel free to give any comment or feedback.
Introduction I am a Project Management Committee ( *PMC* ) member of *Apache Weex* ( *Incubating* ), a cross platform mobile development framework, widely used in many mobile Apps, among top of which have nearly 0.7 billion MAU( *Monthly Active Users* ). Weex <https://weex.apache.org/> became an open source project in early 2016 and joined the Apache Incubator in Dec, 2016. As a Project Management Committee member, I go though with the project from beginning to nowadays, it is an exciting journey mixed with challenge and suffering, and the journey is not end yet. Challenge This is not the end. It is not even the beginning of the end. But it is, perhaps, the end of the beginning. - Winston Churchill As ASF <https://www.apache.org/> ( *Apache Software Foundation* ) divides its projects into two types, namely TLP <https://blogs.apache.org/foundation/entry/incubation_at_apache_what_s> ( *Top Level Project* ) and Incubator Project <https://incubator.apache.org/>, joining Apache Incubator is the end. Instead, it is just a beginning. Community As a project under ASF, Weex should and would do things under the Apache Way <https://www.apache.org/foundation/how-it-works.html#philosophy>. But as one might imagine, there are lots of problems Weex has to solve: - It is said that *If it didn't happen on a mailing list, it didn't happen*. While Weex was developed by Alibaba Inc. and donated to ASF, it is not surprising that some contributors and committers of Weex are full-time employees of Alibaba Inc. Therefore, there was plenty number of internal IM and Face to Face communication, which is not an Apache way. - Many of Weex contributors and users are Chinese, they preferred Chinese to communicate, report bugs and write document, which is not a typical Apache Way. Engineering and Product There are some technical issue due to the feature of Weex: - It is known to all that Android and iOS System got upgrade each year, therefore feature and API also got updates each year. Weex is a cross platform framework and designed to provide mobile feature with Front-End Technology, it is not a easy task to map these Java (*for Android system*) and Objective-C (*for iOS system*) API to Front-End world, and yearly updates of the systems makes it even harder. - The users of Weex are Front-End Engineers while the contributors and committers are Android and iOS developers, there is a technological stack gap between users and Weex contributors. - The active committers of Weex is not enough, it is hard to maintain a project that provides Operating System API with no more than ten active committers. Weex Way Open source is more than just code. There are two repositories for Weex, one is before the donation to ASF, the other is after that. And there are are nearly 30 thousand stars among these two repositories. What an exciting number. But *Open source is more than just code*, it is about more. Community Community over code. Currently, most open source project will adopt one of the governance structures <https://opensource.guide/leadership-and-governance/#what-are-some-of-the-common-governance-structures-for-open-source-projects> : - BDFL - Meritocracy - Liberal contribution ASF is an endeavor to *Meritocracy*, in which *community is over code.* Mailing List If it didn't happen on a mailing list, it didn't happen. As it is mentioned above, many Weex contributors and committers are employees of commercial companies, and some of their companies even prefer Weex in their production environment. Therefore we, as employees receive a great deal of feature request from coworker, some of them might even choose face to face conversation to discuss new feature. Code commits without discussion in mailing list is not Weex PMC's want, not Apache Way either. Therefore PMC of weex have made some rules to make thing right: - Dev@ mailing list is the only official communication channel, all features must be discussed in the mailing list before coding except tiny bugfix like fixing a null pointer exception. - Move Github PR and Issue from dev@ to a separate mailing list to avoid noise. Decision Making Weex is owned by ASF and developed by a group of developers. It is important to follow the Consensus building and Voting procedure. The procedure is transparent and search engine friendly to all users in the world. It is normal that someone stops to maintain a project due to interest change or work change, a project fullfils the previous procedure is more robust against developers changes as current developers can search for the corresponding mails and have a better understanding of what is happening there. By default, the official language used in Apache mailing list is English, but it is problems for Weex as many users of Weex are Chinese who are not good at communicating in English. Therefore, enthusiastic contributors of Weex would always prefer *Google Translate* to translate Chinese to English to let others known what is happening, and politely remind the original author to use Chinese next time. It is a time consuming and tedious job to translate others' post, but it is worthy to let the world understand what is happening here. *In fact, there is a discussion <https://www.mail-archive.com/[email protected]/msg57218.html> about language used in mailing list.* Engineering and ProductInfrastructure There are many users that prefer Weex in their commercial product, among top of which have nearly 0.7 billion MAU. In such cases, stable is our priority, as 99.999% availability only means that ten thousands of our end users got problems. Therefore, we choose minus feature from Weex instead of adding features: - The priority of Weex is stable, which means only bugfix is allowed - New feature imported to Weex as a plugin, developers can choose enable or disable a certain plugin. Developers' Feedback We also make a feedback convention <https://weex.apache.org/guide/contribute/how-to-contribute.html#ask-or-answer-questions> between our users and contributors to get users' problem solved efficiently. - Github Issue is only for Bug Feedback, others problem should go through mailing list. - It is important to fire a bug according to the bug reporting template <https://github.com/apache/incubator-weex/issues/new> Ending Until Now, Weex is still a project under Apache Incubator. You are welcomed to join the Weex Community <https://weex.apache.org/guide/contribute/how-to-contribute.html#mailing-list> . Best Regards, YorkShen 申远
