Estimated reading time:
The last day of the Open Source Systems conference was dedicated to two workshops – one on free / libre and open source software (FLOSS) in education, and the other to the same in the mobile sector – denoted ‘mFOSS’.
Led by Tony Wasserman, a professor at the Silicon Valley campus of Carnegie Mellon University, the goal of the workshop was the creation of a research agenda for open source software in the mobile environment. He set the scene by illustrating how the number of mobile applications had grown from zero to almost a million in just a few years, and placing this in the context of cloud computing; the code used to write the application itself may be open source, the platform it’s targeted at may (or may not be open source), the storage may be open source and the development tools used may (or may not be) open source.
The workshop raised several key discussion points.
Where are the open source mobile apps?
The participants discussed why we are not seeing more mobile applications released under open source licenses. This included barriers such as difficulty with the current dominant mobile app stores – Apple’s iTunes platform and the Google Play store – with open source licensed applications being disallowed with Apple. This gave rise to discussion on whether there would be the rise of a ‘SourceForge’ or ‘GitHub’ style of mobile application store geared toward open source apps. It was also noted that many apps were hosted using open source resources – whether it be storage, platform or even development tools – but they themselves as end products were not open source.
What makes mobile different?
Discussion was also centred around differentiating mobile application development from traditional application development – and a long list was generated;
- In mobile applications, there are many hardware and software platforms to cater for, and the users of them expect a continuous or familiar experience.
- From a user interface perspective, there are many form factors to cater for.
- There are many development platforms and languages to choose from when developing, and although there are some dominant ones, the market is essentially in a state of flux.
- Traditional applications are not required to be context aware – and mobile applications must effectively sense and use context through sensors such as accelerometer, touch and swiping, GPS and location based services, cameras and voice input.
- Applications are much more distributed – the hosting may be in one country, the storage in another and users in several other countries
- This leads to a related issue of the complexity of testing mobile applications – with different operators and different gateways in different countries – essentially the number of intermediaries between the device and the internet is greater.
- Internet connectivity on mobile devices is not continuous – and mobile applications need to be able to gracefully handle loss of connectivity. A related issue is the availability of 3G and LTE/4G connections in some communities – particularly remote communities – where data services are not available all the time. Can the application detect the network on which it’s running and adapt to the internet connectivity (or lack thereof) that prevails? Effectively this calls for ‘responsive design’ – not to the form factor but to the network. As a related point, SMS rather than 3/4G is the transport layer of choice to reach the most people, and in developing countries there tends to be a high penetration of mobile phones, but they are basic feature phones, not smartphones. Designing around SMS is very different to internet based applications.
- While mobile device technology has advanced significantly in recent years, it’s still not perfect. Battery life and device power consumption needs to be a key factor in application design – as it’s possible to build a fantastic app that drains the device in a matter of minutes, effectively rendering it useless.
- The social element of app design is becoming ubiquitous – and must be factored in – such as for social shopping.
What technical challenges remain?
There are very few standards for mobile devices – for screen resolutions, data handling and even privacy and security. Touch interfaces and other sensors differ between hardware and software platforms. There is scope for research to identify ways that effort for cross platform development could be minimised.
Testing remains a challenge also given the heterogeneity of hardware and software. What works well on one device under one se tof conditions may not work well on another.
Load is also an issue, particularly when the user base of a mobile application grows large. How is app availability under high loads assured? This has implications for platform services like EC2 and Amazon web services.
One point of discussion was differentiating between ‘building’ applications and ‘engineering’ them – the teepee versus the Taj Mahal. The key question of course comes back to fitness for purpose – is the application doing what it was designed to do, and is it doing it well?
Another challenge is the nature of application feedback. If applications break, they garner negative reviews, which persist even after the bug might be addressed. This introduces the notion of community – which forces a degree of testing and quality assurance.
Monetisation also remains a challenge, with people very reluctant to buy mobile applications, even though their handset costs a significant amount of money – so different business models are likely to emerge.
Privacy and security of personal data are also issues worthy of attention, particularly with the distributed nature of mobile applications.
In general, this was a worthwhile session which captured a number of the issues currently facing the mFOSS community.