DEV Community

Jan Küster 🔥
Jan Küster 🔥

Posted on

Wasted Open Source efforts 😮

Long time no see my friends! 👋

Today I got notified by GitHub stale bot that a PR of mine in the famous PyTorch repo got closed by stale bot. 🤖
Yes, by a bot; not by an author or repo owner but a bot.
You may argue that this is normal for huge projects like this one but by looking deeper into the PR this reveals to me how much wasted effort is out there in open source!

How it all began

In June 2025 I wanted to try a tool for one shot speech cloning.
The project was based on PyTorch and while installation via Docker is intended to be reproducible, in reality it is not.

At first, I cloned the repo and ran docker build:

docker build -t f5tts:v1 .
Enter fullscreen mode Exit fullscreen mode

This already took (as you might know from similar projects) ages to download and build. 😴

After the build was finally complete, I tried to run the project via

docker container run --rm -it --gpus=all --mount 'type=volume,source=f5-tts,target=/root/.cache/huggingface/hub/' -p 7860:7860 ghcr.io/swivid/f5-tts:main f5-tts_infer-gradio --host 0.0.0.0
Enter fullscreen mode Exit fullscreen mode

There, I got stuck with the following entirely confusing error message:

docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
Enter fullscreen mode Exit fullscreen mode

Thank you for nothing. Anyway, I searched the web for a good amount of time, until I finally found the solution. On Linux I need to manually install the Nvidia container toolkit if you want to use PyTorch with GPUs:

https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html

Well, this was neither described in the repo nor in the PyTorch repo.
Nowhere. Who would ever know this? Nobody, right!? This seemed perfect for a little pull request.

My Motivation for the PRs

I wasted time and got emotionally affected by this and I thought that others should have a better developer experience with this. Plus the effort for the PR is minimal.

This is living open source to me! I solved something and save time for all of us by making it available to the rest of the world. In turn you do the same for me and we benefit altogether.
What a nice little dreamworld I am living in.

Waking up from the dreamworld: the most unfriendly GitHub conversation I have had in years 🤬

Well, I thought it might be beneficial to everyone to add a line to the installation instructions to save everyone's time. The reponse was totally unexpected though. Read for yourself:

Docker installation is missing requirements for cuda support #1073

Checks

  • [x] This template is only for bug reports, usage problems go with 'Help Wanted'.
  • [x] I have thoroughly reviewed the project documentation but couldn't find information to solve my problem.
  • [x] I have searched for existing issues, including closed ones, and couldn't find a solution.
  • [x] I am using English to submit this issue to facilitate community communication.

Environment Details

The documentation should note, that the container will not run, if the nvidia docker toolkit is not installed and configured.

If you don't install the toolkit, you will get

docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
Enter fullscreen mode Exit fullscreen mode

I can open a PR and add it to the docs if you like.

Steps to Reproduce

  1. install docker (follow official docker installation guide)
  2. follow installation instruction for Docker setup, defined in Readme

✔️ Expected Behavior

Installation should be reproducible. When following the installation for Docker step by step, it should start without issues.

❌ Actual Behavior

docker container run --rm -it --gpus=all --mount 'type=volume,source=f5-tts,target=/root/.cache/huggingface/hub/' -p 7860:7860 ghcr.io/swivid/f5-tts:main f5-tts_infer-gradio --host 0.0.0.0
docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
Enter fullscreen mode Exit fullscreen mode

While this obviously their choice as owner, I was rather shocked by the total lack of empathy and aggressiveness against me as if I was a burden or something.

What would a newcomer think in such a situation? Honestly,I hope no newcomer would have to face such bullsh*t but I fear this way of communication is not an exception.

Anyway, the obvious outcome of this was to step up and make the PR directly to the where the issue was caused in the first place.

Going big: PR in the official PyTorch repo

I am no shy person when it comes to action so I opened the same PR on the PyTorch repo, willing to face any upcoming trouble and discussion that might come up.

docs: link to Nvidia Container Toolkit in README #155102

The Nvidia Container Toolkit is needed on Linux Distributions to properly run Docker images with --gpus flag.

The dependency is OS-level and cannot be pinned from within the container.

Otherwise containers will not run and provide and ambiguous error message

docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
Enter fullscreen mode Exit fullscreen mode

Accepting the PR was already blocked by CLA assistant, making me sign some bureaucratic documents online with a digital signature, complying to some legalese terms nobody understands (not even the PyTorch devs and maintainers) besides a few lawyers. 🤢
No worries, I didn't read as I was supposed to because I just wanted to open the PR.

Then it was waiting for the CI. I changed just a README so please no fails. Fortunately everything passed.

One day later a maintainer added the triaged label and requested reviews from other maintainers. Awesome, it looked like this passed initial triage and would not be rejected as "not important" as in the other repo beforehand.

But then: silence. Nothing. No reaction. No comment or review. After a month stale bot notified the PR getting marked stale and maintainers can remove the stale label.
I commented "not stale" but this had no effect: Two months after I opened the PR it got closed by stale bot. What a 💩

My personal thoughts

Fortunately the PR was just an additional line in a README but it was also a test - a test how contributions are honored and if people care on the small things that developers care about because they are the ones to fiddle with it.

It seems nobody cared about the efforts of ohers.

From this point I am really in doubt of whether I will open a PR to one of the huge repos again. It is much easier to create a gist and spread the word plus it saves me some annoying conversations.

Anyway, if you ever get into the issue on Linux, Docker and PyTorch telling you docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]]. then you now know to install the Nvidia Docker Toolkit.

Top comments (3)

Collapse
 
carlan_wray_40c3e377d7cc5 profile image
Carlan Wray

Your expression of the experience is very relatable. In situations like this I've had to take the perspective of the maintenance of that information over time.

While it is useful and accurate now, it is part of the greater ecosystem enabling all of these various uses of the Nvidia package, and subject to external changes in terminology and naming convention.

I've taken to writing a readme in my own github detailing the specifics primarily for my own future reference, but also for anyone else looking to accomplish the same thing. Then I'm taking responsibility for that maintenance of information and keeping the package documentation constrained to its own specifics.

And, yes, I put my detailed analysis of the process to change the main drive belt on a Bobcat MT55 Mini-skidsteer loader in my github the other day because the service manual, and available videos on YouTube are less than optimal. 🫣

Collapse
 
jankapunkt profile image
Jan Küster 🔥

As a maintainer myself I can totally relate on the potentially endless efforts to keep information up to date. However, I see three things here as critical:

  • reproducible installations of software (especially important in science)
  • low boundaries to make open source contributions
  • positive communication, especially when rejecting contributions

If we want more people to effectively contribute to open source then positive communication is a must.

I would have happily closed my PRs if I would have received a response like yours.
Just imagine how many first time contributors have had this experience...

Finally, I agree with your approach of "it's my duty now to step up and maintain that information myself" as a mature and grown up way to deal with this.

Collapse
 
carlan_wray_40c3e377d7cc5 profile image
Carlan Wray

For me the emotional side of this has traditionally been the most difficult, because expressions and words represent threat or safety based on our own experiences. I've learned over time to carefully manage how I interpret communication, both from the perspective of the current reality of the other individual, and my own past experiences.

As for barrier of entry? Talk to Galileo about that. 🫣😏