How to earn $1.5M in revenue from a JavaScript component


Indie Hacker: Marcin Warpechowski
Founded: Handsontable
Sphere of Genius: Product Development

Marcin is the co-founder of Handsontable, a JavaScript component that combines data grid features with spreadsheet-like UX.

The project is completely bootstrapped and is used by enterprise companies such as Amazon, T-Mobile, and Sony.

Originally an open-source project, Marcin and his co-founder Chris turned Handsontable, now a 19-person company, into a profitable software vendor in 2015.

Since founding the company, Marcin hasn't publicly spoken about Handsontable's journey. So I reached out to learn more about him and the company. Here's the interview:

What were you doing before you founded Handsontable?

Marcin: Before starting Handsontable, I was working as a software engineering consultant on a fixed term project. I knew the contract would come to an end, and my mind was buzzing with ideas.

Not for the purpose of building a profitable business, but for the sake of showing the world what I can build. In hindsight, I now know this was a fallacy - I shouldn't have built a company without knowing the market - but back then, I didn't care. I just had an idea.

How did you come up with such a successful product idea?

Marcin: When my software engineering contract ended, it was 2011. At first, my idea was to build a tool for journalists to create data visualizations for articles online.

At that time, if media articles had any graph or other data visualization, it was a screenshot from Excel. But I knew there were open source JavaScript libraries that could plot a nicer chart.

So, my thought was to bridge these two worlds. I built an MVP of a tool in which there is a split screen experience. On one side there would be an Excel-like data grid component, known today as Handsontable, and on the other part of the screen you would see automatically generated graphs. So my potential user would paste the data from Excel to Handsontable, or even type it directly in Handsontable to get a beautiful interactive graph that is embeddable in any website in a similar way to YouTube videos.

Then I put Handsontable on GitHub, which was getting popular at the time, and my project got some initial traction. As far as licensing is concerned, everyone was on jQuery and Handsontable was also a jQuery plugin back then. So, I picked the MIT license, which was the same license as jQuery. I wanted Handsontable to have the same conditions, because that license evidently helped jQuery achieve it’s tremendous popularity.


How did you find and service your first users?

Marcin: At some point, users started reporting feature requests. In order to help them, I applied moreAPIs to the product that would help to integrate Handsontable with any app.. At that point, my motives were still more altruistic than commercial.

Then one day, while reading Hacker News, I thought I saw the Handsontable component on the main page. I thought to myself, "Am I going mad, or is it really there?"

But I refreshed the page and yeah, it was there. It got 40 comments, all of them were positive, and the project went from 0 to 1000 stars on GitHub. That brought more and more traffic to the project.

Why did you choose to target journalists with your data visualization MVP?

Marcin: I chose to target journalists initially because I was interested in journalism and I was looking for a path to get maximum reach. I wasn't thinking about monetization.

But within a week after completing my MVP, it was rejected by a major Polish news outlet that I thought was my dream customer. Even worse, the same week, I learned about another startup called Infogr.am receiving 3 million euros in funding to build basically the same idea of a data visualization tool.

How did you manage to compete with a funded business?

Marcin: I didn’t have a lot of time to worry as I decided not to compete with them at all. My mailbox was full of offers from people from around the world to commission new features for Handsontable.

You can say that the side product of my MVP got life of its own thanks to GitHub and Hacker News. At that time, open-source had literally saved the project by allowing the first believers to point out to me that it is a solution to more problems than I could imagine.

So I started working as a consultant adding features to Handsontable or integrating Handsontable with someone's code base. This arrangement lasted for the next three years.

It was easy to add first features, because they were really low-hanging fruits, but the more the product matured, the larger the requirements for additional features became.

Features would take two or three months to implement, and it was tough to meet the sponsors’ requests while also focusing on growing Handsontable.

So I hired a contractor to work with me on it. That was 2013. The next year, in 2014, I hired a first payroll employee. The same month, I hired two additional contractors. All of us were developers. It was all funded through cash flow from the consulting work.

The good side of it was that there were no cash problems. I was able to allocate half of the resources to consulting work, and the second half to maintenance or open source work that wasn’t profitable.

What were the largest obstacles to Handsontable's success?

Marcin: While we were fully open-source, there was no clear idea of direction for the company, other than to react to what inquiries we received. If a customer wanted us to work on something, we did it. The reflection of whether we really want to sustain the requested change in the long term sometimes came too late.

The second problem was each new feature made our product more complex. The third was that at some point, we were going to run out of features.

How did you meet your co-founder?

Marcin: Chris Spilka and I met in 2014, and I told him about the predicament.

He said to me, "Why don't you turn this into a product company that sells licenses instead of hours?" And we both agreed this was the best route to go, so Chris joined the company one month later.

This is when we started transitioning the business from a consulting company to a product company.

I basically gave the steering wheel to Chris, and the first thing we did was build a paid offering on top of Handsontable.

We were proud of being a popular open source project and we wanted to continue being relevant as an open source project, but still find some way to monetize it. The idea was to sell premium features that would be interesting for enterprise customers.

Everyone on the team was worried whether we would sell the license or not, but obviously, it turned out to be a good bet, and from that point in time, we quickly became a company whose revenue is generated from selling these licenses.

In 2019 we needed to make a decision that redefined the company for the following years. The open-source license, which was the root of our early success, was now increasingly becoming an obstacle in the further growth and professionalization of the product.

