To main content

jfmt and BetterBranch: unexpected reach

Published by Benjamin Marwell on

Small tools sometimes travel much further than you expect. jfmt and BetterBranch both did that for me. What matters here is not which repository they came from. It is that Java still makes good CLI tools, especially when they are compiled to native binaries and easy to pass around. People did not just repost a link. They packaged the tools, compared them with related projects, and added context of their own.

That is the bit I wanted to write down here: not the vanity metrics, but the fact that small tools can create their own little trail of packaging, sharing, and follow-up work. The nice part is that the community seems to appreciate that kind of Java CLI tool as well. That pattern shows up again with MCS by Maarten Mulders. It is a tiny Maven Central search client and another native GraalVM binary. That makes it feel less like a pile of separate hobby projects and more like one small Java CLI space that the community actually wants.

jfmt: somebody packaged it

One of the nicest signals for jfmt was that somebody packaged it for nixpkgs. That means somebody found it useful enough to carry it into a different ecosystem. That is a much stronger signal than a casual like.

jfmt was also shared on LinkedIn by Benedikt Ritter. It was also shared on LinkedIn by Stefano Fago. On Bluesky, my post got picked up by quite a few people, including Nikolai Parlog.

That told me something useful. People were not only interested in the code. They were interested in the problem, the packaging story, and the fact that a small Java tool could fit into more than one workflow.

BetterBranch: people started building on it

BetterBranch followed a similar path. Erik Thauvin shared it on Mastodon. Alina Yurenko shared it on LinkedIn.

But the best part: Ingo Kegel also fixed Windows support in PR #43. This is a big signal, as it proves that people are using it, and that they do use it on operating systems other than the one I personally use.

That kind of sharing is valuable because it reaches people who would not necessarily follow the same circles. It also shows that small workflow tools can resonate when they solve a concrete problem quickly and clearly. Seeing somebody fix Windows support was especially cool. That is the point where a tool stops being just mine and becomes something other people can build on.

My takeaway

BetterBranch is a small tool that solves a specific problem. Even though it did not fill an obvious gap, small and specialized tools are being shared, packaged, and improved by other people.

MCS: a tiny Maven Central search client

MCS by Maarten Mulders fits the same rough category. Its tagline says it well: Use Maven Central Repository Search from your command line! That is exactly the kind of tiny CLI utility I like. You can quickly look up dependency coordinates in Maven Central without switching to a browser first.

Like jfmt and BetterBranch, MCS is also a native GraalVM binary. Maybe that is a pattern worth paying attention to. These tools are small, fast to start, and easy to hand around. They do one thing and do not get in your way.

In fact, Maarten Mulder’s work inspired me to create jfmt and BetterBranch in the first place! My native-build.yml as well as early-access.yml GitHub workflows were inspired by his modifications to the jreleaser example workflows. Then, I modified it more for my needs, which turned out well, I think. 😊

My takeaway

MCS shows that a tiny Java CLI can be useful when it removes one browser trip from a developer’s day. It also served as my inspiration for both jfmt and BetterBranch.

I also like pointing at adjacent tools when they live in the same space but solve a different problem. better-branch creates branches from Jira issues. B-branch is a C# tool with a more polished TUI.

Those projects are not competitors to jfmt or BetterBranch. They are simply nearby ideas in the same rough neighbourhood. Mentioning them is my way of giving link love without pretending everything is one big rivalry. I do not want this to turn into a link dump.

What this says about tiny tools

Small tools get attention when they are easy to understand and obviously useful. A screenshot, a short explanation, and a clear problem statement often do more than a long feature list. If other people package the tool, share it, or compare it with neighbouring projects, that is probably the best kind of traction you can get. Java CLI tools still have a place if they are small, direct, and easy to run.

So this is mostly a thank-you note. It is also a reminder that a tiny utility can have a bigger life once other people start using it, packaging it, and talking about it in their own words.

Conclusion

This was a pleasant surprise. jfmt, BetterBranch, and MCS all show the same thing in different ways. Java can still do small command line tools very well, and people will notice when they are handy. That feels more useful than any chart or counter.

Thanks to everyone who shared a link, packaged the tools, or compared them with something nearby. That kind of feedback is what makes small side projects worth keeping alive.