incubator-general mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sterling Hughes <sterl...@apache.org>
Subject [DISCUSS] Mynewt Incubation Proposal
Date Mon, 05 Oct 2015 16:39:03 GMT
Hi! 

We would like to start a discussion on accepting Mynewt, a RTOS (real-time 
operating system) for Internet of Things devices, into the Apache Incubator.
Please take a look at the proposal and let us know any comments or feedback
you have.  We think this project could be a pretty exciting way to expand the ASF 
into the Internet of Things and embedded software.  We would love to hear from 
anyone who is interested in joining the project and helping out! 

The proposal is available online at: 
https://wiki.apache.org/incubator/MynewtProposal

We are also looking for additional mentors to help us, as we go through the 
incubator.  If you’re interested, please let us know. 

Thank you and Best, 

Sterling 

= Mynewt Proposal =

== Abstract ==

Mynewt is a real-time operating system for constrained embedded systems
like wearables, lightbulbs, locks and doorbells. It works on a variety of
32-bit MCUs (microcontrollers), including ARM Cortex-M and MIPS
architectures.

== Proposal ==

The goal of this proposal is to bring the Mynewt codebase (developed by
Runtime, Inc.) into the Apache Software Foundation. Mynewt is designed to
run constrained Internet of Things devices, where a small, real-time
operating system is required.

It includes the following components:

 * Real-time operating system kernel (Scheduler, Mutexes, Semaphores, etc.)

 * Command line package management and build system

 * Hardware Abstraction Layer unifying common MCU features (e.g. GPIOs,
 High Resolution Timers, PWM interfaces, UARTs, ADCs, etc.)

 * Board Support Infrastructure, that defines the framework for building
 software for various board architectures.

Should this project be accepted into the incubator, Runtime, Inc. will
assign the ASF a license to all source code developed to date and begin
the development of an open source community around the project.

== Background ==

Mynewt has been developed solely by Runtime to date. We are a team of 5
software engineers, that really love writing embedded systems.

== Rationale ==

With the momentum behind the Internet of Things, there is an increasing
need for standard open source software to help developers create connected
devices. One area where there is a large need is an open-source, liberally
licensed, community-driven RTOS (real-time operating system.)

Today, there are many RTOSes, the majority of which are provided by
proprietary vendors and many of which are not permissively licensed or
controlled by a single company. These restrictions create fragmentation,
because either not everyone can afford to purchase the operating system or
restrictions put on the OS's use (e.g. restricted to vendor-specific
platforms), means that people using other processors cannot adopt it.

The lack of a standardized operating system creates fragmentation around
everything above it. Because there is not a well adopted community driven
operating system, people don't have a place to contribute back new
drivers, or networking stacks. Additionally, there is constant work to
port and maintain software across a myriad of different operating systems,
all with slightly different APIs and interfaces.

In order for the industry to accelerate and keep up with the increasing
complexity in these devices, it's important that an open-source community
form and provide a RTOS effort that:

 * Accepts community contributions and encourages code reuse 
 * Natively supports source package management, to allow for efficient 
 redistribution and reuse of software across a broad swath of use cases (from 
 wearables to industrial equipment)
 * Supports all of the "new" protocol stacks required for IoT (e.g. Bluetooth, IPv6, 
 etc.) 
 * Has drivers for all new chipsets, sensors, and other devices

The core of Mynewt has been designed to accommodate these requirements. It
contains a small, pre-emptive RTOS core, that works on native (OS X,
Linux) and Cortex platforms (and is easily portable to others), and
standardized HAL and BSP interfaces.

It also provides a build and package management tool that allows
developers to install, develop, and redistribute source packages. This
tool allows developers to start with the core of the OS and its
interfaces, and then download only the source packages that are needed to
run their embedded project. This will allow the community to grow beyond
just porting the core of the Mynewt system and extend to all of the
necessary protocol stacks, drivers and sensor interfaces that a modern
embedded developer will need.

In addition to the Mynewt core, there is active development around a set
of commonly needed functionality when developing small embedded systems,
including:

 * A Flash Filesystem designed for small flashes, with large block sizes
 (very common in single chip designs) 
 * An Open Bluetooth stack with native support for prevalent modules

== Initial Goals ==

The core of the Mynewt Operating System is functional.

The goal is to have an initial release February, 2016. Between now and
then, a number of things need to be finished:

 * Improved HAL (Hardware Abstraction Layer) 
 * Regression Testing Framework 
 * Power Management Support in the OS 
 * Instrumentation Framework
   * Statistics 
   * Log files 
 * Debugger Support for Embedded Platforms 
 * Coredumps 
 * Support for more platforms (e.g. TI, Broadcom) and Cortex M* series 
 processors.