We made a difficult decision of dropping the open-source version of the product to fully focus on the commercial offering. It is a topic that we’ve described in detail on our blog.

  1. 3

    This is a great read! I recall looking at Handsontable for my own project a while back.

    On the one hand diving into a product with no clear plan can be dangerous territory, but it looks like Marcin pivoted super well with his focus.

    I've always been curious about the open source with paid consulting model. It sounds like he made the right choice and took a big risk moving off of it -- but I have to wonder, would there have been this level of success if he hadn't started on that model? It seems like that initial traction was pretty important to the overall initial growth. And the open source aspect really propelled that.

    I'm definitely curious about the sort of lashback he might've received after dropping the open source version of the product. Being a developer myself, we can be a very finicky bunch.

    1. 1

      Thanks for your comment! Your observation on OSS helping with the initial traction is spot on.

      Re: Consulting. In some projects, open-source with paid consulting can work very well. After all, it worked for big companies like Red Hat and Percona (random link: https://www.openhealthnews.com/story/2016-10-10/how-percona-has-built-successful-open-source-business-based-support-and-services-re). However, Red Hat or Percona are mission-critical infrastructure vendors, so it is understandable that they can strike million-dollar consulting deals. With our product (developer tool, software library), the consulting engagements were usually short and paid in thousands, not millions, so we needed to turn to something else for stable growth.

      When it comes to whether or not there was a lash back, you can get the feeling of the community reaction in our GitHub issue (https://github.com/handsontable/handsontable/issues/5831) and on Hacker News (https://news.ycombinator.com/item?id=19488642). I think that the reaction was mostly positive.

      One thing that I regret is that we disappointed true open source projects that depended on the MIT version, such as RHandsontable. They decided to stick with the last MIT version. However, I think that some of these projects would qualify for our current non-commercial license.

      1. 2

        Thanks for the detailed response!

        At the end of the day you all had to do what you had to do IMO. Hopefully you don't feel to much regret about the RHandsontable situation, but totally understandable.

  2. 2

    Thanks @warpech. Can you share your approach on introducing big, sometimes conflicting, features which different paid users requested? Fork the project and develop multiple different "projects"?

    1. 2

      Luckily, one of the strengths of Handsontable is flexibility and customizability, by our plugin architecture (https://handsontable.com/docs/plugins/). In this architecture, we can choose to do the following:

      1. To add a new built-in feature, we make an internal plugin
      2. To customize a built-in feature, customers can fork the internal plugin, adapt it to their needs, and load it as a custom plugin
      3. To add a new feature for one customer, load it as a custom plugin

      We can help customers with points 2 and 3 by consulting, but our goal is to allow them to be self-sufficient through the docs and APIs.

      In the past, we needed to remove features that were causing conflicts or were too hard to maintain. The best example is version 8.0.0 (https://handsontable.com/docs/release-notes/#_8-0-0), which took the team a lot of work and required some breaking changes. The goal was to remove the conflicts between the features. One feature (GanttChart) was even removed completely. It was a big leap in the quality of the project.

      1. 1

        Thanks for explaining it Marcin.
        It's impressively flexible architecture. You guys have done a really good job.
        Best of luck to you and your team with further development!

  3. 2

    Interesting read! Thanks for sharing.

    Am in open source myself and the “open source project but no contributions” situation is very familiar to me. I currently finance my open source projects with a related commercial project and advertise that on my various repositories.

    I’ve been thinking about making my commercial project free for non-commercial use so I’m wondering how did the decision to make v7 non-MIT pan out?

    1. 1

      If I remember correctly, in the first month after switching to non-MIT, we saw a hiccup in sales, but I guess this is to be expected after changing the business model. But then, within a short time, our revenue doubled. We invested the new revenue in growing the team to further improve the product. We wouldn't be able to do that otherwise.

      I think this was possible because we had a fantastic customer base already. There were potential customers out there, who were ready to pay, but they didn't do that because they didn't have to. The switch to non-MIT allowed us to capture that segment.

      Whether or not this can be repeated in other projects, probably depends if you already can sell your product in parallel to the OSS offering. At the point in question, we already had some scale: 11k GitHub stars for the community edition and 1.5k sold licenses for the Pro edition. I don't think it would work, if we did it few years earlier, before we learned how to sell at all.

      1. 2

        I'm at a similar scale (both customers and GH stars), but in my situation the open source project is free and the paid product is more like a cross-sell instead of the same project with more features.

        Thanks for the additional info, helps me make up my mind :)

  4. 1

    @sethking thanks for this story, awesome and inspirational!
    One small question for clarifications: have they reached $1.5M in total revenue, or in ARR?

    1. 2

      It is the total revenue. A growing part of it is ARR (currently about half).

      1. 1

        🔥thanks for answering me, and good luck on the next part of your journey!

    2. 2

      thanks @nfilzi 'll let @warpech answer this :)

  5. 1

    Thanks Seth for interviewing Marcin and sharing his story with us.
    It resonates with me because I've been maintaining OSS projects for years, and, hell yeh, it's hard to abandon projects which you've been maintaining for years. But sometimes it's the only way to free up some time and energy for something more important.

    1. 2

      I am happy to hear that it resonates with you. I know that some idealists feel ashamed of wanting to commercialize their OSS projects. They shouldn't be. It's their work and their decision where they want to take it. In our case, the change was for the benefit of the professional users who want a sustainable, quality product. That said, I miss the fun, buzz and altruism that comes with OSS, and I wish to stay close to it with some projects in the future.

    2. 2

      Thanks for the kind words, and yea it definitely seems like a tough place to find oneself - maintaining a popular open source project, but needing to find a way to monetize it.

Trending on Indie Hackers
What is the #1 problem why aspiring entrepreneurs won't start their dream business? 19 comments I redesigned my landing page to something completely unconventional/unprofessional 18 comments How we automatically provision SSL for SaaS customers with custom domains 12 comments Breaking down one of the most successful ecommerce SEO strategies (IKEA) 12 comments On productized services, a crappy logo, and a shift in perspective that changed everything: Jaclyn Schiff's story 10 comments 44 products by bootstrapped startup founders you can use 10 comments