4 years ago on this day, I made the very first commit to the Sniffnet GitHub repository and,
as is tradition, today I’d like to celebrate the project’s anniversary with a blog post.
Usually, the anniversary post is somewhat deep, reflective, and personal: over the past years I’ve talked about how being a maintainer changed my life,
how important it is to balance Sniffnet development with a full-time job, and how sustainable open source is crucial to ensure a project’s longevity.
I love discussing such topics because they pull the curtain back and show the human that’s behind the code, but this year it’ll be slightly different.
I think that delicate subjects must come out naturally without forcing them, so rather than repeating myself
with another tear-jerking essay, or letting AI prose fake sentiments in my place,
this time I’d like to take a more lighthearted route, sharing some fun facts and Sniffnet’s visual evolution over the years.
“The temptation to make a GUI is strong”
As many of you know, Sniffnet was originally a simple program that could only run from the command line to collect network traffic and print some rudimentary statistics.
At the time I was a student, and I had just taken a Rust course.
I don’t know why, it’s probably that the Rust language hit me differently or that I was getting into the magic world of networking,
but I felt like there was huge potential to make something way more complete and useful than a primitive terminal interface.
The fact is that on the 20th of October 2022, I wrote this message to the friend I worked with on the first version of Sniffnet CLI:
Translated from Italian, the message just says: “The temptation to make a GUI is strong”.
Attached to that message there was a short video showing a very early prototype of the graphical interface: a simple counter of the network packets being captured.
It was the first time I saw a window with Sniffnet’s name on it, and I’m only sharing the video publicly today.
I still remember the excitement I felt when I saw the window appear: in retrospect it was a small step, but at the time it felt like a huge leap.
In fact, initially I didn’t even know if it was possible to make a graphical interface in Rust at all.
After some research I found several frameworks that could help me with this, and ultimately I decided to go with Iced.
My first steps with Iced are still vivid, and I’d never have imagined that 4 years later Sniffnet would be prominently featured on their landing page as one of the most popular tools built with it.
From there things moved quickly, and just a month later, on the 21st of November 2022, I released the first graphical interface as version 1.0.
After all of this time, I was curious to look back at how the interface evolved, so I made a minimal widget that lets you travel through Sniffnet’s main pages and releases.
You can use the scrubber to see how the app has become more complete and polished over time.
The past 12 months
Let’s now shift to recent history.
The past year saw the release of a new major version, which finally brought the long-awaited process identification feature.
Implementing it was quite a challenge, but I can say it was worth it: version 1.5.0 has
been the most successful release of the project so far, with more than 100k downloads in the first two months after its launch.
In addition to 1.5.0, three minor releases were published to introduce more features such as remote notifications, BPF filtering, pausable packet captures, custom IP blacklist support, connection latency measurements, and signed installers for Windows (shoutout to SignPath for providing free code signing to Sniffnet).
This year brought the total number of downloads to 530k, with a daily average of 657 downloads that is considerably higher than the previous year’s 397 per day.
The GitHub repository has also gained 10k new stars, fewer than last year’s 14k, but still a very good result considering that the project is more mature and has been around for a while.
This growth places Sniffnet in the top 0.0002% of all GitHub public repositories (678th[↗] out of 395 million[↗]): something astonishing to even think about.
Along the way I met new contributors who helped package Sniffnet as an AppImage, fixed various bugs, and added four new languages (bringing the total to 26 different translations by native speakers).
Lately I’ve also had the pleasure of being contacted by recall.ai and CodeRabbit, two companies that started sponsoring Sniffnet with a recurring monthly donation.
Last but not least, the project also has a new domain and custom email addresses, as announced not long ago.
What’s next
If during the past couple of years I found the energy and motivation to keep working on Sniffnet until late at night,
it was largely thanks to the substantial support I received from the European Commission’s Next Generation Internet program.
Unfortunately, nothing lasts forever, and their funding is now coming to an end.
I’ll keep maintaining Sniffnet after the funding period, albeit probably not at the pace of the past months: in these cases long-term consistency beats speed and intensity, keeps burnout at bay, and leaves room to enjoy life as much as development.
The next major release will be version 1.6.0 and will finally make it possible to inspect network traffic from remote machines, firewalls, and routers.
You can already have a look at sniffnet-agent,
a new companion program that will soon allow you to capture traffic from headless devices and send it to Sniffnet for inspection.
Other exciting features are already in the pipeline, so make sure to check the complete set of planned items in the usual Roadmap.
Until the next blog post, I wish Sniffnet a happy birthday!

