CubeMX is a utility from ST that I use for real code development. It provides a convenient tool to configure the processor pins and generate the boot code for your projects. This typically involves setting all of the various clock frequencies, and configuring the peripherals that you will need for your project. This boot code is difficult to get correct, and CubeMX (or Cube for short) is ST's attempt at bringing that aggravation down to a reasonable level.
Cube builds upon ST's Hardware Abstraction Layer (HAL) that provides a rich, but not highly optimized, set of functions that your application uses rather than poking values into registers. The HAL is replacing ST's previous offering, the Standard Peripheral Library (SPL). When I looked through the HAL and SPL code, it was quite obvious that the new HAL was derived from the old SPL.
Cube is reasonably new, initially released in February, 2014, and gets periodic updates, adding functionality, squishing bugs, and annoying the people that have a vested interest in not switching from the SPL.
On January 29, 2016, ST Microelectronics released version 4.13.0 of their CubeMX tool for STM32 microcontrollers.
4.13.0 now includes Linux support, startup and configuration code for ST's new processors, and finer control over the order of initialization functions.
Instead of having to mess around with the PLL multipliers and dividers, you can now just put in the processor and bus speeds that you need and Cube will back calculate the PLL scalers for you.
Heap and stack space are now configurable without having to munge the generated source code.
Initial GPIO pin levels (on or off) can now be specified so, when the GPIO pins are configured as outputs, their initial states are predictable. No more relay rattles and LED blips at boot.
Cube is supported on recent Windows and Linux systems.
Cube will also work on Mac OS X by changing the suffix on the installer from .exe to .jar and clicking on it. This will install a folder called STMicroelectronics in your Applications folder. To run Cube, click down in the install folder and rename STM32CubeMX.exe to have a .jar suffix and click on that. Auto-updates don't work yet, but the rest of the program is completely functional.