Thoughts on developing SAFE mobile demo apps today


After browsing the forums for a little bit, my understanding is that mobile launcher is not in place just yet. But, running a quick test on my home network, it appears that this is possible:

  • run the SAFE Launcher on one machine in my local home network
  • modify “localhost” in MaidSafe’s DEMO App to point to the IP address of the machine running the SAFE Launcher (in safe_api_factory.js)
  • run the modified DEMO App successfully from another machine, one that is not running the Launcher

It sounds like it would be possible to start developing “demo” mobile
apps today with that setup. Of course apps would only work on the WiFi
network at your home, but for “demo” apps perhaps that’s OK for now.

I’m considering porting MaidSafe’s DEMO app to Android and iOS using either
Xamarin, ReactNative, or Ionic2. I haven’t decided yet which one to
use, although I’m leaning towards Xamarin at this point. Is there a
preference from MaidSafe on one versus the other?

Any other thoughts or concerns about pointing mobile apps to a Launcher running on another machine?


The link to the remote machine will be unencrypted, but should be fine otherwise.


I’m learning some ReactJS and NativeScript to also do some dummy mobile app for safenet. I also thought about Ionic but I was told that NativeScript is better, but I honestly don’t know, I’m just gonna give it a try to ActiveJS.

EDIT: I meant NativeScript not ActiveJS.


I’ve developed an Ionic app before and it’s certainly a nice option for mobile, although I am not a fan of Angular or Angular2.

The more I think about this, ReactNative could be a nice fit for SAFE mobile apps - it would feel very familiar to devs with ReactJS/Redux background and porting Electron apps could potentially be more straightforward.


I know next to nothing about this topic, but reading the discussion mobx comes to mind so might be worth a look. I think David Irvine mentioned it so I made a note, but haven’t looked into it.


What you are describing (facing the network through a launcher over the network) is for sure possible today on mobile, yes. Though you can expect every mobile phone or embedded/IoT device (think of google’s chromecast) to have a sparing parter in the network to proxy to SAFE. Neither can you be sure to have that running on the phone itself (due to limitations of background services provided across app boundaries). That is clearly not the way forward.

We are investigating right now how we could change the launcher and app access to the network to provide for these and other use cases. That will very likely mean that the way they interact with the network will different from the current HTTP-Rest approach.

So, while you can for sure do what you are talking about, the question would be: what do you want to Demo? If you want to demo the technical feasability of doing HTTP-Rest, then there is little point as we’ll probably drop that for the mobile/embedded use case all together. If you want to proof that it is possible to build nice apps for mobile, which can (generally) interface with SAFE, then by all means: go for it!

As all our current apps are done with React on Electron (and will probably continue to be based on that), we are currently researching the crossbuilder-approach to porting a launcher (and other apps) to mobile. The basic idea here is to have one Javascript App, which is bundled on electron for the desktop and with cordova on mobile (iOS, Android, potentially Windows Phone, too). So if you want to port the demo app, this is the approach I’d recommend.

We are also experimenting with a cross-builder fork that contains cross-compiled rust-code via FFI, too – not yet documented how to do that though. Which is probably what we’d be doing to port the demo app, should we move forward without a http-based launcher.


I know this is a bit OT, but I think we need to consider convergent apps in this equation. If we are unlikely to be doing HTTP/REST on mobile, we should really be considering what other options can work on all platforms. I suspect mobile, tablet and desktop will continue to move closer together over time and headless/embedded apps may well run over all platforms with little modification. We should really aim for a unified interface where possible, to enable easy cross platform development.


Agreed. And we are. But it ain’t trivial and opens a few cans of worms on a few topics.

We are working hard to research things and try to come up with an approach we can present and discuss as an RFC. But we aren’t there yet :frowning: .


That’s good to hear and I didn’t doubt it for a second. Just throwing some feedback in! :slight_smile:


Thanks for providing some vision and direction where mobile is heading! I’m already familiar with Cordova and React/Redux, not so much with the cross-builder. I’ll take a look at what it’s all about and experiment with it on mobile.