Shared Devices

Body: 

If Haiku were to expand and generalise on the popular concept of file and printer sharing there exists the potential for sharing of arbitrary devices, both physical and virtual, over any network. Devices would appear no different from a user's view when compared with local devices.

Details

Provider

On connection of a shareable device the user's computer would first ensure the device is allowed to be shared and if so, who is allowed to access it. The device would be kept in a list of shared devices which are externally queryable.

Consumer

Automatic querying remote devices should allow for sensible and user definable parameters to ensure that it can efficiently obtain locally published devices without excess resource/time usage (where locally is context dependent, Eg, LAN, WAN, VPN, Favourite IPs, etc).

In order to use a remote device it would be internally mounted on the devfs under a uniquely named, per computer, folder. Entries would be populated under this directory in a similar fashion to local devices. Eg "/dev/[uniqueid]/camera/cam0". Thus the device would appear no different from local devices. Data directed at a remote devfs entry would be sent via network and handled remotely.

Potential schemes that have been suggested for the unique ids are listed below. There must however exist a method to translate whatever ID scheme has been chosen into a user understandable and referenceable format.

Name Advantages Disadvantages
IP Easily obtainable, scalable Volatile
MAC Easily obtainable, unique No inter-network capability
PGP Unique, secure Additional overhead/complexity

Drivers

When a device has been acquisitioned the client computer would be required to ensure that it had the appropriate driver's installed for use of the hardware. This could be accomplished via a driver server or a generic file server system.

Issues

  • Do local buses make assumptions regarding bandwidth, latency or quality of service? If so, does that impede the system?
  • How will security be handled?
  • Is there a way to exploit the potential emergence of a P2P network out of queryable shares?
  • What method should be used for publication? Should it be a single universal method, or multiple methods for different scenarios?
  • Should client polling (good for small networks) or server notification (larder networks) be used to indicate change state of a device?

Resources