royathan

API Clients: Bruno betrays, Yaak yaks

TLDR: Yaak is excellent

Imagine having application wipe out your local data, and force you to create an online account to get it back. Sounds a lot like ransomware. That’s what Kong did with their Insomnia REST Client during an automatic update.

So… time to shop around:

  1. Insomnia šŸ’€
    • Good will absolutely devastated
  2. Postman
    • Bloated
    • Closed source
  3. Insomnium (Insomnia fork)
    • Not maintained (what happened here?)
  4. Bruno
    • What felt like an obvious choice until you look at the path itā€™s taking toward becoming the very thing it swore to destroy
    • Locks key features behind paywall
  5. REST Client - VSCode
    • Lacking a way to view request/response body history
    • Requires using a VSCode project which is messy
    • Clunky for my usage
  6. HTTP Client - IntelliJ/Goland
    • Insanely slow startup if the IDE isnā€™t already running
  7. Rapid API for Mac
    • Worried about lock-in
    • Closed source
  8. Hopscotch
    • Bloated
    • Poor request/response history
  9. Curl
    • No response history
  10. Yaak ā† I like this one ā­
    • Open source
    • No lock-in (local with import/export)
    • Excellent future outlook (focused, sustainable income model)

Disappointment

The obvious fallback is Postman, the front-runner in developer headspace. But I wrote that off long ago for its lack of auto-save (which it finally added ā€œrecentlyā€), plus itā€™s not open-source.

In my eyes, Insomniaā€™s functionality was close to perfection so Iā€™d have liked to use an Insomnia fork from before they did what they did, however, there isnā€™t a maintained fork (Insomium is archived under somewhat dubious circumstances šŸ‘€).

I think Rapid API Client (formerly Paw) is one of the highest quality options here and is free, but ultimately, itā€™s closed source, MacOS only, and Nokia just acquired Rapid, so I donā€™t have high hopes for it staying free and maintained.

Then I finally landed on Bruno! But wait, the TLDR said Yaak: You see, Bruno does everything perfectly (for now), but only if you pay for it.

The Bruno Rant

A gif of Obi-Wan from Star Wars saying “It was said that you would destroy the Sith, not join them!”

Bruno Creator:

So here is what we dont want to do

  • We don’t want to raise VC funding
  • We don’t want to sell the project (get acquired)
  • We don’t want to add/support cloud sync
  • We don’t want to start a company and hire people
  • We don’t want to sell monthly recurring subscriptions

He then started a company and hired people.

We don’t want to start a company and hire people (edit: see here)

One user on the GitHub issue wrote:

Take your bets, which oneā€™s getting crossed out next?

A strangerā€™s responded:

Obviously the last one. And then the others. This is a todo list!

If you look at Brunoā€™s pricing, you might notice indeed, Brunoā€™s pricing model has changed to monthly subscriptions.

We don’t want to sell monthly recurring subscriptions

So Bruno is open core not open source. If the paid features werenā€™t impactful to the average user, it wouldnā€™t matter. Unfortunately, when your pricing model is based around individuals, you are incentivized to put the features individuals want behind a pay wall.

IMO the ability to see my previous API calls and look for changes in those responses is core functionality, but thatā€™s locked behind Brunoā€™s monthly subscription, with no perpetual license!

So you could take my opinion that Bruno has hostile pricing, or you could take the side of the creator:

Examples of hostile pricing that we shouldn’t do:

  • locking core functionalities
  • monthly recurring subscription

Ah never mind weā€™re on the same page. Bruno is making excellent strides in the capitalism any% category.

Yakety Yaak

So I continued looking around until I stumbled across Yaak.

Screenshot of Yaak

Yaak seems to get everything right. Excellent functionality, open source, and a pricing model that supports its open source development rather than conflicts with it.

As with any project, this could all change. However, thereā€™s one important aspect to Yaak that gives me far more hope in its future success: Itā€™s the brainchild of Greg Schier, the creator of Insomnia! He has already built one incredible API Client, and has seen first hand what an acquisition can lead to:

Greg on Twitter:

I’m finally internalizing the lesson that acquisitions are always terrible for the product. So long @GetInsomnia šŸ„²

Since this has somehow turned into a sales-pitch: Another interesting comparison is that Bruno is built on Electron, takes about twice the memory of Yaak, and for some reason, slowly climbs in memory usage with each request. Yaak is built on Tauri and seems to have consistently lower memory usage.

Bruno Memory

Bruno memory usage ~500mB

Yaak Memory

Yaak memory usage ~230mB

Memory usage captured from btop on a fresh startup and making the same API call.

Summary

There are a lot of API Clients out there. Bruno is actively selling its soul, Yaak has yet to do so. Iā€™d highly recommend you try Yaak.

P.S. I acknowledge this post makes me sound like a leech because I want my software to be good, and fully open source. Itā€™s easy to assume that means I’m against paying for software. I think Yaakā€™s pricing model fits the bill and I did pay for a year/perpetual fallback license to support Greg and his efforts, even though itā€™s very easy to build from source for free (as in beer).

#tech