As others have mentioned, the idea is to "freeze" the environment, such that if you start it a year from now, it is the same as it was then. A "thought exercise" then, on how to do this ...
I would:
- use VirtualBox (whether on Windows/Linux, doesn't matter)
- build, for example, a Windows VM with the current set of updates, and with all your desired software components
- freeze it, with a program like "Deep Freeze, by Faronics"; this would avoid any future updates to any of the Windows pieces (windows OS itself, your software components, etc) inside the VM.
- save the vm disk file into your catalog of years/projects
- additionally, use Macrium Reflect (free windows backup program) to create an image of the entire VM os and software, inside the vm, for a 2nd fallback.
At this point, nothing should change a year later, as Deep Freeze always sets it back to pristine start on reboot. It doesn't allow anything, even windows os updates, to take place. You could, with more effort, replace Deep Freeze with an imaging tool.
As further insurance for the host os that runs the vbox environment, as vbox might change over the years, use macrium (or any imaging tool of your choice) to capture the host os running the vbox environment as well.
You might also want to set aside a PC/Laptop from nearby years for the host os, or sort through vbox changes if you put a newer pc/laptop in place. Saving a pc from every 5 to 10 years ought to do it (complete mobo, cpu/ram, power supply, all internal drives ... don't need the entire pc shell).
Macrium is both a backup tool and an imaging tool, so before you think this is getting too circular, you can substitute any imaging tool, if you think another one has a better way of preserving file formats over the years. But, basically, if Macrium changes, you'll just restore each item in your catalog with the old macrium, image it with the new Macrium, and throw it back in the catalog.
I *think* I've covered all possible changes that might occur, at any point in the chain ... it is a thought exercise.
This process works for me when preserving ancient os's from decades past (dos, os/2, lan manager, netware, etc), and then pulling them out and running again for a bit. Can't yet see why it wouldn't work for this thread's premise as well.