The Client Side of the Internet Age
Along with the evolution of Web2.0 and Web3.0, performance-based improvement of wireless terminal hardware and advocacy for user experience concepts, websites and apps are becoming more important and more complex. This is reflected in the evolution of JavaScript, from its modest beginnings in 1995 to its current, staggering, levels of popularity. There are around 230,000 open-source JavaScript projects in GitHub’s repositories, 2.3 times as many as open-source Python projects, and much higher than the number of open-source Java and PHP projects put together. JavaScript’s popularity can be attributed to the extraordinary performance of AJAX in front-end development, and the compelling potential Node.js presents for server-side programming with JavaScript.
Two enterprise-class open-source projects that Alibaba has contributed to the community are Ant Design, a UI design language implemented on React, and Egg.js, a Web framework.
6. Ant Design
Ant Design is the result of middle and back-end design experiences from the development of Ant Financial. Its product interaction and visual style aims to be “inconspicuous, definite and cheerful”, and improve user and designer experiences. Abundant, flexible and valuable base components are accumulated to provide solutions for frequently asked questions. TypeScript supports complete type definition, and the high-quality out-of-the-box React components are based on npm + webpack + dva enterprise-class development frameworks.
Major Ant Design developments of 2017:
1. Ant Design 2.x continued its evolution from version 2.6.0 to version 2.13.11.
2. The front-end scaffolding for Ant Design Pro was introduced in October, providing best practices for typical middle and back-end application scenarios.
3. Ant Design 3.0 was released in early December, providing a brand-new design system and many new features. The release log can be found here.
In the two years since its open-sourcing, Ant Design has continued improving by collecting various design and development requirements. The design team responsible for Ant Design is constantly refining design specifications and adjusting overall visual effects, something which is well reflected in version 3.0.
Currently, the main focus remains on publicizing the long-term project development plan, collecting new requirements and issuing reports regularly through DingTalk and GitHub, and interacting closely with the community. The project has fixed cycles for the development of minor versions, where versions with bug fixes are released on a weekly basis and bigger updates are released on a monthly basis.
Ant Design is one of the most popular UI component libraries in the React community, and is used by technology companies including Alibaba, Tencent, Baidu, Meituan, Didi, and ele.me. Ant Design has garnered over 21,485 stars in GitHub, and was nominated in Open Source China’s 2017 Top 20 list of open-source Chinese software.
Ant Design has reached a relatively advanced stage after the release of v3.0, and will not be undergoing major changes anytime soon. Instead, the team will be working to enhance the visual layout and theme configurations, and promote internationalization and integration.
Find out more:
https://github.com/ant-design/ant-design
7. Egg
Egg is an enterprise-class, basic web framework developed to overcome deficiencies found with Node.js. When micro-service architecture is adopted, specific tasks such as service granularity, API interface and development maintenance are involved, and the front and back-end face the conflict of flexible user experience vs. back-end service general utility. Node.js has managed to overcome this widely-criticized weakness, and npm package is now the most popular peer, with vast improvement in single-threaded problems, avoidance of burdensome callbacks with the help of ES norm, a type system based on mature TypeScript, and better overall performance.
Unfortunately, the infrastructure maturity and popularity of Node.js are not a match made in heaven, and so it is essentially still a newcomer. In the industry, there are very few Web framework practices, and the community repeats a lot of work from scratch and lacks unified referential norms, which brings many repeated and unnecessary issues. Compared to the application, Node.js fundamental technology research is still rare, so ease of availability is a stumbling block.
The application of Node.js in Alibaba started in 2011. After experiencing difficulties, including starting from scratch, Alibaba began to seriously consider not only unifying the ecology build, but also customization support. Egg was born at the right time and is anticipated to be a fundamental framework for Web development to help all teams in building upper-layer framework. Egg was cultivated from engineering practices of large-scale enterprise applications, including robustly supporting Singles’ Day sales on November 11, and was polished in four versions of microkernels throughout 3 years.
Egg is based on Koa and is totally different from the upper-layer frameworks of Sails/LoopBack. It lies in the middle-layer and provides “microkernel + plug-in component mechanism + framework customization capability”, delivering a whole set of unified agreements for the service of upper-layer frameworks. It also adopts a gradual development method with extreme flexibility, so it is suitable for the fast development of small project and development by enterprise-level teams.
Within just a year of open-sourcing, Egg has received over 500 Pull Requests (272 in the host library), handled over 1,200 issues, and published over 40 official documents of over 100,000 words. It has also received over 6,000+ stars in GitHub and nearly 10,000 PVs on its official website.
Within Alibaba, it has served over 500 front end developers and over 1,000 apps, while outside Alibaba, Egg has received feedback for improvement from over 90 developers in various companies, including Baidu, Tencent, Quanmin and Dxy, and even Rod Vagg, Director of Node TSC, who got involved retweeting about Egg!
In the future, Egg will focus on the optimization of developer experience and the continued sharing of best practices.
Besides the 1,000+ apps within Alibaba, the technology team also eliminated some bottom-layer bugs in Node.js, and explored with Intel the further improvement in Node.js functions. In addition, Alibaba has just released a Node.js performance platform, and provides Node.js running + monitoring and diagnosis services for free.
Find out more:
https://node.console.aliyun.com/
8. Atlas
Atlas, a flexible Android development framework, was created to assist with internal issues at Alibaba. With the continuous development of mobile Taobao, the R&D team became larger and functions more complicated, which required the fast iteration of end-side businesses. On the other hand, the problems encountered during development, operation and maintenance continually increased, which also required fixing online bugs. As such, the mobile Taobao team began to think about how to simplify the complicated problems and conduct dynamic deployment to improve mobile development efficiency.
Atlas dockerizes to solve large-scale team cooperation issues, which is suitable for the development of large or small-sized apps on system versions higher than Android 4.0 and supports dynamic publishing. Generally speaking, the industry usually uses plug-in component frameworks. However, Atlas adopts modularization, which divides businesses and reuses common parts in consideration of reusability. The project adopts the approach of OSGI (Open Grid Services Infrastructure (OGSI)) and separates business to independently form a bundle for isolation and decoupling operations, so that concurrent development, fast iteration and dynamic deployment can be realized.
Atlas is a result of five years of development by Alibaba’s mobile team, and makes technical preparations for static and dynamic modularization. After the official open-sourcing this year, Atlas has maintained the publishing of a major version every two months, and uses the same coding both in Alibaba and the community. Altas’ improvements lie in stability, tool chain upgrade, dexpatch, etc. With regard to dynamic deployment, new functions include component support, dexpatch function, and bundle view reuse.
As an early open-source project, initially Altas was not perfect and received criticism for its high barriers to entry, incomplete documentation and primitive demos. The Altas team immediately decided to form a DingTalk group to help developers understand and have access to Atlas, and make better documentation and demos. Many Chinese Android apps are using Atlas (such as Tmall, Taobao, Xiami, Youku and Alibaba Cloud), as well as at least three non-Chinese apps.
Atlas’ vision is to “bring developers back to the golden era of app development”. In the future, Altas will continue to improve documentation, upgrade the toolchain, lower access costs, improve stability and compatibility, introduce a complementary Emas for Atlas business services, and increase convenience for server-side publishing.
Find out more: