Here's a random thought. First, here's some less random back-story. I have a Vista laptop (work), a Mac Mini and an Ubuntu desktop. The Vista laptop dual-boots into Ubuntu via Wubi as well. I use these things for different purposes, so while it might seem like a glut it actually fits into my usage patterns pretty well.
But there's this problem of downloading or creating content on any one of the given machines and then using it on another. Starting with a simple case, I can easily download a video on Vista, boot in to Ubuntu on the laptop and watch the video. I can't easily go the other way around and watch content in the Ubuntu area via Vista.
Another aspect of this that has been annoying me of late is working with Google App Engine. Their operating model has you download the SDK, develop an app locally and submit it to the service. But, you can't download it from the service so if you want to develop from multiple locations then you need to either manually move files or introduce yet another level of complexity by working in some user-driven approach to source control.
Now, there are a lot of strategies for solving this problem:
Use an external drive with some mutually acceptable file system. Move it around as needed.
Use network-attached storage with some mutually acceptable file system.
Replicate some types or locations of data across computers (using something like HP Upline or a custom-developed synch script).
I'm sure this is not an exhaustive list. But all of these have their own unique problems in addition to having a serious core problem: they all require a significant amount of extra work and/or expense by the user. Meaning, they just won't happen in most cases. Buying drives and storage, using cloud data synch services, all of these things are far from seamless and have tech or accessibility barriers that make them unattractive.
What would fit the bill? At least for the dual-boot laptop problem, the major operating systems (either natively or via some magical plugin) could be designed to cleanly separate user content from OS files such that OS files are sequestered where they would not be mixed with user files. User files would be generically accessible in any of the local OS environments in one representation.
That doesn't solve the multi-machine synch problem, but it does make that less complex. Programmers would have new work to do as they would have to, when generating something like a preference file, determine whether the file in question should be shared or not. And the sequestration wouldn't be by "putting things" (logically) in /OS versus /User or something, because that would be hard to enforce. It would have to actually classify the content differently as well.
I don't have time to flesh this out at the moment and I also don't feel like my approach is going anywhere, intellectually. It's a good, hard problem to solve and I don't think the answer will ever be "Only use one OS and one machine." It's not a problem that affects a vast majority of people, but it's a headache for us legitimately multi-platforming nerds.
Incidentally, I wonder if this is the problem that Windows Live Mesh plans to solve. I've tried reading some of their PR and it comes across as new age nonsense. I've tried to watch some videos I downloaded regarding Mesh, but I can't find them. Just kidding. They were just too boring.
In the short term, what are you guys doing with Google App Engine to work across machines? In this instance, I really like the
Heroku approach better.