Abstract

NuttX is a mature, real-time embedded operating system (RTOS).  It has wide usage in IoT projects, control systems, robotics, drones, and many other systems.  Unique properties of NuttX are its strict adherence to standards and its scalability. NuttX follows the Unix standards as defined by OpenGroup.org (POSIX, ANSI, and others).  This allows for a high degree of portability. Scalability is supported through a configuration system that allows NuttX to run on the smallest embedded platforms and through high end single board computers.

Proposal

NuttX was released under a BSD 3-Clause license on February 17, 2007.  From that time until now it has been managed by a single person, Gregory Nutt.  The user base of NuttX has grown to probably thousands of projects and perhaps a hundred active developments at any time.  The code base has grown to around 1.5 million lines of code (according to OpenHub.com).

NuttX has benefited from this single person management because this has resulted in a consistent architecture and controlled growth.  But now it is time to open this project to the participation of others because this consistent architecture assures solid future growth, and because the magnitude of effort required to support the RTOS exceeds the capability of a single person, but also because users of NuttX require a stable road map going forward that does not depend on a single person.

For these reasons, I propose that NuttX enter the Apache Incubator as a first step in opening the project to wider participation.

Initial Goals

The initial goal will be to move the existing BSD code base to Apache and integrate with the Apache development process and infrastructure. A primary goal of incubation will be to grow and diversify the NuttX community. We will convert that code base to the Apache license during incubation.

Current Status

As previously mentioned, NuttX is a mature, stable product in wide use in embedded products.

Meritocracy

We value meritocracy and we understand that it is the basis for an open community that encourages multiple companies and individuals to contribute and be invested in the project’s future. We will encourage and monitor participation and make sure to extend privileges and responsibilities to all contributors.

Being a mature project, NuttX already has an extensive user base with many people who understand the software, who have committed hundreds of changes, and are happy to participate in the project.  I believe that with a little guidance and formalization, a PMC and a large group of experienced committers can quickly be established.

Community

NuttX has a large, active community.  Communication is via a Google group at https://groups.google.com/forum/#!forum/nuttx where there are 395 members as of this writing.  Code is currently maintained at Bitbucket.org at https://bitbucket.org/nuttx/.  Other communications are through Bitbucket issues and also via Slack for focused, interactive discussions.

Keeping up with the communications, requests for help, issues, and contributions is more than a full time job at this time.

Core Developers

NuttX was initially developed by Gregory Nutt, released as an open source project on February 17, 2007, and is still under active development.  There are several dozen, active, frequent contributors involved with the project. The core OS can be considered finished at this point, but development continues in specialized areas of networking, IoT, cryptography, tools, and other more specialized functions.

Alignment

NuttX is an original development with some small percentage of ported code.  It stands alone depends on no other projects.

Known Risks

Orphaned Products

We are committed to the future development of NuttX and understand that graduation to a TLP, while preferable, is not the only positive outcome of incubation.

Should the NuttX project be accepted by the Incubator, the prospective PPMC would be willing to agree to a target incubation period of 2 years or less, knowing that every Incubator project incurs a certain cost in terms of ASF infrastructure and volunteer time.

Inexperience with Open Source

None of the initial committers are Apache members and we will need some help in learning the Apache Way.

Salaried Developers

It is expected that NuttX development will occur primarily on volunteer time, after hours.  One initial committer will be paid by Xiaomi. All initial committers are all equally passionate about the project.

Relationships with Other Apache Products

There is no relationship between NuttX and any other Apache Products.  There were discussions with the Mynewt project in the past concerning use of some Mynewt IoT components within NuttX.  There is some possibility that those conversations could continue once NuttX has Apache licensing as well.

Required Resources

Mailing lists

The podling may also create a user mailing list, if needed.

Source Control and Issue Tracking

NuttX current uses the Bitbucket infrastructure for development.  It is likely that the NuttX podling would switch to GitHub and would use Apache’s gitbox integration to sync between GitHub and Apache infrastructure. The podling would use GitHub issues and pull requests for community engagement.

Current Resources

Source and Intellectual Property Submission Plan

The NuttX  source code in Bitbucket is currently licensed under the BSD 3-clause license and the most copyrights are assigned to the author, Gregory Nutt. If NuttX becomes an Incubator project at the ASF, the project will transfer the source code and trademark ownership to the Apache Software Foundation via a Software Grant Agreement.

External Dependencies

None.  A small number of files within NuttX follow slightly different, but compatible licenses including BSD 2- and 4-clause, MIT, ISC, and Public Domain.

Cryptography

NuttX has negligible cryptographic capabilities at present.  This is, however, and are where there will be extensive future growth.

Initial Committers

Sponsors

Sponsoring Entity

  • The Apache Incubator


  • No labels