This article was first published on “HelloGitHub” public account. Search for “HelloGitHub” and click “Follow” to unlock more treasures!

After long-term planning and preparation, we finally launched HelloGitHub interview series “Interviews with Open Source Project Authors”. This is an interview with individual open source project authors, focusing on open source project authors and their stories.

We know that it is not easy to do an open source project well, and we have encountered more than once that we want to do an open source project but don’t know where to start. So “HelloGitHub Interview” hopes to share the experiences and stories of outstanding individual open source project authors, so that readers can know more about the stories behind open source projects. The joys, difficulties, frustrations, and rewards of doing open source projects.

Finally, I hope that through this series, we can know:

The person behind the excellent open source project who loves open source and is particularly lovely.

HelloGitHub Interview, guest of the first issue: Iamkun

Learn and grow into the person you want to be on GitHub — Iamkun

iamkun

Before we begin, let’s meet our guests:

Name: ID: jukun commonly used iamkun (not CAI xu kun yo ~) GitHub:https://github.com/iamkun open source projects: - https://github.com/iamkun/dayjs - language: Currently, I am the community Leader of Ali Element UI (49.9K Star)Copy the code

Iamkun & Open Source project

Day.js

🎙️ : When we think of Day.js, we must think of moment. js, and one of the features of Day.js is that it is minimalist and lightweight in a way that moment. js is not. Why open source Day.js in 2018 when moment.js is all the rage?

Brother kun: In fact, I didn’t want to make an open source project at the beginning. It was purely a business requirement of the company, and I wanted to optimize the project to make it load faster. Then I found that Moment. So we thought about making a stripped-down version of moment.js, so we optimized the project and had a prototype of Day.js. The name of the project is “date.js”. The name of the project is “date.js”. The name of the project is “date.js”.

Back to the optimization mentioned above, our business used the “original” day.js, and the js compression was 1/30 of the original, which can be regarded as reaching the optimization goal.

It was just the company’s optimization needs that led to Day.js. As for why it is 2018, it is just the timing, just the business optimization needs, plus there is no good optimization method on the Internet at that time, most of the solutions on the Internet are based on moment.js optimization, and no one thought to write a simplified version of Day.js (laughs: Probably no one thought of “building a new wheel”). It happened that the company was also encouraging open source at the time, and we thought, well, we’ve already written it, right? We might as well post it online and use it together, because we used Day.js in the project and it worked really well.

Of course, with no promotion at all and only open source, day.js, unsurprisingly, didn’t have a star at first 🙂 open source isn’t easy.

Element UI

🎙️ : In addition to day. js, Iamkun is the Element UI community leader. When it comes to Element UI, the common front end question is: Is it still under development? Still maintaining? Is it convenient to reveal the current development progress and version planning of Element UI?

Qingo: Element UI has always been maintained, but as an open source project that is maturing, it will not iterate as often as it did in the early days. It will mainly focus on performance optimization and bugfixes. After all, Element UI has a large number of users using it in production environments.

In addition to ensuring a stable production environment for users, we are also working on a Vue3 based Version of Element Plus, major incompatible upgrades and new components, new UI will be updated in Vue3, after all, according to the current community trend, Vue3 is also the trend. Therefore, in the future, with the popularization of Vue3, our main development energy will be gradually transferred to Element Plus. Of course, those who use Element UI don’t have to worry. Element UI will always be in a state of maintenance, and there will be a PR merge of Bugfix. Until slowly all the ecology of Vue2 migrated to Vue3. Here we also welcome other friends to build Element UI together. Please refer to [email protected] for your resume.

Iamkun & The Road to Open Source

🎙️ : I see you have several interesting front-end projects on GitHub, such as building games and so on. And the dates, coincidentally, started three years ago? So iamkun how did you get on the open source path? And what exactly is “open source” in your opinion?

Quango: Why was open source three years ago? Because at that time, I just started front-end, had my own GitHub, thought I would write some fun things on GitHub.

In fact, what I open source is mainly a personal interest, in other words, open source is a way for me to learn. For example, if I want to implement a requirement, rather than using a ready-made library, I would prefer to build my own wheels and write everything in the purest JS to better understand its principles. Of course, it is actually very boring to build a dry wheel, so I usually find a scene for it. For example, the game of building a building above was written when I began to learn Canvas. Try writing a game to understand the native API in Canvas. GitHub address of building game: github.com/iamkun/towe… .

When I first started to open source, I wanted to make GitHub a nicer place to put all the weird stuff. But why the growing interest in open source? Because I’ve found that if you really push your project out into the community, it really attracts a lot of like-minded people who are willing to help you make it better, who are willing to review your code, who are willing to help you fix things that you might not have done so well before.

