Mongoose OS – An Open Source Operating System for the Internet of Things
Okay, so lots of comments on here and most of them are just plain wrong, FUD or stem from simple misunderstanding. Also, lots of people not groking the value proposition. Let me take a crack at clarifying some key points.<p>So first off, the project is GPLv2 whether you use it for commercial or non-commercial use. The team&#x27;s first language is not English, they are actually Russian and based out of Ireland, so there is bound to be some confusion. What they were basically trying to say with that, is if you need the extra features and the backend, etc. Those are not GPLv2 but the project itself is--no matter how you use it--is. I mentioned it to them team and they already corrected the site.<p>Second, the value proposition behind this is tremendous. Remember the days before Unix and DOS&#x2F;Windows ran on every machine in the world? Every machine had its own design, its own arch&#x2F;cpu, its own OS, and its own interfaces. Computing was cool, but each machine was really an island. If you wanted to run your code on another machine then you had to port it over. Then Unix and CP&#x2F;M-80&#x2F;DOS came along and you could write something on one machine and it ran (almost) on anything with the same OS. Thats the name of the game here. This is groundbreaking for embedded&#x2F;IOT development.<p>Real embedded development is hard enough as it is. If you&#x27;re doing a one off project for something in your home, then its pretty straightforward. Now try and take that to a mass production-scale product and the level of complexity is increased 50x.<p>Imagine trying to bring a product to market, you need to pick a hardware platform&#x2F;MCU to build with. Now imagine your suppliers hit a chip shortage and you can&#x27;t use that chip, what do you? Sit back and wait for 6 months? What Mongoose OS allows you to do is write your code once and run it on multiple embedded platforms, you would just select another MCU, maybe make some minor modification to the pinouts, flash the firmware and BAM, you are back in business.  Not to mention the fact that you have standard interfaces across all devices, MCUs, etc. It just makes development so much simpler.<p>Not only that, but you now have to manage potentially hundreds of thousands of devices (or millions if your product is really successful). What do you? How do you handle firmware updates? How do you track status of all those devices? How do you do customer support without a debug interface, well the enterprise offering (or something like AWS IOT) will help you manage that process and make your life a whole lot easier.<p>Now on the topic of why mJS vs. Python and a mix of C. You have to understand that embedded development is often <i>EXTREMELY</i> resource constrained. mJS fits into ~25K of flash space and less than 1K of RAM. This is awesome. It affords you the smallest possible functionality with the greatest possible flexibility. Write your logic in js and then call C for anything more critical&#x2F;performance.<p>I asked one of the team members and basically what he said was (I paraphrase) that mixing C with a scripting language is a pretty production ready solution. Obviously its preferable to write the critical pieces in C and then the higher level logic in the higher level language. It would be ideal if you could have type safety and compile-time checks in the high-level language. The ideal language to write logic in would be Go, and Go 2 promises to have a smaller runtime&#x2F;footprint so hopefully one day that will be a possibility.<p>In terms of everyone else talking about how the project is positioning itself, well let&#x27;s just say that marketing is a work in progress ;)