In this episode we’re shining our maintainer spotlight on Ovilia. Hailing from Shanghai, China, Ovilia is an up-and-coming developer who contributes to Apache ECharts, maintains Polyvia, which does very cool low-poly image and video processing, and has a sweet personal website, too.
This episode with Ovilia continues our maintainer spotlight series where we dig deep into the life of an open source software maintainer. We’re producing this series in partnership with Tidelift. Huge thanks to Tidelift for making this series possible.
Ovilia, we’ve been paying closer attention to GitHub’s trending developer charts, and in October your name popped up. You’re from Shanghai, China, and you’re doing some really cool stuff in open source. You’re a committer to Apache ECharts…
Yes, I am a committer of the Apache ECharts incubating project, and I do a lot of personal open source projects on GitHub.
What is it that draws you to open source and the things you’re doing today? …before we kind of get into the details of things. What is it that draws you to the community of open source in what you’re doing?
I think it’s cool to get people to know what you are doing and how you do it… And I think this is the spirit of the open source - that people can see how you do it, [unintelligible 00:01:57.16] what you are doing. I think it’s very cool to make interesting things in the projects that are really useful on GitHub.
Maybe what specifically you yourself, what’s your developer path? Give us some background on you.
I’ve been studying for software developing at school, and after graduation I think I’m passionate on the data visualization field, so I joined the Apache ECharts group. On the other side, I have been using GitHub for many years. At the start, there are not many followers, but as I’m doing many open source projects, after some time I got some followers and comments from them, and I think this feedback really makes me go on to do more interesting stuff on GitHub.
Speaking of followers, 9.6k (otherwise known as ninety-six hundred) followers on GitHub… You said it started slow; what do you think began an attraction to you as a software developer? Was it your work here on ECharts? What was the proverbial hockey stick for you?
I think it all started from a CV project that I did before graduation. At that time I was looking for a job after graduation. So I think instead of looking for jobs everywhere, why don’t I put my resume online and let companies know about me? So I made an online CV, and this project promoted very well, and it had maybe hundreds of thousands people to get to know me. From that time I got some followers on GitHub.
Maybe speak to that… I don’t know if we’ve ever really talked much about the fact that – obviously, many people know that GitHub is a social network for software developers, but we don’t often talk about the following that someone cultivates on GitHub… How have you seen that affect your developer life? … the fact that you have 9.6k people following you on GitHub. How does that permeate into your everyday life as a developer?
I think definitely it makes me more devoted, and I want to make more projects, and interesting, cool stuff on GitHub. But I think the difference is not very large between having 9,000 followers or 9 followers. Maybe the most difference here is when I create a new project, more people will get noticed to it, maybe put a star on it, or so… But the most important thing is to continuously create cool stuff on GitHub.
I was looking for a job after graduation. As I said, when I made this online resume, my current boss found my resume and asked me if I got interested in this project. At that time ECharts was quite famous, but I said “No, I haven’t heard about it.” Luckily, I passed the interview, partly because my research domain was about computer graphics and image processing. So it’s quite related to the project.
I’m very passionate about quantified [unintelligible 00:06:20.23] and data visualization, so I chose ECharts to be my first career, and I hope it will be the last one.
What do you know about the background of the project itself for becoming an Apache incubator project? Do you know the back-story there?
Yeah, I know some of it.
Can you share some of it with us?
Yeah. It was back in the year 2012 when an engineer of our company was doing a chart related task with his job. He found that it could also help many others with similar requirements, so he made this project open source on GitHub, under the organization of the company. That’s the beginning of the ECharts project. In recent years, more and more companies in China, especially the big ones perhaps, have come to realize that by donating projects to open source organizations like Apache Software Foundation, it is a good opportunity to let the project used and maintained by more people, who would otherwise be hesitative about the license or issues when choosing a project owned by a company.
Of course, it helped the company in reputation and more. In the year 2018 we donated ECharts to the Apache Software Foundation, and now it’s under incubation there.
That’s interesting. What does it offer? What do they offer to an incubator project that made you want to do that? Why was it compelling for the ECharts team to donate this project to Apache?
Basically, by incubation it means to learn the Apache way, which is how we do certain things when maintaining a project under Apache. For example, when we are going to release a version, we will do a series of things to build the release and run a vote, both inside the project’s committee, and outside with other Apache members.
Frankly speaking, this process could be quite complicated, but it ensures the project is under license protection, so the inconvenience is well paid.
Being in incubation is to learn such rules and make sure that we have everything down, without the help of mentors. That will be the time that we can go out of incubation.
Back to the question - I think a very important value that Apache offers is the opportunity o learn from such a mature community how to operate such an open source project… Because being open source is not just about making your project public on GitHub - which is the first step, but a very small one. In order to make it used by many others, there is plenty of work to be done.
For example, we need to provide complete and detailed documents and tutorials to help others understand how to use it. But a more challenging job for us is to build a healthy community, where people with different levels of knowledge can all get help from it. That’s one of the primary considerations when we decided to join Apache… Because at that time we only had less than five people maintaining the project as day job… And most of us are not doing it full-time.
On the other hand, we have 200,000 downloads [unintelligible 00:10:23.18] weekly. I think we could be proud of this ratio, but potentially it is a very dangerous thing though. This means that if one or two of us don’t maintain the project because of personal reasons or job changes, that will probably be the end of the project. So by joining Apache, we wish to learn more about how to encourage the community to contribute and make it healthier.
I can’t say that we’ve done well enough, but we are having progress on this. After joining Apache, we have voted and accepted about six new committers, and definitely have more pull requests from the community after we turned to be more open and provide more proper ways to guide the community to help.
Very great answer. You said that you’ve been involved in Apache ECharts for more than three years now. Refresh my memory - how long ago was the incubation process?
That was beginning from January 2018.
So just a little over maybe two years now. Just approaching two years.
I think it’s wise of you to mention the difficulty (I would say) to paraphrase what you have said, how hard it is to become an incubator project, what’s involved in it… But the payback is to learn the Apache way, and it’s not just simply putting your source code onto GitHub or onto the internet anywhere, and saying “Hey, we’re here.” It’s more of a “How to be an open source project.” That’s really interesting, the way that you’ve spoken about that… Because not everybody has that perspective. What is it that gave you that perspective? How did you investigate the “Apache way”, or “the way of Apache” to decide to incubate with them, versus someone else or somewhere else?
Yeah, because we turned to realize that by maintaining the projects by only a few people is not enough. Previously, we had pull requests from the community, but for projects like ECharts - that is the codebase is large and not easy to understand - we often get pull requests that seem to eliminate the bug, but actually don’t fix it in the correct way. And before joining Apache, we used to close this kind of PRs and fix it by ourselves, because it takes more time for us to teach them how to fix than to fix it by ourselves.
This could be a problem, because we have so many users and the product is rather complicated in order to meet the requirements of so many people. Before joining Apache, we realized this problem, and we think we should have a way to solve it. Apache helped us a lot by providing us ways to fix this.
You seem very well-versed in the behind the scenes of this project, more so than I expected. What role do you play for the project, and what are the things you do for it?
I am a committer of it, and I do fix bugs, and I do feature requests for it, along with community building. I will ask the community to vote for the new committers, and to see how we can help more people contribute to the project.
For the code part, I’m doing some tools like [unintelligible 00:14:19.13] which helps the user set the charts themes in GUI and export it to be used in ECharts. I’ve made a cheatsheet to help users understand the terminology of components, because in the documents, components are named like “legend” or “access pointer” or “visual map”, so new users may find it hard to locate the document. I created a chart with frequently used components, and when the mouse is focused on the component, it will show the names of that component and the link to the document.
I’ve also created some new types of charts, like liquid fill charts for percentage [unintelligible 00:15:14.23] tree structure… But our regular work is about fixing bugs and producing new features for all parts of the code.
Very cool. I guess it’s kind of hard to bypass the fact that you’re from China, and my guess - I didn’t ask you this, but my assumption is that Chinese is your first language… Is that correct?
And English is your second, I would say, or maybe third or fourth, potentially… And I guess one question that gets asked often is about language barriers. Can you speak to a language barrier in general? Is that a major problem for you when you are involved in open source? I know that a lot of software and documentation and whatnot is primarily written in English. Is that a problem for you when you commit to open source, or is it only an annoyance?
I think when contributing to the open source, the language is not a very big problem for me… Because luckily, making comments on GitHub or writing emails to discuss about technical problems don’t require one to have a degree in English literature. And even I make grammar mistakes - like I did many times today, I guess - usually, others can also understand what I mean. I don’t think it’s an annoyance, because only with the help of having a common language can people all over the world communicate and together build a better tomorrow.
Isolation and arrogance can only take one backward. As a famous Chinese saying goes, “Move forward, or you will fall behind.”
Very well spoken, very well spoken. There’s another one in the Bible that basically says “To plow a straight row you can’t look back.” So if you’re trying to go to a certain point, the analogy essentially is – and obviously, somebody who would be gardening or developing their farm, they’re gonna be using a plow to make straight rows for their planting, for their process… So in order to make that row straight, you have to have a vantage point far enough in front of you that you’re fixated on it, because that’s how you keep the plow straight. And if you’re constantly looking back - well, you’re not gonna plow a straight row.
Let’s talk about Polyvia… Is that how we pronounce it, Polyvia [Poly Via]?
Yeah, I would call it Polyvia [Polyvia], but that’s okay, because you don’t have to pronounce it [unintelligible 00:19:17.11]
Well, sorry about that. Polyvia. Low-poly image and video processing… Let’s talk about this. This is a project you started… Tell me about the background of this project.
Yes, this was originally my graduation project, which takes an image as input and generates a stylized image with triangles of different colors and sizes. The naive method would be to choose some random points in the image and form triangles from that… But it loses the edge information, so the result is not recognizable that much. My method is to first find out the edge information, and then put a higher possibility on random points to lay on the edge. In this way, the edge can be preserved and the overall result is better.
After we have some random points, Delaunay triangulation is used to form points into triangles. The main idea of this algorithm is to avoid obtuse angles in triangles, so that the result is more pleasing… And finally, use the color at the gravity center of the triangles, and we have the result there.
How long did this project take for you then? You said it was a graduate project, is that right?
What was the behind-the-scenes of the a-ha moment? So you mentioned a naive approach would be just to simply find the edges, and instead you took a different route, to not just find the edges, but then also to sort of find the defining edges there. How did you get to that point? Tell me about the iteration process.
Because the naive way loses the edge information, my first point was how to preserve the information. From the image processing lesson I learned that I can use some operators to get that information. And once I get the edge information, I can put more random points on that edge, so that the triangles will be formed on that edge.
I haven’t dug into every single project you’ve done on GitHub, but considering what you’ve been involved in with ECharts and this graduate project, it seems like you’ve got a pretty (let’s just say) creative mind. What are some of your favorite projects that you have on GitHub? What are ones that really – whether they’re popular or not doesn’t matter; it’s more like, which ones were the ones that were the most fun for you?
That’s definitely my personal website.
Oh, yes. What was the thought behind this? This is a really interesting website. I love it.
I redesign my website every year, because I always have new ideas for the new design, or new technical details. This year I made an old school pixel art style, because last year the design was like a robot, which you can communicate with it. She will ask you about “How do you feel about this website?” and you can pick an answer to communicate with it. In this form, I want to make a conversational app to the user. This year I think of that instead of making a communication robot, why don’t I make a mobile phone? In this mobile you can see apps of my projects.
For example, the album is about my photos, and the apps are the apps I made. There are apps that I made on the iOS app store. This way, this website can hold the projects I did and the things about myself. I think this could be an interesting personal website idea.
I definitely think it’s interesting, and frankly, I think it’s awesome.
One thing I love is just how – I’m digging through your album, as you mentioned, and how it’s based on real photos… But when you first look at it – for listeners, when you’re checking this out, you can go to zhangwenli.com and you’ll be presented with the latest iteration of her website. It’s super-cool.
So when you go here, you can see your images, and it sort of goes from this pixelated version to the actual, real photo. Is that a separate project? What’s the thinking behind that and how does that work?
Yes, this is a separated project that I made for my new design of personal website. The main idea is to use image processing to make the photos into old-school palette. So I made a command line Node.js service to do the job. After that, I made this separate Npm package and open-sourced it.
The main idea is to give a palette of colors. For example, for old school I may give some different scales of grey colors, and then it will find the nearest color of each pixel and turn it into an old-school palette image.
You mentioned that’s – for Node.js, is that open source as well, as most things you work on?
Yes, it’s open-sourced to a separate project, and I created an Npm package of it.
Clearly, you have a plethora of open source. This website is a testament to that. That’s also open source on GitHub… So if you want to dig into this software and the code behind it, the website, you can check out our show notes… But I’m curious when you find time to do all this. How do you design your life to be able to work on so much open source? And I guess maybe a side note to that is why open-source everything that you’ve done?
I think for the time part, if you really want to do something, you will have to [unintelligible 00:25:57.29] the excuses. We all have limited time nowadays, but what we do with our limited times pretty much forms who we are… So I think it is a cool thing to make those things open source to public and let others see who I am from the projects I made.
Let’s talk about maybe the reasoning why open-source then. Why do you open-source so much?
I can’t think of a straight answer, but the first idea that comes to me is that “Why not?”
Okay, I like that. So then “Why not?” then, right?
Let’s speak to that then, versus the opposite side of that… So then why not? What’s your reasoning behind that?
I think my idea was that at first if I open-source a project, I have nothing to lose. And then, I certainly get more reputation from the community. And I don’t think there is instant revenue from that, but I think I pretty much like and enjoy the experience of open source.
So you spoke to time, you spoke to the Why… Maybe what do you like most? You mentioned it’s not about revenue, or (I would assume) some sort of income, or some sort of personal gain, but what is it that you like most about being an open source software maintainer?
I think it’s really encouraging to see that the project I participate in can help so many people (ECharts). This is one of the Apache values, called “Earn the merit.” That means you contribute to a project and gain reputation and respect from the community. I think this is pretty much the most inspiring thing for me, to maintain such projects.
These values of the Apache way - are they well known?
It’s well known in the Apache community, but I don’t think so outside.
Because that seems like some wisdom. What other wisdom is behind the Apache values? Can you share some of your favorite Apache values?
Yes, one of them is that you contribute to the project personally, rather than representing from a company or organization. For example, ECharts was originally donated from a company to Apache, and we committers are speaking our minds personally, but not representing the companies. In this way, we all have the equal right to have a conversation or discussion, and no one has the authority in deciding everything.
Yeah, I like that. The merit, I suppose, would even be the case - it comes back to you, versus the company you represent. It’s a personal value, versus a corporate value that you get to inherit.
Interesting. I love that, “Earn the merit.” It’s such a nice thing to say. That’s a phenomenal response to “Why open-source?” Because you get to earn the merit, you get to make the world a better place. Obviously, on the flip side of that there’s always some sort of least favorite thing… So as an open source software maintainer, what is it that makes you wanna pull your hair out? What’s the least thing you like about being an open source software maintainer?
I sometimes feel regret to see that some of the users from the open source community take it for granted that their requirements should be answered and fulfilled as soon as possible. Not only for ECharts, but this is rather a common problem for the open source world. Of course we can understand that from the user’s view they always have urgent requirements and think it’s the responsibility of the open source project’s maintainers to fix the problems with the highest priority, but it’s not how the open source works. This makes some of the users frustrated or even angry about it.
In fact, the whole point of being open source is to provide a source code so that everyone can help improve it. We don’t expect everyone to debug and find problems by themselves, but some users just don’t know how to raise a question informatively and politely. That could be frustrating for the maintainers.
Tell me about this concept that has become more popularized in the last several years, and maybe especially this year, with the inception of GitHub Sponsors, for independent open source software maintainers to essentially find paths to fund themselves. There’s words like “sustainability”, “funding”, “sponsorship” etc. but what is your position on receiving financial benefit from your efforts in open source? What’s your stance on that?
Yeah, I think it’s a nice way to start and experiment to see if this could work for the open source world… But I’ve not personally tried with it, because they are only for the better stage. I think if it can go to a healthy community, like the Patreon goes, I think it’s a good way for the maintainers to put more effort on it… Because some of them can be a full-time open source maintainer, to put more efforts on the project.
On the other hand, I do have concerns about whether these benefits could let the open source go another way to consider the benefits too much, so that it will have some potential [unintelligible 00:32:14.11] from that.
So your concern is that a focus on sustainability or a focus on funding could skew the focus, essentially…
I can’t say for sure, but I think it’s worth experimenting.
The reason why I ask you that is because I’m not seeing on your super-awesome personal website any sort of mention of Patreon or anything like that; when I visit your GitHub profile I don’t see the option to sponsor you… I know that they’re still rolling out some of these benefits, especially on GitHub. I know that they’ve recently just announced coming out of beta to 30 different countries, and I would assume that China might be one of them… Maybe not. Can you speak to that? Is GitHub Sponsors an option for you personally in China?
I don’t know the current stage, but I do know that GitHub is trying to build more relationships with the developers in China. In fact, I was heading for Shenzhen to a GitHub meetup held by GitHub; they want to get more Chinese developers focused on GitHub. I think this is a good signal to see.
I guess what I’m driving at is I haven’t seen you making an effort to try to fund yourself through sponsorships, donations, Patreons, however you wanna frame it. Are you personally interested in that? Are you just sort of like waiting and figuring out how it’s gonna play out? What’s your personal stance on it for you and finding some way to be financially supported through your open source?
I think if it’s open to me, I will have a try. But I don’t think this is a very long-term good way for me to get supported financially. I think a really healthy way is to provide real values to the users. If the users can use the products I create and benefit from it, they will donate to me. That’s a good thing. If I contribute to the ECharts project and help many other people, and then they donate to me, I think this is a good thing to see… But for my personal projects I usually do projects that are not used by many people, or I can say they are just “toy projects.”
I don’t think I can gain benefit from them. Or even if I can get some benefits from it, it’s not enough to support me to do it full-time. I think what I wish to do is to create apps or other services that really help people to create their own values.
So since you don’t have a way right now for someone to donate to you, what options are available to you in China? What options are available to you personally to take that first step? When might you consider doing that?
I have put two of my apps on the app store, so they can buy my apps if they think it’s helpful to them. In China we have other donation services, pretty much like Patreon, and they are open to Chinese people. But I think my reputation outside of China is not very much, so I didn’t provide an extra way for people outside of China to sponsor me.
I see, I see. Well, that’s what we’re trying to drive to with this particular show - a pique into not only the projects that we speak to on this show around open source, but also the maintainers behind those open source projects, their lifestyle, what they’re involved in, their values, as you’ve talked about… The reasonings why they do what they do, and maybe what you like most and what you don’t like as much… But then also, as we try to find ways to sustain, that being an open source software maintainer, as you’ve said - one of the things you said you like least about it was that people feel as if they can ask you or ask of the project maintainers something and expect the answer today.
That’s a skewed expectation from a user’s standpoint, but it doesn’t help you be able to show up every day. It doesn’t help you to cover rent, or to – for lack of better terms, to make being an open source software maintainer your thing, what you do… And the reason why I say that is because when we spoke with Devon Zuegel on a recent episode of the Changelog, and we talked about GitHub Sponsors, near the end of the show we asked her “What’s success for you, for GitHub Sponsors?” And I was quite surprised by her answer. Her answer was “Just like someone would say they wanna be a firefighter, or a lawyer, or a doctor, I want someone who’s young, who’s aspiring to their future, to say “I wanna be an open source software maintainer.”
So one of our reasonings for doing this show, this maintainers spotlight series, is to get an understanding of everyone’s thought around that particular subject, because it’s becoming so much more of a concern to figure out how to sustain - not just the projects, but the people behind them. What are your thoughts on that?
Yes, that’s exactly why I can’t answer your question about why I do open source. I think the idea is I just love it.
In all honesty, that’s the best answer. I love that.
Let’s talk about maybe other maintainers out there you might admire or appreciate. You’d mentioned that a lot of your popularity, and potentially even a lot of your social network that you know, is in China… Who out there have you learned from over the years? Who’s somebody you look up to, somebody that we can share with our audience?
I would recommend to developers – one of them is our ECharts committers, whose GitHub ID is pissang. He’s specialized in WebGL and created many interesting and useful visualization tools, one of which is called paper-quilling-art, which generates artistic image processing resources simulating the effects of paper quilling art. It’s quite hard to describe, but I think you will be impressed if you check it out.
He can answer almost all of my technical questions, as much as I can remember, because he is my mentor. But one more valuable thing I learned from him is that to persist in what you think is worth doing and putting in continuous effort before achieving a result good enough. This has always been inspiring me when I feel not so confident about what I could or should do something.
Yeah, absolutely. We can obviously get quite paralyzed, and unless we think something is worth doing – I think that’s fantastic advice, to persist in something worth doing. That’s awesome.
And another one is a designer, but not related to the ECharts project. He is a designer, but his web programming skills are good enough to make his excellent designs into code. He’s also very active on GitHub. His ID is jjying. I most admire his taste of design, and he’s also producing a podcast called Anyway.FM, but it’s in Chinese…
My point is it’s really inspiring to have some people around me doing excellent jobs in their own fields. That can make me myself to be more devoted and create more interesting works from my side.
Maybe let’s talk about the necessity of a mentor. That often gets glossed over, I would think, to some degree. We’ve spoken about it on JS Party and other podcasts we have here on Changelog, but… Can you speak to this idea of mentorship to you, and maybe even some helpful tips on how to find a mentor?
It’s actually from my day job mentor. So I can tell you how to find one, but I think I’m really lucky to have one.
Well, let’s go from the angle if you didn’t have a mentor today, and you have the open source prowess and followership that you have, and the impact that you’re already involved in. Obviously, you’re involved in a high-profile project with Apache (ECharts). If you had to seek out a mentor today, how would you do it?
I think the first question would be why would you need a mentor? For me, maybe this is for technical problems, or to have someone that you admire so that you can be more devoted and be as good as you think he is. So if it is the later one, I think we can find many mentors on GitHub. I think that’s pretty much the reason why so many people follow me, because they find me doing those cool things, and always have interesting new ideas… So maybe they think that by following me, this can help them to be more devoted and do cool things by themselves.
[unintelligible 00:42:28.18] What’s the next step for you to become a mentor? Or are you already a mentor?
You mean at my day job?
I mean in open source. You seem to be very well-spoken, for one, very capable of producing awesome software and leading great communities and being a leader… What’s the next step for Ovilia to be a mentor of someone else?
I write blogs… In Chinese, sorry. I write blogs about those non-technical ideas. For example, I posted a blog about how I did two iOS projects in two years, and I wish to use these kinds of post to inspire more people to have faith in themselves and to do those cool things by themselves.
I’d love to help you do that. That would be awesome. One of the positions also for us doing this is to help people like you to reach more people, and in many cases, like you’d mentioned, that’s probably the reason why people are following you, is because they wanna find some inspiration, they wanna find a path forward, and you’re providing that path, in many ways.
Ovilia, thank you so much for your time. It was awesome to hear about your background and your involvement with Apache ECharts, and your thoughts on mentorship, your thoughts on why to even be an open source software maintainer… Thank you so much for your time, it was awesome.
Thank you, Adam.
Our transcripts are open source on GitHub. Improvements are welcome. 💚