From 10 day vacation project to 100k users: auto-cpufreq v3 story
By Adnan Hodzic
Summary
Topics Covered
- Success Lacks Failure Runbooks
- 10-Day Vacation Hack Scales to 100K Users
- Rigorous Reviews Balance Growth and Quality
- AI Chatbot Replaces Solo Maintainer
- Open Source Thrives Without Corporate Backing
Full Transcript
Hey everyone, Adnan here and today I want to share how the open source community and yes even AI helped shape
the journey to auto CPU uh 3.0 version release and something that went from 10day uhification project to having
100,000 users. Uh today in tech and in
100,000 users. Uh today in tech and in general in life we embrace failure and lessons we learn from it which is a good thing. Uh but we're focusing on failure
thing. Uh but we're focusing on failure aspects. so much that once the opposite
aspects. so much that once the opposite happens and you succeed, you don't know what to do anymore because there's not a lot of runbooks if your project uh ends
up uh being uh successful. And that's
exactly what uh happened uh to auto CPU frick.
So what started as a new year's uh vacation project six years ago is today an ultimate Linux performance and power optimizer with life of its own. uh with
for example 7,200 GitHub stars uh 116 uh contributors
and what I estimate to be around uh 100,000 users uh today and it all started with uh an idea I had for years
but never had time to work on it and then this vacation was coming up and my first kid was also supposed to be born in couple of months. And I thought if I
don't do this now, I'll never do it. It
will not be done. So I got to work and frantically coded day and night. And in
less than 10 days uh at end of my vacation, I actually released AutoCPU Freck. And as you can see here on after
Freck. And as you can see here on after the release idea immediately took off and uh got a great following on social media. It was very well covered on uh
media. It was very well covered on uh YouTube.
um yeah and various other news sites and uh it was even actually trending as number one on uh hacker news and uh even today it's great to see that autocpu
frea 3.0 0 release was featured on sites like XDA developers uh then also for example for next uh and
uh it's uh free and open-source uh software and even the even the auto CPU frack uh 3.0 know release post on Reddit
which was actually made by me was seen by over uh 75,000 people and uh I was even uh trending as number one on Linux
subreddit and how to get to this point is uh yeah can just be based on hype because from the very first project
release announcement users were suggesting requesting numerous features and fixes before first contribut computer showed up in this process. I
put hundreds of hours of my own free time to work on development and what was suggested as the simple Python script was immediately turning into a real
Linux application and tool that was used uh by many. But I would also like to clarify why auto CPU frack and why you might find it useful. And I'll probably
be biased when I say this, but even after all these years and all after the initial release, I still find auto CPU frack to be the best tool for the purpose it was built for originally,
which is automatic CPU speed and power optimizer for Linux. So what I wrote as part of this blog post is still valid today as without uh for without it for
example watching a YouTube in 4K will still be a choppy experience with high CPU temperatures I'll get double of battery life that I get with known power
profiles without having to manually switch between performance and power save for example for uh new users and as a reminder to existing ones uh after
AutoCPU frack is uh installed using recommend installation method which is using autocpu frack installer uh where you basically just need to copy paste these two lines into a terminal and yeah
after in installation is complete uh yeah you just simply need to uh you'll have autocpu frack as a binary and then for example if you run uh autop-help
you can see all of the available uh options that you have at your disposal and uh Yeah, please also note that for example uh you can also see what each
one of these flags is used for in the detail as part of the modes and options in the readme file. So it will go explain what uh yeah what each uh what
you can use it for. And when it comes to uh the the GUI experience, you just basically uh need to find auto CPU frack uh in list of your installed uh
applications and you can simply follow uh oncreen instructions for rest uh and what you need to do uh you can install the demon you can uh use monitor and so
on. But this is what it currently looks
on. But this is what it currently looks like when it's running in uh in the guey graphical user interface. Please note uh while auto CPU frack uh will make
decisions automatically based on various factors. So for example well some of
factors. So for example well some of these factors here. So if it detects needs more performance, there's a very high CPU usage, it will change a govern
governor to performance or will enable turbo even if it's on battery uh running on battery. It all same thing as if
on battery. It all same thing as if you're running on power save uh it will do everything it needs to do to give you maximum power uh battery life. And
besides that, you also have numerous configuration options if you would like to configure things to your own liking even yourself instead of it deciding
everything for you uh automatically. So
for example uh as part of the readme there's a configur configuring autop.
So for example you have an option like to force a governor. uh you can also deal with this uh with a with a CLI and uh here in the in the in the GUI for
example. So maybe you want it to run on
example. So maybe you want it to run on performance all the time. Uh and uh you also have an option to uh auto CPU
config file. So here you can configure
config file. So here you can configure how auto CPU frack work uh works on battery uh or while it's plugged in. And
you can even configure it uh that it never goes between uh below certain CPU threshold. And for example, I can show
threshold. And for example, I can show how I did that here as part of the config file. So this is uh the the
config file. So this is uh the the behavior on the B on the when it's plugged in to a charger. And for
example, I have an option here to uh yeah. Oh, I deleted it. To never go
yeah. Oh, I deleted it. To never go below 2 gigahertz for example. And uh in case you're using a config file, if uh
this uh path is not there, then basically if I run the autocpu stats and and here I can see that it's using
settings defined in autocp uh config file and same as with a GUI so that you know that all the decisions are
made by you and uh how you configured it uh to work and uh actually described uh like about all of this, how it works as
part of the original autocpu effect demo and showcase if you're uh interested in uh really seeing more uh more details how it all works. I immediately knew
that I won't be able to do uh all of this myself and being involved in open source since an early age I started accepting uh external contributions and
I was uh actively encouraging people to make contributions and uh themselves and credit giving them credit for their work as part of the each release. So you see
here uh like uh made numerous other changes before releases even started being a thing. But for example, you see here first the contributors are popping
up and then giving them credits and uh yeah see two uh and now for example with the rel latest release from just having
a one or two contributors basically it's uh yeah it's a lot lot more and uh yeah which eventually basically even grew
into a whole network and community of contributors and I'm very thankful to all 116 of them individuals who
contributed to this project as without them this project would not be where it is today. And uh which can only happen
is today. And uh which can only happen also with open source as besides few donations none of us are getting paid for any of this. And everyone is doing
this in their own free time next to their daily jobs and lives and driven by desire to solve a real problem learn something along the way and build a tool
that actually makes uh Linux a better experience uh for everyone. And with the number of contributors growing, it's also important to uh have a rigorous uh
code testing and review process and not to just uh merge everything.
So in this process there are actually uh numerous pull requests that were submitted and were never merged as for example they simply lacked on quality or
didn't fit the overall vision as each time I decided to close one eye or or miss something during the review process uh yeah and merge something that
shouldn't be merged uh yeah it had consequences that were addressed for months later on and of course uh yeah you don't also want to chase
contributors away. So it's a very
contributors away. So it's a very delicate balancing act of what to merge and what to mer not to merge.
My focus also shifted as the project got bigger and development was also superseded by numerous support requests
and uh just triage and answering various questions on what's possible and available. We're simply answering
available. We're simply answering questions by linking it to a piece of documentation or something that was mentioned in uh releases. And for
example, uh yeah, this took enormous amount of my time as being a person who knew the most about the project to turn me into the answering machine. And
that's an interesting paradox because while people are interested in making co coach contributions and developing new features and improvements, very few are
also interested in actively supporting the feature they developed. Of course,
kudos to the outliers. uh and that's why as part of each pull request I also made it a standard procedure uh uh and request actually to add
documentation for develop features and improvements which helped drastically and long term and with the rise of artificial intelligence through the tech
landscape and looking at uh some uh possible solutions and uh AI applications I was actually inspired to develop uh a dedicated auto CPU you
frack geni chatpod for support purposes and a solution to uh all above mentioned uh challenges and hence how I replaced
myself with a genai chatbot using Gemini project was born. I also uh made uh besides this uh blog post which explains everything, I also made a YouTube uh
video uh and where I talk about the whole project and I even made a GitHub repo with all of the code and instructions and data you needed to get
basically started and uh everything revolves uh around basically creating uh rag uh retrieval augments generation
based on numerous autop Frack data sources uh which have all necessary data uh so for these YouTube videos to GitHub
issues, Reddit posts and etc. And the creating genai chatbot uh with Verdict AI conversational agents in Google cloud
provides user with necessary answers to the questions and uh support requests.
chat is located on the same blog post and uh page and as soon as you open it it will pop up or if I click here will show up and here for example I asked it
a question and it gave me an answer and in the end the project turned out to be an amazing success. It was featured on official Google blog uh as how
developers have been using Gemini and I even gave a talk on the same topic uh at a Google office in Amsterdam as a part
of a Google DevCloud uh events or conference. And then uh riding the waves
conference. And then uh riding the waves of that success, I created from zero to AI hero, how to build a Genaii chatbot
with Gemini and Vert.exi XI agent builder, a blog post and uh yeah very extensive blog post which also links to
a 17 scene YouTube uh video YouTube playlist along with autop genai chatbot GitHub repo with all of the information.
Uh so people with yeah without any experience with AI or AI agents or chat bots or Google cloud could follow along
and by end of this YouTube playlist can be uh are able to create the same solutions for their apps platforms or any other uh use cases. And I'll also
add links to all of these in the video description you're in case you're interested in check checking them out.
And uh yeah, since autocpu frei support agent was created when creating uh an issue uh so for example this is what it looks like when you're creating an
issue. Uh I uh users are actually
issue. Uh I uh users are actually encouraged to uh use the chatbot to see if their answers or questions were
already answered or issue resolved. A
number of newly created issues and questions has drastically decreased uh while actually auto CPU users continue
uh to increase uh through uh this period which uh means that uh auto CPU fa chatbot is uh definitely doing uh its job and people are getting their answers
instead of having to create issues create u questions. So let's talk about what's new in auto CPU frack v3 since last time uh I made a video like this
was back when uh version 2.0 was released and since then a lot uh has uh changed uh and uh since each release uh
has too many fixes and improvement just to name few and features I'll only mention some of them and uh so for example uh in 2.0 know uh yeah you you
get a notification if there's a new update and you're using GUI uh then we also moved to poor tree for example as
the backend and uh yeah moving on with 22 yeah this was a big one adding uh support for uh energy performance
preference EP adding battery charge threshold I was uh pretty happy about this one because this feature was added way before I was added for example to
major products and uh desktop environments like uh Gnome uh 2.3 yeah rework config and reload uh config
on file changes and creation I was pretty happy about this one so for example uh as soon as you uh now make changes to the config file it will uh
changes will be applied you didn't have to like reset uh auto CPU your fra systemd service or uh re reboot your
computer or something like that. Uh then
for 2.4 4 was one of the biggest releases uh and uh it added for example setting per uh profile uh uh platform
profile and uh also added uh stuff uh for like for example other uh init systems if you're using anything uh
that's not systemd and then uh 2.5 also had uh some uh nice changes adding uh EPB energy performance device
setting. Uh and uh yeah, finally we also
setting. Uh and uh yeah, finally we also had 2.6 and uh yeah, this is an interesting one.
For example, it added Bluetooth service uh to be uh uh yeah, so for example, here you now it's a flag if you wanted
on and off because before as soon as uh auto CPU framen was installed, it would basically uh disable uh Bluetooth for
you. So this is a nice uh yeah it gives
you. So this is a nice uh yeah it gives you more control and uh yeah after that we have the big 3.0 uh which allows uh
yeah overriding the CPU turbo settings via CLI and GUI. I think that's a nice feature and it also allows user to specify battery uh in config because uh
various people have different uh uh batteries uh settings or even have dual batteries. So now they can uh yeah
batteries. So now they can uh yeah detect these uh and uh another cool thing that happened because uh this release happened only a week ago and
there's already two new contributors and for example monitoring mode was uh so I already drafted a 3.1 release uh and for example now there's monitoring mode and
the GUI and all of the some of the uh information uh that was available in CLI and statistics were not reflected in GUI
and Now that's also the case and uh yeah and yeah another thing that uh that uh wasn't listed anywhere but happened
right after the 2 release was that uh yeah creation of uh yeah auto CPU effect discord community. So if you have any
discord community. So if you have any questions there is off topic general and uh support uh yeah feel free to join and
as always uh yes yeah we're looking for co-developers and uh contributors uh and co-maintainers in case you're
interested in shaping uh yeah the future of this uh project feel free to uh check it out. In closing, this has been an
it out. In closing, this has been an incredible uh journey from starting this project as a solo developer with zero expectations to now being a tech lead or
uh release manager or whatever I am for this project anymore. Uh for a global project now with so many users has been an incredible uh experience and unique
experience to say the least. As for
what's next, the project has truly taken on a life of its own. So I'll just continue going with its uh flow. I've
been also thinking about a lot about further uh AI integration. I keep
thinking for example how great it would be for to uh integrated uh with something like Gemini CLI. So um yeah,
this way you would be moving away from the preset logic and allowing this system to actually reason about power and performance decisions uh or help
users troubleshoot an issue through natural language. And this idea is still
natural language. And this idea is still forming but uh it could be an interesting uh direction uh to uh to
explore. And uh in the end today I hear
explore. And uh in the end today I hear also a lot of folks saying something like open-source is dead and that's because most of the big projects are
sponsored by big companies or and this also means that pretty much these projects are then run by these same companies and while I would uh love to
see some corporate sponsorship for this project especially because I believe auto CPU frack could significantly uh aid uh various companies sustain
ustainability efforts by reducing power power consumption in data centers uh if run on service of course and this
project proves that sponsorship isn't a requirement for success and this project is also a testament uh to what can be achieved when people share the same
vision as you. It proves that open source doesn't need a corporate sponsorship to be successful and it's a perfect example uh of how powerful
open-source software and its community can be. So if you have an idea of your
can be. So if you have an idea of your own, I would just say uh go for it and open source it of course. Until next
time.
Loading video analysis...