There are already existing solutions such as PlayOnLinux and Lutris to make Windows software available under Linux. They use Wine, a compatibility layer to translate Windows API calls into POSIX calls, and add a GUI for convenience to allow end users to install their software. They do so by maintaining recipes - short scripts, that automate the setup procedure for certain software.
1) Recipe + Ingredients = SUCCESS
When I had tested recipes on AppDB, PlayOnLinux and Lutris many were broken - mainly due to outdated resources and missing resource links. Also sometimes several recipes existed for one app making it hard to decide which one would lead to success. Current solutions offer no dedicated repositories for their resources. Hence, their recipes work for a while, but will fail as soon as the resource links of utilized dependencies get outdated, wasting effort unnecessarily by fixing existing recipes over and over again.
Dolmades handle recipes differently: they should be easy to find by providing their ingredients. And most importantly, once a recipe is working, it should not break. This will require a repository, where users can manage recipes, ingredients and cooked dolmades. This way dolmades could be archived, reproduced, shared or distributed, and will be working for a long time.
2) Easy Installation
Current solutions require a GUI which offer recipes to install the software locally. This installation process is often tedious and error-prone especially for outdated recipes. Dolmades can be downloaded and tested straightaway, no GUI is required. If they do work and you like them, install them permanently, if not, just delete the downloaded files.
3) No Dependencies
With current solutions it happened several times that I had to install system packages to make something work. In some cases the GUI required a lot of dependencies. Dolmades take care of their dependencies and will never require additional system packages.
4) Easy Sharing
Certain things must be taken care of in order to transfer a successfully installed app from your computer to your friends' and expect it to still work there. Due to the containerization this is practical for Dolmades while current solutions do not support this.
This is mainly for developers: The containerization really offers nice possibilities for the future such as running complex dolmaded Linux setups and Windows apps or even a mixture of both. It would be also possible to add support for debugging and bug reporting to help wine developers.
As of now there are basically three well-known solutions to run Windows software in Linux environments. Have a look in the following table how they compare to each other in terms of making Windows software available for users running mainly Linux environments:
for some solutions: Virtualization license
|Integration with the host system||N/A||host file system/hardware is isolated and (partially) passed through shared mount protocols/abstraction layers||seamless|
|Performance||native||reduced, especially for 3D GFX and file I/O||near native, also for 3D GFX|
|Requirements||separated installation||memory overhead, fixed resource allocations||many functionally complementary versions, many dependencies|
|Functionality of installed application||as good as it gets||nearly as good as it gets||depends on windows software and wine version / configuration|
|Effort maintaining many applications||as good as it gets||low effort to make apps work, but resource-hungry and often bad usability, system updates may break VMs||high effort to make apps work, high effort to not break apps due to system upgrades or newly installed apps|
|Effort maintaining one application||ridiculously high||still too high||justifiable if the application is important|
Now how do Dolmades compare to that?
But wait - aren't only a few apps supported yet?
Yes indeed. And there is still a high effort to install a particular app and make it work well in a dolmade. But as soon as it is done, a recipe specific to that app can be made and published so that other users just need to download the ready-to-use container.