The way applications are distributed for FirefoxOS are quite different if, like me, you come from an Android (or iOS) background.
In stead of building/compiling a standalone package and uploading/submitting this to some app store / market, you host/release the app as an HTML5 app yourself on a dedicated (sub)domain. Github static page hosting seems to be suitable for this if you do not have the resources yourself.
This makes it trivially easy to convert any existing web application to a FirefoxOS app. All you need to do is provide a Manifest and you're good to go.
Additionally, you can include an 'install button' in your app that will allow the user to install the app on his/her phone.
Does this mean the app will always require a network connection to run? It appears not. Even in the most simple setup, FirefoxOS seems to cache or install the app data locally on the phone - I was able to run my simple app offline with wifi / mobile data disabled. I haven't been able to find the exact location of this cache yet, though.
If you want more explicit control over the offline storage of your app, you can either use the HTML5 AppCache support (which can be a "douchebag", so be careful) or your can package your app into a standalone downloadable zipfile
At first I assumed the Firefox Marketplace would simply mediate between the hosted apps and the phone user, not actively hosting the apps itself. It turns out this is not true - if you want to publish your app on the market, you will need to create a pacakge out of it.
This has some additional advantages
- The Firefox Marketplace probably has more resources to avoid downtime.
- Packaged apps can access internal API's
- Packaged apps can be signed / verified
Packaging an app is, however, not as trivial anymore as simply hosting your own app.
Packaging your app sounds like a safe choice in general and it feels like the right way to distribute an app as an Android developer.
Additionally you can (if you don't need additional API access) host your app online; combining the two from the same code base should be easy.
Using AppCache to provide additional caching should be used with caution and doesn't seem to be that necessary anyway with FirefoxOS.