Hi David,

On 8 Jun 2016, at 11:17, David Moshal wrote:

Thanks Wayne, that's very interesting, I think it helps explain the
disconnect here.

I understood David Simmons to be suggesting that Makers (like me) are
the target end-users,
i.e: that MyNewt would be an alternative to, say, Arduino (and why not).

However, in your use-case, you are the end-user of MyNext, and Makers
are your end-users, no?
i.e: a layer lower in the stack. So, in that case MyNewt would be
positioned as an alternative to an RTOS (or no RTOS) for embedded C
programmers building devices for Makers.

So, if I may, I'd suggest that we step back and ask Sterling who
exactly he envisages as the end user of this project:
 Makers, or embedded C developers building devices for Makers?

I’ll give my 2c here, but I do want to point out: this is up to all of us, I’m just one vote.

I think Mynewt can have a broad set of users, which include:

- Makers who are embedded C developers
- Embedded C developers who are building devices for Makers
- Scripting language OS support
- Embedded product developers
- Microcontroller and sensor vendors who want to provide reference support for their platforms

And actually, having the project support a broader set of these use-cases should reinforce itself.

As an example, I’m a maker who is an embedded C developer. I would _never_ use Wiring or Javascript to develop a project unless forced to. I enjoy writing things in C, and don’t mind typing a little extra or managing memory in order to have direct access to the underlying hardware. Mynewt needs to be easy to use, and efficient for people like me, that’s why we’ve bundled toolchains with Docker, and have built a build & package management tool.

As you point out, there are plenty of cases where Wiring, Python and Javascript are better choices, and reach a broader set of people. If you look at the popular languages in embedded IoT, almost all of them re-invent the HAL, BSP, and many facets of the OS. If we can provide an engine, and they can hook into that, we can gain re-use on the non-language specific elements across all of the scripting languages. I look at this very similar to how PHP and Perl relied on Apache as the web-server. There is no reason that Micropython and Espruino shouldn’t be sharing HAL and BSP work, and the best way to do that (IMO) is to share efforts on a OS that they both plug into.

And the OS itself should be low-level and architected well enough that product developers can actually put it into real products and manufacture at scale. At Runtime, we’re building the system we always wished we had, and have had to reinvent at every company we’ve been at. While it’s an additional effort to support Makers and Maker platforms, there are real benefits to product developers in using an OS supported by Makers:

- Testing: If 100’s of thousands of Makers use Mynewt’s BLE stack, they are going to find bugs in it very quickly, and motivate Apple, Google and everyone else to be interoperable with it. With enough eyes all bugs are shallow.

- Ease-of-use: You see this in devkits as well. Take the NRF51/NRF52. They are not only widely used in products, but are beginning to be very popular in maker platforms. The more support for sensors, peripherals and cheap hardware you have around this platform, the easier it is to develop prototypes and move it into products.

- Innovation: Products aren’t always going to be built around things like LORA, or Sigfox right away. But if Makers support these platforms, it becomes easier for product companies to play with them, and then start adding them to things.

So. I do think Mynewt itself will always be a low-level C operating system. That said, I don’t think we should be tied to a use-case, but rather just go where it makes sense. I think for Makers that like C, we should make it as easy to use and robust as possible, and we should have it work with as many scripting engines as possible (Wiring, Python, Javascript, Lua, etc.)

Sterling

Reply via email to