"Sharing" (of applications, data, peripherals, and capabilities like network storage) to be a first-level primitive provided by the system and all applications ought to be designed to work with it.
Consider this: we're all connected via networks and bluetooth. So why can't I, in a simple way, let your mouse control my cursor? Or send just part of my screen to part of your screen on the OS level? Or have a photo library on my NAS that smartly caches things I look at often on my iPhone, syncing changes back when I edit a photo? Or share a vim session such that my mouse and keyboard follow my vimrc and yours follow yours? Why do these things have to be built in hacky ways, over and over, specific to individual applications rather than built as reusable building-blocks?
We've gone to so much trouble to bolt sharing on to "personal" computers, when that whole idea is flawed. Engelbart's goal was to create a fundamentally networked system where the combined abilities of everyone would exceed the mere sum of their capacity.
If Engelbart's vision were alive, we wouldn't be excited that we have Skype and screenhero. We'd ask, now that we have these things, how can we build software that uses them to get better outcomes? A medical tool the lets two doctors interact over a patient's EMR and rotate CAT scans together in a way that increases the odds that they get the right diagnosis? A pair programming method that finds more bugs, and gets better designs, more than just one person looking over another's shoulder? A spreadsheet that lets two business founders argue about their core assumptions and business model collaboratively?
Read about the early history of computing to see examples of this. One that comes to mind is the timesharing systems in the early MIT AI lab, where there were no security systems. RMS talks about copying bits of code and configuration that he found in his professors' private folders, and the way that people would snoop on each other and build complex systems out of these shared parts.