potato face
CryingPotato

Too Many Copycats

#rust

I was recently working on a project called Autocommit as a toy playground to learn more about cargo-dist, Rust and the release process for a binary through Homebrew. Autocommit will automatically commit changes to your project at a configured frequency using GPT-3.5 to generate commit messages. I built this out as an exploration into the world of Rust CLI apps, not imagining that it would be particularly useful. For starters, committing to master is probably better done at semantic boundaries (i.e. built a fully functioning feature) rather than every X minutes.

Once I finished cleaning up my implementation a couple days ago, I was wondering how much additional time I should invest in making the project more useful and integrated into various workflows (VSCode, pre-commit hooks, GitHub CLI wrappers etc.). I remembered seeing a Tweet about GitoCommito (which is a great name) that does something similar but as a VSCode extension. Digging around that project, I saw it received moderate attention on GitHub (around 9 stars) which made me think that there was space for someone else to release a more well-rounded solution.

Further searching on Google with some keywords (I can’t remember what keywords) didn’t result in too much success, so I was getting ready to plan out next steps for this project when I noticed a curious section on Autocommit’s Github:

Image

Wow! Was someone using autocommit already? How’d they find it? I never really publicized it super widely, and the use cases and output were questionable enough that I was surprised that someone was depending on autocommit in their own Rust project. Sabry’s project was just another project in the same space that was also named autocommit, and GitHub incorrectly linked the two as dependencies! His project was far more polished and useful than mine, but didn’t really seem to receive too much love on Github yet 💔.

If there were two clones of this super simple idea I had, there had to be more? A long long rabbit hole of Google searching with various keywords finally led me to five separate projects that do the exact same thing in slightly different contexts, and with vastly different levels of popularity. What was shocking to me was how difficult it was to find these projects, despite some of them having a ton of relevant keywords on their Github pages, and one even being named auto-commit.

I was soon interested in the relative popularity of each of these packages and trying to understand why some performed better than others in the public eye. Was it a first-mover advantage? Does it have something to do with who the package author is? Well, here’s the world’s first (and probably only) taxonomy of projects that let you automatically generate commit messages:

The last 3 don’t have anything super notable, they were all released more recently and are all by people with more limited followings. The outputs here are hardly unexpected, more popular personas result in roughly more engagement - although OpenCommit is still definitely a mystery that I’ll try to get to the bottom off.

Anyway - I think it’s fascinating that 6 different people made slightly different versions of the exact same thing at varying times, to varying degrees of success. The more fascinating thing to me though is how hard it was to discover these projects, maybe search really is dead.