Beside mbed online compiler and closed source Keil, What is the best open source IDE for Arm software developer ?
It really depends what type of Arm processor you're going to work with and whether you're more interested in the tools being available at zero cost, or actually open source. If you're a total beginner, a good place to start might be the Arduino IDE, since they have a board using an Microchip processor based on Arm Cortex-M3. This will be very easy to use and open source, but also limited.
Many of Arm's partners have tool suites specially designed for their own microcontrollers, though you'd have to check each to see which were open source.
As ilg mentions, you could use Eclipse. Our own DS-5 Development Studio is built on Eclipse and is available for free as DS-5 Community Edition (though this is not open source). The great thing about Eclipse is that you can install a whole bunch of plugins on top of the initial installation, so you could use DS-5 CE, plus GNU Arm Eclipse and anything else you find of interest.
There are lots of other open source tools for Arm. A basic list is available with a quick Google: List of Arm Cortex-M development tools - Wikipedia, the free encyclopedia
To address your question about which is best... it's personal choice really.
The free DS-5 Community Edition might be a great tool, but being intended to "accelerate the development of native (C/C++) embedded Linux and Android applications" might not be very useful for quanhu who mentions mbed online and Keil, so apparently looks for solutions to develop bare metal applications.
As a conclusion, under the Eclipse umbrella there are many integrated tools and even more separate plug-ins to support either Linux based embedded and/or bare metal applications development (GNU Arm Eclipse supports both, in 32 and 64-bits variants, but is intended mainly to bare metal Cortex-M applications).
I do not see the arduino_ide as a good starting point for a professional, even for a student who wants to learn to program Arm, well actually I think it may even be that the Arduino is a good starting point for anyone start with diy or professionals from other sectors such as fine arts, architecture and music projects.
But if you want to become a good programmer, the level of processor or microcontroller, which is interesting since start of more complex place, of course a tool to assist in some activities is important, even with the complexity of eclipse I find it a good tool for those with time to worry about details, plus the Eclipse's ready solutions like the DS-5, the choice of GNU Arm plugin, as suggested by ilg also is a good choice, but there will be a learning curve for details regarding Eclipse.
Without claiming to be the absolute best, if you are interested in an Eclipse based open source solution, you can also consider the GNU Arm Eclipse plug-ins project, it covers most entry level use cases, from project creation to debugging. More advanced debugging features, like peripheral register views are currently work in progress; simple tracing is available via a semihosting/SWO console, more advanced tracing features are planned for future releases.
If you have further questions, please don't hesitate to ask.