I see 3 potential solutions
Dedicated Home Machine
Solution 1 is for me to acquire a dedicated machine and set it up in my house, leaving it online 24/7. CI on github actions would trigger a build, which would run WATS on the tower
Pros:
- CI will run faster. Every time a build happens, there will be no need to install things like VirtualBox, apt packages, XFCE, VNC, etc.
- No long term dependence on cloud providers.
- Quicker iteration and debugging. No need to spin up a cloud server every time something needs troubleshooting.
- More realistic. Whonix users by and large are using the operating system on laptops and desktops.
Cons:
- “Linus doesn’t scale”…if I have a tower machine in my house, what happens if I get in a car wreck and die? What happens if I quit being able to maintain or I am displaced from my housing? I will build things in a way where it can easily be spun up by someone else (documentation, automation, etc). But there is no guarantee that someone will be willing and available to do it.
- I would have to buy a dedicated tower machine…500ish usd?
- I will have to set it up where that machine can be SSH’d to from the open internet. This is not a huge deal, but a bit of a security concern putting it on my home network…perhaps I setup a VPN and run it on that? But this adds additional complexity and networking is certainly not my area of expertise.
- My ladyfriend will not be super excited about another computer in the house, but she can get over it lol
Cloud based machine with GPU
Some of the larger cloud providers offer servers with GPU. Switching the pipeline to build with a cloud server that has a GPU could be a solution. AWS EC2 G4 seems like it would work.
Pros:
- AWS isn’t going anywhere if I die, give up, or become homeless. They will likely just consume the whole world as we spiral further and further in to dystopia. No downtime if something happens to me. Business as usual
- On demand and reliable. It can spin up or down at a moments notice, with no worries about networking, snowstorms, or hardware failure on our end.
- No security risk of opening up a CI pipeline to my home network.
Cons:
- AWS is AWS. It is expensive, no privacy, project funds supporting amazon, etc.
- There are unknowns, perhaps more complicated configurations, and additional overhead programmatically provisioning resources. I could use terraform for this no problemo, but it still adds a bit of complexity. That said, I am comfortable taking on this complexity
- If Whonix scaled in a way where lots of people were pushing to this, it would become more expensive. In the short term, it is less expensive than buying a dedicated computer to run at my house.
Forgo GUI testing
I do not like this option, especially because I spent so much time trying to get WATS running on a cloud server. It finally runs, and this GPU curveball occurs.
Pros:
- Frees me up to work on other projects (Whonix-Native or whatever else)
- CI builds still in place. CLI testing is possible, and additional build testing is no problem…we could test KVM builds, VirtualBox, Whonix-CLI, Whonix-XFCE…everything except automated clicking through the operating system
Cons:
- Unable to catch GUI bugs without manually testing
- It will hurt my ego a good bit (non-consequential to the project)
Thoughts
I honestly am torn between all three options. I would love some input and guidance @Patrick or anyone else who might be reading this (long shot). Which direction do you think we should go?