Additionally, there are a number of other core services that need to be
developed around the core operating system.

 * Bluetooth LE and Wireless IP stacks 
 * Log structured flash filesystem 
 * Flash circular buffer stores 
 * Drivers for Sensors and Actuators 
 * Services to control motors, pumps, read accelerometers, heart rate
 sensors, etc. 
 * Core services for location and time

== Current Status ==

=== Meritocracy ===

Initial development has been done at Runtime, however, Mynewt was 
intended to be released as an open source project from its inception.

Our goal during incubation is to develop a community around Mynewt. We
fully intend this to be a community run and led effort. We believe that
decisions should be made on the mailing list, and that core contributors
(regardless of corporate affiliation) should be the ones who decide the
future of the project.

We will work during the incubator to foster new contributors and grow the
community beyond our company.

=== Community ===

Right now, Mynewt is used by Runtime. Our goal is to expand this community
as we develop, and release the operating system. There are a number of
companies currently working to test and incorporate Mynewt into their
products.

=== Core Developers ===

The core developers of Mynewt are at Runtime. The goal of the incubator is
to grow that community beyond our company.

=== Alignment ===

While there is not much software for constrained embedded environments
within the ASF today, we believe that this is an important and growing
area.

The ASF has advantages for projects in this space:

 * The GPL (and LGPL) are profoundly impactful for physical products, as
 most constrained devices are linked into a single executable, meaning any
 proprietary device that includes GPL'd source code must release their
 software. 
    * This often contains information about proprietary hardware
 designs as well as software designs. 
 * Most projects are either not wholly community driven and/or lack a clean IP 
 trail.

The permissive licensing enables more groups (both open and proprietary) to 
participate in development, to grow the community/ecosystem, and to remix Mynewt 
components into new hardware and software designs.

== Known Risks ==

=== Orphaned Products ===

Mynewt is a new real-time operating system without much adoption. At Runtime, 
we are committed to its development and our goal during the incubator is to grow 
the community and adoption around Mynewt.

=== Inexperience with Open Source ===

One of the members of the Runtime team is an emeritus member of the Apache
Software Foundation. Another member has contributed extensively to Linux
and FreeBSD. The other three members do not have experience with open
source, but are curious.

=== Reliance on Salaried Developers ===

Today, Mynewt relies mostly on salaried developers for its existence. This
is an issue we will look to address during the incubation period: we want
to develop a strong community around Mynewt.

=== An Excessive Fascination with the Apache Brand ===

We like the Apache brand (it's a good brand!) However, we want to enter
the ASF because:

 * In order for an OS to be ultimately successful, it needs to be
 community driven 
 * We believe strongly in a community which is a meritocracy and think that
 the ASF has a proven, successful framework for managing such communities. 
 * The ASF has a strong track record in developing healthy communities that 
 co-exist with commercial entities.

== Documentation ==

Documentation is available here: https://github.com/mynewt/documentation

We are actively working on documentation and expect it to improve
dramatically within the next couple of weeks.

== Initial Source ==

All source code is currently hosted by Runtime, Inc. on Github.

The source code can be found here:

https://github.com/mynewt/

The "tadpole" repository contains the Core of the Operating System and
file layout. The "larva" repository contains the Core OS and all packages
developed around that core. The "newt" repository has the build and
package management tool that is used to stitch together and build new OS
projects.

== External Dependencies ==

No external dependencies currently exist in the core OS; all code has been
written by Runtime.

The board and microcontroller-specific support packages contain code from
the various MCU vendors. This code has been ensured to be under either an
Apache or BSD license.

== Cryptography ==

None

== Required Resources ==

=== Mailing lists ===

 * dev@mynewt.incubator.apache.org 
 * commits@mynewt.incubator.apache.org 
 * notifications@mynewt.incubator.apache.org

=== Git Directory ===

We'd like to host the source code using Git.

=== Issue Tracking ===

 * JIRA Project Mynewt (MYNEWT)

== Initial Committers ==

 * Sterling Hughes (sterling at apache.org) 
 * William San Filippo (will at runtime.io) 
 * Christopher Collins (chris at runtime.io) 
 * Aditi Hilbert (aditi at runtime.io) 
 * Marko Kiiskila (marko at runtime.io) 
 * Justin Mclean (jmclean at apache.org) 
 * Jan Iversen (jani at apache.org)

== Affiliations ==

 * Runtime: Sterling Hughes, William San Filippo, Christopher Collins, Aditi Hilbert, Marko
Kiiskila.
 * Class Software: Justin Mclean
 * Unaffiliated: Jan Iversen

== Sponsors ==

=== Champion ===

 * Marvin Humphrey

=== Mentors ===

 * Sterling Hughes 
 * Justin Mclean 
 * Greg Stein

=== Sponsoring Entity ===

 * The Incubator PMC.


---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscribe@incubator.apache.org
For additional commands, e-mail: general-help@incubator.apache.org


Mime
View raw message