I had a couple of questions on how you'd implement things like Spotify or Dropbox (i.e. apps that download a bunch of files, or upload existing ones).
And also about how apps would interact with each other (so that I can change out one SMS app for another, but have everything else continue to work).
Oh, and will it support things like different keyboards? I love that on Android I'm not using the home screen, keyboard, email, SMS, or calendar apps, and it all just works fine.
So, in terms of an app like Spotify, you'll build it based on common web standards, e.g. offline storage APIs for caching. Dropbox is a more interesting case, as the basic use case of things like photo uploads from the app use the standard media APIs, but integrating it into the rest of the system requires a lot more work.
The answer for integration is more a global one, and honestly I don't have a good answer yet. I could see something like Web Intents/Web Activities enabling replacement of the homescreen or keyboard and perhaps eventually integration with the likes of Dropbox, but there's still a lot of work to do before that point.
To me, these sorts of important, unanswered questions are where B2G wins the most. Rather than coming up with the answers in isolation and then pushing the result on the world, we encourage everyone to get involved in the process, and we will make it into another web standard that benefits everyone, not just Mozilla or B2G users/developers.
note: I don't work for Mozilla but follow B2G closely. All of this stuff is possible. Everything in B2G is a web app, including the keyboard IME (and the browser, and the window manager itself). You can definitely swap that out. The only thing that's not swappable, to my knowledge, is the phone app.
It's super easy to swap out any piece (or replace the whole UI) if you're willing to mess around on the device, but there's no way to do this from the UI as it stands, like you can with Android. I'm excited to see the solution to that problem.
It's not possible to truly implement Spotify as there is no P2P in HTML5 yet - but see Chromium's efforts with WebRTC.
It's also not possible to implement Dropbox. When last I checked, IDB in Firefox is at least an order of magnitude slower than a KV implementation with direct posix access. Most importantly, there's no proper native crypto api, and no way to let a user open a file from within a web application, and have it open in a native application, polling the file for changes to sync the different chunks when the user hits CMD+S.
And also about how apps would interact with each other (so that I can change out one SMS app for another, but have everything else continue to work).
Oh, and will it support things like different keyboards? I love that on Android I'm not using the home screen, keyboard, email, SMS, or calendar apps, and it all just works fine.