Peer-to-Peer Networking on Mobile
Peer-to-Peer (P2P) networking has become increasingly ubiquitous in today’s panoply of technology buzzwords. From the classic BitTorrent protocol, to modern cryptocurrencies such as Bitcoin; we are beginning to see a resurgence in the popularity of P2P technologies and I believe that this is being fuelled by a need to communicate and exchange information at a faster rate and perhaps more naturally using our mobile devices.
Currently we can observe numerous scenarios where P2P technology is attempting to a solve a communication-based ‘problem’, here is a limited list of some of the major implementations aimed at regular consumers:
Sending files, images and videos quickly, with zero prior configuration, to your nearby peers. Apple’s solution is AirDrop; an integrated file transfer tool, working on both OS X and iOS, within Finder or at the app level on iOS. Since iOS8 and Yosemite, it now also works between these two platforms. AirDrop allows users to send files to a nearby machine or mobile device without any need for worrying about connecting to the same network, knowing email addresses or pairing machines, or even having a network connection. This lack of prior configuration and simplicity is what makes AirDrop so alluring and rapid to use.
Contacting other people (or groups of people) within your own vicinity, when a network connection is either unavailable or an unsuitable medium for transmitting data. The primary example being the mobile application FireChat - a P2P iOS application allowing its users to create chatrooms that utilise ‘mesh networking’ to exchange messages through each of the network’s peers using ad-hoc WiFi or Bluetooth connections. FireChat is currently averaging 2.5 stars out of 5 on the App Store; arguably quite a poor score. Is this the curse of being first to market with an innovative idea or has it just been inadequately executed? Rather than the medium of communication being to blame I feel that the approach taken by the developers is actually at fault for its negative public reception. Do people want ephemeral chatrooms overflowing with information in a crowded city or do they want ephemeral one-to-one conversations with designated purpose? FireChat doesn’t seem to know who or what it is currently and this is reflected by their users reviews.
As stated, this is a tiny example of how modern P2P technology is all around us, perhaps even without many users realising it. We have moved far beyond the original intentions of BitTorrent and basic peer-based file sharing and it is slowly becoming more integrated in our own personal technology toolbox utilised in our day-to-day lives.
Currently native mobile applications are occupying a huge share of software development efforts globally, across multiple platforms, so it would follow that P2P software is now being rolled out by third-party developers. As outlined above, we can observe this increased interest in P2P technologies, both by developers and technology providers. For example, in the past 18 months Apple have released their own framework to enable iOS apps to support and utilise P2P networks. FireChat, mentioned previously, has been developed natively using this framework from Apple. MCMultipeerConnectivity was released for iOS7 in 2013 at WWDC.
The Multipeer Connectivity framework provides support for discovering services provided by nearby iOS devices using infrastructure Wi-Fi networks, peer-to-peer Wi-Fi, and Bluetooth personal area networks and subsequently communicating with those services by sending message-based data, streaming data, and resources (such as files).
For me, this framework release was an exciting one; finally a high-level abstraction and implementation of P2P networking for iOS devices existed. MCMultipeerConnectivity is a simple, albeit limiting, framework for a developer to connect multiple iOS devices through WiFi and/or Bluetooth and exchange data. These peer networks can be chained and create a ‘mesh network’. A key selling point of this framework is that the underlying mechanism for how the peer-to-peer network is implemented is completely abstracted away from the developer. The developer deals solely with the abstract concept of peers and invitations and iOS handles the underlying Bluetooth or Wi-Fi communication.
Unfortunately there is one main limiting factor that Apple are yet to address - the framework is unable to work in the background on a device, any existing connections are killed when an app moves to the background. In my opinion, this severely limits the use-cases where this kind of app would be useful in solving certain proximity related problems. Perhaps this limitation is preventing the adoption of P2P as a alternative medium for exchanging data, and also putting off developers from experimenting and innovating with the technology - FireChat was well received by the technology media as an innovator, it was covered extensively by multiple outlets as an ephemeral, to-the-wire, real-time chatroom, yet the buzz surrounding it has since faded into insignificance.
Another limitation in P2P mobile communication is a lack of support from the main vendors for a cross-platform solution. Multipeer Connectivity does not officially support any sort of communication with Android and iOS does not support the Wi-Fi Direct standard that Android uses for P2P communication. Ostensibly some apps have overcome this but have not publicly disclosed their mechanism for doing so, but it is likely to be based around Bluetooth LE technology, the only common ground between the platforms.
I personally believe that P2P technology will have a profound impact on how we communicate, exchange and consume data as time progresses; however big hitters like Apple and Google need to start supporting it in their SDKs at a higher level to ensure that app developers have the tools at their disposal. For me, due to a cacophony of procrastination, perfectionism and sheer disappointment in Apple’s framework, I personally have still yet to release a mobile application utilising peer-to-peer networking.