It is a matter worth some amount of philosophical debate as to why Arduino is so successful in the first place. The nay-sayers will point out that it's not much more than a breakout board for a chip with a bootloader, and a rather watered down excuse for an IDE. And yet it HAS succeeded.
I'll claim that there are several important factors:
- A level of abstraction that permits beginners to write and understand code much more quickly than traditional microcontroller programs. Compare "pinMode(12, OUTPUT)" to "DDRB |= 1<<4", for example.
- An underlying infrastructure powerful enough, and standard enough, not to annoy experts. There's a real C compiler there, so if you want to deal with low-level details, you can.
- Plug and play ease of use. It doesn't matter what type of computer you use. Install the software, plug the arduino into a standard USB port, and start playing. (I was rather amused at the LaunchPadSimpleProject example that came out recently. In between the time you have the program installed, and the time you can start typing in a program, there are about TEN steps (defining workspace, project, and new source file.) The same piece for Arduino is ... zero steps; start it up and you get a "sketch" window where you can start typing.
- Community support. This is hard to define, and somethng of a chicken and egg problem. You can't really say that an extensive support nework is needed to be popular, when you need to be popular to get that network in the first place. But somehow, the Arduino community is sufficiently diverse and helpful that it IS a big factor. The interesting question is whether any of that community can be leveraged on other types of microcontroller. There are Arduino-like efforts for ARM, PIC, and even "unusual" AVRs that are experimenting, with somewhat less than spectacular success. So far.
Now, my efforts for this blog are mostly going to be aimed at 1 and 2, and a little bit of 3. Can I implement the Arduino abstration layer on top of some multi-platform compiler in a reasonable way? Mostly, this should consist of finding a suitable compiler and porting the libraries. If that works, and there is interest, then adding that support to the IDE might become a more interesting subject.