I've heard good things about mbed. I'd like to know what the downsides are.
mbed makes a great first impression. You plug in the mbed-enabled board, it opens as a mass storage device with a link to the mbed site for that board. You follow the link, register, and get instant access to a web-based IDE that's pretty nice. You can easily browse your code and the source from any libraries you've imported (there are many). It even has code completion and version control. You can compile and it will automatically download a .bin file to your computer which you can then drag-and-drop onto the mass storage device and it will install and run your program.
You can have multiple boards registered from different Cortex lines and different vendors. Want to port the program you wrote for your STM32 Nucleo M0-based board to an NXP Kinetis K64? Select a different board by clicking a button in the IDE. It will open a window with all of the boards you have registered. Just pick one and click "compile". For simple programs like Blinky, this all works great. How well it works for more complex programs is something I'd like to know myself.
Where things start to get a little rough around the edges is when you want to use a hardware debugger (either on the board itself or via an external probe). They have a nice doc that walks you thorough exporting the mbed project to a variety of desktop IDEs, but when I tried it, I ran into problems with missing header files. I'm sure I will get past this with a bit more effort, but hardware debug is clearly not one of mbed's strong points.
If you've got a beefy enough ARM processor and memory, you can use the mbed OS. I tried a few simple example programs and they worked fine. Again, how well this works beyond the examples they provide is something I would like to know more about myself (and will be digging into as time permits).
Then there's the whole mbed Cloud thing which isn't available to the public yet. It all sounds great, especially if you're into IoT, but it's a work in progress. In time, it could be quite something if the chip vendors get on board. Right now STM and NXP have good presence, but Atmel has almost none and Nordic has none at all (although there are quite a few other vendors that do).
Also worth mentioning:
1. mbed OS has dependencies on CMSIS. Whether this is a good thing or a bad thing is something I'm still trying to figure out.
2. Many of the mbed docs point you toward Keil MDK, which only runs on Windows and is also owned by ARM. Like everyone else, they're trying to get you to commit to their ecosystem and I'm wary of doing this.
Question for Paul:
What is your preferred ARM IDE/toolchain, if any?