Therefore, open source is actually more important than an idea, is what you want to do, you do not have to worry about their own code is good, or their ability to do such a thing, as long as you have this idea, as long as you are willing to do, the power of open source community is so powerful.

🎙️ : Anyone who has done open source projects knows that it is not easy for a project to achieve success, even in terms of star and COMMIT numbers. After open source, iamkun didn’t make a big fuss and spend a lot of energy on promotion, but three years later it grew into a 30K + star, 1.3K + commit project. Is there any black magic in it?

Kunge: Day.js was started from a business optimization. After open source, it has not been promoted for a long time, but only used internally. We always think that good wine needs no bush, so we put it on GitHub, and as a result, no star has grown. Later, we thought that the wine is also afraid of the deep alley. The open source project you just made is actually the first step, and the later promotion is very important.

Of course, THERE are two main reasons for day.js’s popularity. The first is that Moment. Js has been very difficult for a long time, as mentioned above. However, most of the community’s proposals are focused on optimizing moment.js itself, such as removing locale files, or optimizing Moment itself based on Webpack plugins. Or maybe no one wants to say I’ll write an abridged version of the Moment, because that would sound like a pointless exercise in reinventing the wheel.

However, Moment optimization is also a classic topic in the community, there are all kinds of ways to try, so I think day. js is popular, first of all, because people think Moment is very useful, but there are also very unfriendly aspects of it.

Another point may be a little coincidence, node.js community has a god named TJ(github.com/tj), this person is very powerful, we use KOA, Express and other well-known frameworks are written by him. For some reason I don’t know why TJ gave Day.js a “like”. He gave day.js a “star” at a time when day.js was completely unpromoted and had no star at all. Then, TJ’s “like” brought day.js thousands of stars, and day.js opened.

As a tidbit, I later asked TJ on Twitter why he clicked “Star” on us at that time, and he said, “I just thought Day.js was funny.

However, it is true that Day.js can become such a 30K multi-star project. On the one hand, it has something to do with the efforts of iteration and promotion in the early stage. On the other hand, I think it is more important to insist on doing and maintaining day.js.

In fact, day.js was not so popular in the first year when it was open source, and there was not much attention paid to it. I really just wanted to open source it, make it better, operate, maintain and iterate it as my own product, so I persevered slowly. People in the community, after using Day.js, think it is very useful, they will spontaneously help you to promote and amway, and gradually day. js is known and accepted by everyone.

  • By chance, TJ, the god of the Node community, clicked a star and brought thousands of stars to the project
  • The world has been suffering for a long time
  • As long as you stick to it, the star will get more and more every day, but there is a feedback issue involved

🎙️ : Both Day.js and Element UI are front-end star projects with a large user base. Do you have any experience in maintaining large open source projects?

Kuno: As mentioned earlier, when a project is used in a production environment, the first thing to ensure is the stability of the product. Especially for open source projects such as Day.js and Element UI with a large user base, functions are of secondary importance. The most important thing is the stability of each release, because a small mistake may lead to the failure of others’ online projects, which is very embarrassing. Therefore, the important thing is the Semantic version, which is the A.B.C version that is popular in the Node community. Incompatible versions must be distinguished by the version number, rather than sending a very small patch update when it is clearly an incompatible update. This is very irresponsible for your users, and it is easy to trigger public opinion in the community.

The second is that when users grow, open source projects become not just your own projects, but a community project. Therefore, when you want to add a new function, change a function or remove a function, you’d better not directly change the code and release the version, but to open an issue, and have a good chat and discussion with the community students. In this way, accepting community input can help your project go further in the community, rather than becoming your own toy. For example, modules for localization of different countries in Day.js, such as language translation and national year, are mostly dependent on local students in the community, who surely have a deeper understanding of this area than I do.

Of course, the last point is also the most important point, do not think that you can completely rely on yourself to finish such a big project, first of all, everyone’s power is limited. Secondly, everyone has their own job, are using their spare time to do open source. For example, I have more than 30 to 40 issues and PR to deal with every Day on Element UI plus day. js. If I rely on myself, I am unable to deal with them completely. This is where the benefits of open source communities come in. There are a lot of enthusiastic partners who are willing to help you maintain the community, the ecosystem, and the project. So believe in the power of community and grow your community as much as you can.

