my understanding of qubes and how it’s supposed to be used leads me to believe that there are basically 4 ways to install software on qubes, and the answer to which one to use is inevitably: “it depends.”
- Install the software in the base template vm.
in general, just don’t do this.
- Install additional software in specific AppVMs
generally, don’t do this either. unless you do funny business it won’t persist through reboots.
- StandaloneVMs for specific needs
dedicate a whole vm to the software or specific set of software you need. gives you some isolation from the rest of your system but we’re not even really doing qubes things here yet. it’s just a vm. you will have to manage it’s updates separately. unlike an appvm you or the internet can wreak havoc on the os and you are done.
- Custom TemplateVMs for different software configurations, with AppVMs based on the custom templates
THIS. this is how qubes should be used. clone the base template, install the software packages you need, then create AppVMs based on the custom template. the custom template is protected by using app vms, you have centralized updating through the custom template, everything is great.
ok, so?
in actual use what i find is that #4 falls apart really quickly. lets say that i need signal messenger. i hypothetically use it for work, for personal messaging, and a public account that i can share online. perfect, clone fedora base template, install signal into the new cloned template, and then create a personal, work, and public qubes all based off the custom template right? right. too easy.
but wait. for work i need zoom messenger. for personal and public i also use the matrix client element. maybe i need chrome for work and brave browser for personal use.
so what do you do here? of course it depends lol.
you could just create one cloned custom template with zoom, signal, element, brave, and chrome all installed or , create 3 standalone vms for each use case or create 3 copies of the base fedora template. install signal, zoom, and chrome in the work template, signal, element, and brave in the personal template, and signal, element in the public template.
whatever the hypothetical software packages are doesn’t really matter, the point is that typically you will have multiple sets of software that you need for different use cases, in my hypothetical example we now have 4 full copies of fedora, 3 of which with just a couple pieces of extra software installed. this seems silly to me, but 2tb m.2 drives are really cheap now so whatever.
What is your point?
I don’t know everything but i’m pretty sure qubes os is doing it wrong.
how should qubes do it?
it’s obvious: tesseracts.
qubes isn’t complex enough. i think we need an intermediary layer. here is my untechnical proposal of how it should work:
Proposed Three-Layer Approach
- Unmodified Base TemplateVM (Layer 1): Contains only the core operating system, without any additional applications.
- Software TemplateVMs (Layer 2): Overlay additional applications on top of the base TemplateVM. Each Layer 2 TemplateVM could be tailored for specific application sets.
- AppVMs (Layer 3): Used for daily activities, storing personal settings and data, and based on the Layer 2 TemplateVMs.
Comparison
- Resource Efficiency:
- Current: Requires cloning the entire base TemplateVM for each new set of applications, consuming more disk space.
- Proposed: Potentially more disk space efficient as Layer 2 TemplateVMs only store the additional applications, not the entire OS.
- Complexity and Maintenance:
- Current: Simpler in structure but can be cumbersome when managing multiple application sets across different VMs.
- Proposed: Adds a layer of complexity in managing the relationships between layers, but could simplify application management and updates.
- Flexibility and Customization:
- Current: Limited to the applications installed in the base TemplateVMs. Customization mainly occurs within AppVMs.
- Proposed: Offers greater flexibility in managing different sets of applications, allowing for more tailored environments.
- Security and Compartmentalization:
- Both approaches maintain Qubes OS’s core principle of security through compartmentalization. The proposed method might offer more granularity in managing application-specific risks.
- Implementation and Compatibility:
- Current: Straightforward implementation aligning with Qubes OS’s existing architecture.
- Proposed: Would require significant architectural changes in Qubes OS to support layering, potentially impacting compatibility and stability.
Conclusion
The proposed three-layer system for Qubes OS, with its distinct structure for managing the operating system, applications, and user environments, offers several potential advantages beyond improved disk space efficiency:
-
Enhanced Flexibility in Application Management:
- Allows for more tailored Software TemplateVMs to cater to specific sets of applications or use cases.
- Easier to create and manage different application environments without affecting the base OS.
-
Streamlined Updates and Maintenance:
- Centralized updates for applications within their respective Layer 2 TemplateVMs, without the need to update the entire base OS.
- Simplifies the process of updating and maintaining applications across various VMs.
-
Improved Scalability:
- Facilitates the addition of new applications or sets of applications without needing to modify the base OS or create multiple full copies of the TemplateVM.
- Better supports growing or changing software needs.
-
Reduced Redundancy:
- Minimizes duplication of the base operating system across multiple TemplateVMs, leading to a more efficient use of disk space.
- Each additional TemplateVM only adds the unique applications, not the entire OS stack.
-
Greater Customization for Users:
- Users can more easily customize their Qubes OS environment to their specific workflow or security needs.
- Promotes a more user-friendly approach to managing diverse application requirements.
-
Enhanced Security Through Isolation:
- By segregating applications into different Layer 2 TemplateVMs, there’s potential for even finer-grained security control.
- If one set of applications is compromised, it doesn’t necessarily affect other sets in different TemplateVMs.
-
Potentially Easier Backup and Recovery:
- Backing up and restoring specific sets of applications or configurations could be more straightforward, as they are more modular.
-
Opportunities for Advanced Configurations:
- Could allow for advanced setups like having different sets of applications for different security levels or purposes.
- Opens up possibilities for integrating more complex software ecosystems within Qubes OS.
Considerations
-
someone would have to code the significant architectural changes in Qubes OS.
-
i really truly don’t know what i’m talking about and there are probably really good reasons i haven’t thought of why it isn’t done this way.