On Fri, Mar 20, 2020 at 1:28 PM Gregory Nutt <spudan...@gmail.com> wrote:
> 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? I think we should keep (at least) a "minimal" apps as part of Apache NuttX, so that things like NSH and important basic functionalities will live and be maintained together with NuttX. I would include only "in house" code there. Anyone who likes can create their own NuttX "distributions" (just like there are myriad Linux distributions) with whatever they want to include and we can encourage that by including links to distros on the NuttX website or a readme file. Users can choose a distribution or create their own custom apps. They can use our "minimal" apps as a starting point, or start from scratch. That is dictated by the end user's application (e.g., if they need/want a shell or not, etc). Nathan