One more thing that’s important to learn from both day.js and moment.js is to rely on a variety of automated tools, such as automated tests, automated lint, and other automated processes, to screen out as many low-quality, substandard PR as possible. This ensures that the PR that you need to review will not have problems with the code that doesn’t work, that your logic is broken, that the PR is bad, that the code is messy, and so on. On the one hand, this will improve the quality of your overall PR, on the other hand, it will significantly reduce the amount of time your maintainers spend on the project.

  • semantic version
  • Start an issue discussion for major changes. You may be wrong
  • Building community strength is more than one person can do

🎙️ : The sustainable development of an open source project depends not only on the maintainer’s own efforts, but also the Contributor of the project is a force that cannot be underestimated. Both Day.js and Element UI have more than 100 contributors, including some international contributors. Have there been any interesting stories about Contributor communication? In daily communication with domestic and foreign contributors, apart from language differences, do you have any differences in programming and design thinking?

Brother kun: I also have a small sample here. According to my contact with overseas developers of Day.js, I think foreign programmers are familiar with the rules of open source games, or the gameplay and process. Will be at the project lead or Maintainer: Can he bring up the PR. I think it’s important to do this, because if you have a PR that changes the project by half, but it’s not the direction the community wants it to go, it’s a shame to shut it down, and it’s a waste of energy and enthusiasm from contributors.

However, when I contact these foreign programmers, I feel that they prefer such a set of gameplay: first to communicate with you, then to do.

Another personal feeling, maybe it is my illusion, is that international friends have more free time, which is reflected in their participation in open source projects, the depth and frequency of participation are felt to be more than us (domestic programmers). To put it simply, there are more foreign programmers, both in terms of contributors and the amount of code they contribute, including discussions with you and participation in code review. On the one hand, it may be their interest, and on the other hand, overseas programmers may be really free, I think.

  • Some people are familiar with the rules of the open source game and will issue before asking if it is ok to do pr
  • They felt they had more free time and were more willing to contribute

🎙️ : Have you calculated the contributor ratio for Day.js in China and overseas? And how does Day.js attract so many overseas contributors?

Kuno: It’s about 9:1, less than one in ten in China. Actually, attracting overseas contributors is part of internationalization. At the beginning, when I was making day. js, I required the whole community issue or PR to be written in English. If the issue was in Chinese, I would definitely close it or ask them to change the title to English. Because, I was hoping that since we were doing open source projects, it would be friendlier for everyone to use English, the more common language on GitHub. In fact, my own channels are all domestic channels from the development to promotion of Day.js. Even if such a domestic project is promoted in domestic channels, it seems that most of 9/10 day.js participants in the development are, Or maybe 8 out of 10 are international friends, or maybe the two sides have different ideas.

Iamkun & Front-end learning and improvement

🎙️ : Before the interview, HG collected some questions for Iamkun. Due to the time problem, I will only ask one of the following questions: front-end technology changes with each passing day. In your daily work and life, which aspects will you mainly improve your technical level?

Kuno: I’ve been on GitHub since I started my career and became interested in the open source community. Up to now, I have spent most of my spare time learning and growing in the open source community. I personally enjoy building wheels in the community and sharing my own wheels to improve technology.

First of all, by building the wheel, on the one hand, you can learn some technical details that you are not familiar with, what is the underlying principle of it? And when you share your wheels and people look at them, it’s a great environment to learn from each other.

Usually, the level of the students in the community is higher than you, so whether they give you suggestions from the architecture, or correct some of your less elegant writing methods, including the PR they contribute to you are actually very good opportunities for you to learn and improve your skills.

This is a kind of positive feedback. In other words, if you build something and no one reads it, you won’t have much incentive to maintain it, right? But if you make something, and somebody uses it, and somebody gives you feedback, then you feel like there’s a little bit of value in making it, and you get a positive feedback, and you’re more willing to invest in making it better.

In such a process, in fact, you will learn and grow, and the learning and growth here is not only limited to the title of the front-end growth, more is to let you from a complete product perspective to view, planning products.

For example, how your product helps users solve problems better. This may return to the essence of technology, that is, the essence of technology does not mean to compare who has good technology and who has bad technology. Technology is only a means to solve a problem and make the product accepted by more users.

The last

That’s all for this HelloGitHub interview. Thank you iamkun for sharing his own and open source stories and experiences.

Build wheels on GitHub to share your work, and keep iterating and maintaining. Then use the power of the open source community to make it better and better as you grow stronger and stronger and not just technologically!

This is HelloGitHub, where you talk to individual open source project authors about their stories with open source. If you want to share your story with others about open source, please contact us.

Registration link: wj.qq.com/s2/8414291/…


Follow the HelloGitHub official account to receive updates as soon as possible.

There are more open source projects and treasure projects waiting to be discovered.