Skip to content

Commit

Permalink
blog: bootstrapping
Browse files Browse the repository at this point in the history
  • Loading branch information
helloanoop committed Dec 13, 2023
1 parent ecfb8a6 commit f634d40
Show file tree
Hide file tree
Showing 5 changed files with 94 additions and 20 deletions.
83 changes: 83 additions & 0 deletions posts/bootstrapping.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
---
title: 'bootsrapping'
date: '13 Dec 2023'
description: 'bootsrapping bruno'
---
Hey everyone, This is Anoop, creator and lead maintainer of Bruno.

This is in some way a personal post and covers some of my worldviews and my thought process that went into deciding to bootstrap Bruno.

### Summary
* I will be working full-time on Bruno from Jan 2024.
* Despite VC interest (8 VCs reached out in last 2 months), I have chosen not to explore raising money for Bruno. Reasons being:
- Would like to grow slowly, preserve full liberty and freedom over the product direction.
- Have confidence in building a profitable enterprise through Golden Edition purchases as well as building ancillary products around Bruno.
* Will be setting up a monthly community call to discuss the product, roadmap, anything and everything related to Bruno (first wed of every month at 5 PM GMT.)

### Business ?
In the past, my vision for Bruno didn't involve establishing a company or hiring individuals. The plan was to earn income from the project by offering select features under the Golden Edition (closed source) while working on Bruno part-time.

Bruno's exponential growth has surpassed those initial plans. Currently, there are over 400 pending issues and 80 pull requests awaiting review, despite merging 250 PRs in the last two months alone (averaging 4 merges per day). Balancing this part-time alongside my dayjob as a tech lead is no longer feasible.

