At some point NuttX will grow too large for deep embedded platforms.
My concern exactly. Yes, POSIX compliance is super important because it
provides portability: I regularly write a program and run it on PC and
embedded with almost no changes. This is one of the big selling points of
NuttX for me.
I don't that the specific TERMIOS configuration we are talking about
here is an significant issue. I don't expect any large code size change
as a consequence of enabling TERMIOS because the extent of logic enabled
is not enormous.
But the general principle and the agreement on the project values is
more significant.
At the same time, there's another kind of portability: between MCU models
and families. Before NuttX if I had a firmware running perfectly on PIC32
and wanted to move it to Tiva I had to rewrite everything. NuttX support
for many MCU models eliminates this (except the occasional bugfix in low
level driver code or something). That's a huge advantage. Supporting lots
of architectures means the next project is likely to find one that will
work.
Related: This would be an issue for people who have to support a product
for an extended life. In the early 2010's, for example, there were
products using NuttX based on MCUs with 32Kb of FLASH memory. I suspect
those would already be in trouble.
The moral of this is: If you have to support the same hardware for
years and years, you really need to freeze the OS version and backport
any critical fixes as necessary.
If we won't fit on the smaller micros, we'll lose some of that advantage.
Maybe it doesn't matter. Maybe the days of super small MCUs are numbered
and things are moving to bigger flash, 64-bit, and Raspberry Pi class
embedded systems. Maybe that's okay. But, if that's the direction to go,
then we just need to be clear about what our future holds so that users
won't build designs around micros that are not going to be supported for
much longer.
We can't compete in size with RTOSs like FreeRTOS, mbed, ChibiOS. Never
could. Those things only need about 4Kb of memory and would be the RTOS
of choice for use with really small MCUs.
Maybe, like FreeBSD, we should declare support "tiers" for different
architectures and MCUs, with Tier 1 meaning supported fully and other tiers
for things like partial support (experimental?) or deprecated... just a
thought.
Good idea... but I doubt that we could ever staff this.
Slightly different topic: I have almost every board that ever ran NuttX
from about 2005 through 2020 or so. That is probably several hundred
boards. I don't use them any more and am thinking about just dumping
them to make space. Is there anyone willing to pay the shipping from
Costa Rica on a massive dump of older but interesting hardware?