I really like Firefox OS, but I am repeatedly amazed that it is taking so long to get a good developer infrastructure. We now have Firefox OS Simulator 4.0, but it lags the real thing by a long way.
If you have tried to develop programs using the Firefox OS Simulator you will already know that it has a few annoying bugs and slightly too many restrictions. This would be fine if the OS was still in alpha, or just being rolled out as a community preview, but there are real phones out there in the hands of real live users. While it is clear that Mozilla doesn't have unlimited resources and it's doing its best, it is still a very strange situation to have a shipping OS still undergoing so much development of basic facilities and tools.
The good news is that the latest simulator solves a lot of problems - not all, but enough to be very welcome.
The first improvement is the way that apps are loaded and run. The app is now run as soon as you specify the manifest. You can reload by clicking the Refresh button and this now does seem to work reliably and responsively. There are still some strange behaviors to contend with, such as apps not staring from the home screen and difficulties deleting apps, but it seems to work much better. The new "Connect" button is also a huge improvement. You simply click Connect and a toolbox opens for the app concerned making debugging much easier.
Another nice touch is that shortcut key press to refesh an app - Ctrl-R refeshes as before but now Shift-Ctrl-R also clears persistent data.
Apart from the update to the running of programs, the other new features are a bit higher level. You can now test your app works correctly with Marketplace payments. The dashboard lets you select a valid, invalid or refunded receipt type to be sent to your app from the Marketplace server.
An interesting extra is the new remote CSS styling. This only works if you are using the Aurora channel (beta) of Firefox. If you do, there is a style editor which enables you to make live changes to the applied styles. The changes are directly to the style sheets concerned, so it looks more useful than most similar live style editing facilities.
Finally, we have simulated touch events that are triggered by the corresponding mouse event. This has been a big problem in using the simulator and has been one of the main reasons for moving to real hardware for testing. It even made using core Gaia (system) apps impossible because these assume that only real touch events would be triggered. However, it seems that the simulation still isn't particularly accurate because mouse events are also sent.
Of course, there are still lots of reasons for having to resort to real hardware to test apps because the Simulator doesn't support all the codecs, the Proximity API, Vibration API, Network Information API and so on. Many of the missing APIs don't matter because they are only available to certified apps - i.e. system apps.
Let's hope the Simulator gets out of alpha very soon.