Here are some of the highlights that happened in the last 2 months compared to the previous two years:
* Grew from 500 to ➡️ 25,000 monthly active users
* Github stars skyrocketed from 500 ➡️ 9,000
* Launched [version 1.0.0](https://www.usebruno.com/blog/announcing-version-1)
* Presented Bruno at [India Foss 3.0](https://www.youtube.com/watch?v=7bSMFpbcPiY)
* Opensource Contributors increased from 15 ➡️ 100
* Number of PRs merged grew from 50 ➡️ 250
* VC inbound interest to explore increased from 2 ➡️ 8
* GitHub Sponsorships revenue grew from 0$ ➡️ 40$/month

### Thoughts on VC funding
I would like to first clarify that I am not against VC funding. It's the reason why many of us in the industry have well paying jobs in swanky offices. They inject capital and help push the ecosystem forward.

When it comes to Bruno, my stance on VC funding remains the same. An API client is not venture scale.

Some friends and colleagues are baffled on why I would reject an opportunity to explore funding when there is inbound interest from VC's. The irony is that - before Sep 2023, I would have accepted funding in the blink of an eye; but now despite inbound interest, I am no longer interested.

Looking back, I had nothing. Just an innovative api client with little to no visibility. That may be the reason that would have accept taken VC funding in the past. Just to "matter", to be "heard", to gain some visibility.

Its not the case anymore today. We have a growing community and contributors who help make Bruno better.
We have feedback where people literally say - "I love Bruno". What more do I need as a creator (as long as I figure out a way to make a living out of it)?

### Perils of VC funding
Many opensource projects thar raise funding may end up struggling to make enough revenue to justify the valuation. Then they start to paywall features which were previously free, and the users start looking for alternatives. That is what has happened in the API client ecosystem (many times over).

Most founders eventually lose control over the product direction and may be forced to make decisions that are not in the best interest of the community.

### Money and Altruism
Lets get into this uncomfortable topic.

Just like 99.99% of you, I am motivated by money and would like have nice things. And secure the financial freedom for my family. I just don't have outsized ambitions to raise money and build a unicorn. Would be happy with a small business that makes enough money to live a comfortable life.

Most people who deny and say that they start a company to change the world are lying. There is always an element of self-interest. If they still say that they are not motivated by money, ask them to hand over half of their shares to a non-profit. They won't. Very few people get to a place where they are no longer motivated by money.

The business model for Bruno is simple. Its just aligning the incentives.
* Build and maintain most of the features as opensource (most things a developer needs)
* Offer select features under the paid plans (features that a business needs)
* Be transparent and do right by the community always
* Maintain full autonomy over the company and product direction
* Build cool stuff, provide value and have fun along the way

### Rebellion
Bruno, at its core is a [rebellion](/manifesto) against the the status quo of the API client ecosystem.

Its quite common these days to raise money and go big when your opensource project gains traction and a certain number of github stars. Many api clients have done that.

The spirit of rebellion (challenging the status quo, rethinking from first principles) continues in the choice to bootstrap Bruno. Explicitly choosing to not raise money and grow slowly.

### What's on the Horizon?
Starting January 2024, I'll be devoting my full attention to Bruno. Priorities include tackling our backlog of issues, PRs, and fulfilling feature requests.

I am going to bootstrap a self-sustaining developer tools company crafting tools that delight developers.
Starting alone, will expand the team as we grow.

Moreover, as Bruno matures, we will build more products around the API development ecosystem.

The path ahead is the one less travelled. I look forward to sharing lessons as I trek this journey and continue to make Bruno Awesome, an API client that developers "love".

Thank you for all your support ❤️

Best,<br/>
Anoop
13 changes: 8 additions & 5 deletions src/components/Footer/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -64,11 +64,14 @@ const Footer = () => {
</a>
</li>
<li className="mb-2">
<Link href="/blog" legacyBehavior>
<a className="text-gray-500">
Blog
</a>
</Link>
<a
href="https://github.com/usebruno/bruno/discussions/384"
target="_blank"
rel="noreferrer"
className="text-gray-500"
>
Roadmap
</a>
</li>
</ul>
</div>
Expand Down
11 changes: 2 additions & 9 deletions src/components/Navbar/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,15 +71,8 @@ const Navbar = () => {
<Link href="/sponsors" legacyBehavior>
<a className="font-medium mr-3 hover:text-yellow-600 transition">Sponsors</a>
</Link>
<Link href="" legacyBehavior>
<a
href="https://github.com/usebruno/bruno/discussions/384"
target="_blank"
rel="noreferrer"
className="font-medium mr-3 hover:text-yellow-600 transition"
>
Roadmap
</a>
<Link href="/blog" legacyBehavior>
<a className="font-medium mr-3 hover:text-yellow-600 transition">Blog</a>
</Link>
<Link href="/about" legacyBehavior>
<a className="font-medium mr-3 hover:text-yellow-600 transition">About</a>
Expand Down
1 change: 1 addition & 0 deletions src/pages/blog.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ export default function Blog() {
</h1>

<ul className='blog-list'>
<BlogLink title="bootstrapping" path="/bootstrapping" date="13 December 2023"/>
<BlogLink title="announcing v1" path="/announcing-version-1" date="02 November 2023"/>
<BlogLink title="launching bruno cli" path="/launching-bruno-cli" date="03 April 2023"/>
<BlogLink title="the saas dilemma" path="/the-saas-dilemma" date="28 March 2023"/>
Expand Down
6 changes: 0 additions & 6 deletions src/pages/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,6 @@ export default function Home() {
<span className='ml-3'>vs Postman</span>
</a>
</Link>
<Link href="/blog" legacyBehavior>
<a className="inline-flex items-center justify-center w-full px-5 py-3 text-sm font-medium text-center text-gray-900 border border-gray-200 rounded-lg sm:w-auto hover:bg-gray-100 focus:ring-4 focus:ring-gray-100 transition">
📢
<span className='ml-3'>Blog</span>
</a>
</Link>
</div>
<div className="flex justify-center mt-6">
<img className="w-full" src="images/landing-2.png" />
Expand Down

1 comment on commit f634d40

@vercel
Copy link

@vercel vercel bot commented on f634d40 Dec 13, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.