Hi, group,
There has been talk for years about the idea of creating a separate
project out of apps/, extending it so that it is a real NuttX
"Distribution," basically like OpenEmbedded, Buildroot, or Yocto for
NuttX. It would:
* Download and install the NuttX
* Select and build the custom firmware
I have always thought this was a novel idea, but I have not particularly
been an advocate. But I think that Apache licensing issues might drive
us to reconsider this idea. The nuttx/ repository is really pretty
clean. There is certainly some bits of third party code and certainly
some ICLAs will be needed, but the code is really very clean.
You cannot say this about apps. apps/ is a collection of code with a
lot of third party code. There are full ports of third party
applications (like interprers/bas, or netutils/thttpd, or modbus, or
wapi, or ...). There are original applications (like NSH). And there
is all manner of things in between. Mostlyare original applications
with varying amounts of highly modified third party code. NxWidgets
contains some Whoopsi code, for example.
So perhaps we could simply things by pulling some or all of the apps/
out of the NuttX repositories. There apps/ are NOT the OS. They are a
hodge-podge collection of applications that runs on the OS. The OS in
the nuttx/repository stands alone and does not depend on the existence
of apps/. So there is no imperative reason that we should retain apps/
in the nuttx/ respository.
Certainly doing so is a convenience. But if licensing becomes an issue,
then we should consider some options:
* We could pull the entire apps/ repository out of the Apache
repositories and manage it as a separate project outside of Apache.
This would be the cleanest way to deliver a complete NuttX
distribution in the spririt of OpenEmbedded or Buildroot. But there
are some cons: The build system and PR checks depend on the
existing configuration and such a change would potentially cause
breakage or complexity. Some of the applications such as NSH really
are very connected to the OS. Finally, there is no project structure
in place to manage such a NuttX distribution.
* We could also just move any dubious components out of apps/ and into
a separate repository/project. As components that could be
installed in apps/. This use case would be awkward and there is
really no way to develop a "Distribution" from this.
* Finally, we can do nothing and deal with the third party software in
apps/ as we encountered it.
Thoughts?
Greg