Let's go back as to why folks use Arduino. They have no clue, but want to get something done. They need to experiment and learn. You learn best from making mistakes.
There are a lots of "me's" around that can & do use professional tools but stick with the Arduino System because I (they) want their code public and easily duplicated. ArduinoIDE provides a workable, free, repeatable, cross-platform set of tools. Compared to some of my forum peers, the use of "no clue" may be appropriate, but it really does not answer the "why." Arduino is a common denominator for publishing code projects. Ray
My choice of words was perhaps inappropriate. I did not intend to imply that necessarily all Arduino users share the same type of beginners level as the platform was intended for, nor did I want to preclude other motives to use the platform or IDE. The point was simply that the Arduino platform is primarily targeted at the tinkerer who does not necessarily have a full understanding a priori, but explores solutions along the way of experimentation.
Seasoned software developers have learned (probably the hard way) that you do some things one way and one way only. Keeping ISRs short and avoid anything in there that would block is one such example. But for somebody who is either fairly new, or simply more concerned about her/his project as a whole, this is not intuitive. Hence it is utmost important that a Arduino Core behaves in an expected and predictable way under any circumstances. Whether it is optimal or not does not matter.
In reality the API is horribly inadequate, not specified very well and many implementations barely pass the minimum criteria of functionality. However all of this does not seem to matter as the ecosystem still enables a lot of individuals to get a lot of things done.
Where I am coming from is totally different. I got sucked into all of this because I am utterly bad at hardware. I always wanted to explore a low power Driver/HAL/RTOS infrastructure at the micro controller level. What is required to do that ? How do you do clock gating ? How do you efficiently sleep, and how do you profile that ? How much can be done at a system level behind a HAL/Driver abstractions ? Can this be done without the use of an RTOS (i.e. explicit locking) and such. Along comes Kris with his incredible talent of actually being able to design those little boards, and what he is lacking is an Arduino environment for them, because he is all hardware and not software. Hence the thought of simply merging the type of software layer for low power with an Arduino Core, and see how much can be done there. And for me personally it was surprising how much functionality could be offered there, and how few extensions to the "official API" were required to get most of the things in place that I was accustomed to from more advanced environments (like async IO). But what really struck me is that with this really simple API I suddenly could convey more advanced concepts to others.
Anyway, one of the biggest challenges going forward for Arduino is fragmentation. You got now a ESP8266 core, the existing AVR/SAM/SAMD cores, then there is Energia and the LeafLabs Maple based core on this forum, and everybody does things slightly different. And that is really bad, because this precludes portability. That is the main reason the STM32L4 core picked "Arduino Zero" as a point of reference and follows the simple guideline of "if it works and Arduino Zero, it has to work the same way on STM32L4", whether I agree with the approach chosen or not.