Open-source is broken: the sad story of Denis Pushkarev (core-js)

Explore the sad story of Denis Pushkarev, the creator of the famous core-js library, and the lessons we can learn from him. Is open-source broken ?

Open-source is broken: the sad story of Denis Pushkarev (core-js)

What is core-js

The web development industry has grown significantly over the years, and with the growing demand for web applications, developers have found themselves creating complex applications that utilize modern web technologies. One of the challenges of modern web development is ensuring that applications work seamlessly across different web browsers. This challenge is compounded by the fact that not all web browsers support the latest web technologies.

Created in 2014 by Denis Pushkarev (aka @zloirock), core-js solves the problem of cross-browser compatibility. The library provides polyfills for many features, such as Promise, Array.from, Object.assign, and more. By using core-js, web developers can write modern JavaScript code that works across different web browsers.

core-js has become an essential tool for many web developers, and its popularity has grown steadily over the years. The library is used by many popular JavaScript frameworks and libraries, such as React, Angular, and Vue.

You can find core-js on about 75-80 of the top 100 websites.

 

The story of Denis Pushkarev

On GitHub, more than 13 million developers use core-js, and via the npm registry, it is downloaded over 43 million times per week. Since Denis Pushkarev released it as open-source in 2014, it has been downloaded over nine billion times throughout the years.

You may think that a guy like that gets a lot of gratitude from developers around the world, but his story turns out to be different...

 

The creation of core-js

Back in 2012, when Internet Explorer was at its prime, Javascript a piece of shit and inadequate to build serious websites unless you used some duck tape here and there, Denis decided to go full-stack with Javascript. What an idea, right ?

Well, this guy decided that he won't wait years for required engines to implement the most modern and necessary Javascript features, and created a library to support these. He then published this library as an open-source project called core-js.

Denis Pushkarev said: "I wanted to make the life of all JS developers easier and in November 2014, I published core-js as an open-source project."

 

The success of core-js

Denis Pushkarev didn't promote himself for the project, it hadn't a website or social media accounts. The guy didn't show himself at conferences or write anything about it, he just published it on Github and had fun developing it.

But rapidly, after a few months, core-js has become the standard of JavaScript standard library features polyfill. The library hit the scene as 6to5/polyfill, but underwent a major rebranding to become babel-polyfill. After some sweet collaboration, a cutting-edge tool emerged, rebranded and evolved into what we now know as babel-runtime. And just when you thought it couldn't get any cooler, core-js got in on the action and was integrated into the key frameworks after just a few short months.

Logically, major companies adopted the library and thousands of developers started using the library, sometimes without even knowing they were using it or who the creator was.

Keep in mind that Mr. Pushkarev received no money for this project. He worked hours and hours on it, for free.

 

The accident - welcome to hell

3 weeks after the release of core-js, Denis rolled over 2 girls with his car when driving back home. I won't get into details - no one knows the full story - so I let you make your own opinion by reading his statement here.

Long story short, he had to pay 80k to the girls or go to prison. Of course, because he refused many job offers to work on core-js and he had no revenue from it, he was broke. Time was running out for him and he had to do something to pay for his freedom.

 

Fundraising, hate and prison

To get out of this situation, Denis started raising funds to support the library development. Well, you know you, I know me, almost no one helped him. But the situation got worse.

Thousands of developers started to get annoyed by his request of money, and started to attack him with insults claiming that he has no right to ask for money. Some even suggested to restrict him from accessing the package and move the repository to someone else. I mean, this guy literally rejected high-paying job offers and spent hundreds and hundreds of hours working on a project that was adopted by almost everyone (including big companies) for free, and when he asks for help thousands of people start to insult him. I get it, if you don't want to pay, don't. But insulting and rejecting him ? Nah...

During this time, the number of downloads per day of the library doubled, but still no money

End of story: he ended up in prison.

 

Back to work

After 10 months in prison, Denis Pushkarev was released early. Of course, people kept hating him, posting angry messages calling him "the worst maintainer on Github".

What did he do ? The exact same thing. He continued working on the library for 2 more years, without having any stable source of revenue. Honestly, I don't know what happened in head, or should I say what didn't happen in his head. But he kept working full-time on it, releasing more and more features, in the shadows of the average user.

 

The war and baby Pushkarev

As if it wasn't enough, Denis saw what little support he had disappear. Tidelift stopped sending him money because of the political situation between Russia and Ukraine (he is Russian and lives in Russia) as the Hyperwallet that the company used is no longer available for Russians. So they froze his money, simple as that. His other source of revenue, OpenCollective, reduced his monthly paying from 600$ to 300$.

And then, he became a father. Meaning that in addition to having to take care of himself and his wife, he must now take care of his son.

 

No more

Denis Pushkarev's had enough. The hate, the lack of appreciation, the lack of money, the lack of time made him want to quit and write this message. Again, I don't know what took him so long to realize this, but better late than never.

Denis sees different futures for core-js:

  • Appropriate financial backing - the library is too big to be maintained by a single person and needs a minimum of 2 persons to work on it full-time on a paid basis ($30k / month according to him)
  • The library will become a commercial project - core-js will change the license, have a free version with limited features and extra functionalities will be paid for
  • Slow death of core-js - the project won't have new features, some minor bugs might be fixed here and there, but the project will just die and be forgotten

 

What can we learn from Denis Pushkarev and core-js

We often hear that open-source is great, good, ethical compared to close-source and all the typical woo-woo. But in the real world, this isn't enough. You don't live and pay bills by doing good things: you need to have some business skills. This doesn't make you a bad person: if you don't have enough motivation to work on your open-source project, it simply won't last. 

You need to promote yourself and your open-source project

Denis said that not promoting himself or the project was his "second biggest mistake". And he's totally right. You may know people around who are complete geeks and love coding. These people are often the most prodigious developers but oddly, they're making no money. In the other hand, you might know some shitty developers making 300 grand a year.

This is the main problem with open-source.

These geniuses publish really useful things, many people use their work but no one cares about them. What happens next ? The genius loses motivation because he receives no gratitude for his work and simply abandons it. Then you have many people feeling abandoned and suddenly, they get to know that guy and start to hate him.

Everyone loses, but you lose even more and you can't even blame them, you have your share of responsibility in the story.