Google launches developer preview of Android Things
techcrunch.com
techcrunch.com
And joy oh joy, another Google-made API to use. You can feel me bursting with joy at this prospect. They are of such good quality.
I guess automatic updates are sweet.
https://developers.google.com/weave/guides/overview/what-is-...
Based on these two links (including the parent), it wouldn't surprise me if a Google Weave API was soon exposed on Android Things.
Sadly I don't know enough about hardware economics to say whether hosting a whole OS is crazy or not, but we've been trading off CPU time for less developer time in every other area of development, so I don't see why it would be different here. To the extent that the OS itself is not what is causing you problems, you can keep optimising your app code as you go and release on cheaper and cheaper hardware if you want.
Not a tonne of benefits, but not a tonne of costs either. I'm sure Samsung won't use this, but this might be good for projects just getting off the ground.
Most chips will use an RTOS for the timing guarantees, and they generally provide better power resilience than other OS's.
I've been tinkering with the ESP8266 and it's got 64k RAM and that seems enough to get a TCP/IP stack, WiFi and even a simple web server.
So unless you are mass producing and need to save each cent per unit, the comfort of using something more productive will always win out in total project costs (hardware cost + development time).
This is reaching levels of absurdity nowadays. I mean, Android / Android Studio and "productive", compared on how you work with ESP8266? With NodeMCU, all you need is simple Lua, few console commands and a text editor. We're replacing that with a huge cow Android Studio is, shit ton more of commands and complexity need to operate it, and what?
Now each new toaster, instead of shipping an uC, will ship a whole PC inside? :/.
Given the programming languages we already could use on MS-DOS, both those chips are quite good.
However, I bet Google is trying to put Android into those areas that are now moving from C and C++ to Java.
This is the same game currently being played in HPT, it is cheaper to get Java developers, even with the increased hardware costs, than to keep writing trading systems in pure C++. Hence the pressure Oracle has got into improving Java's story in regards to AOT and value types.
So if a business is just going to deploy a couple of units, the difference between $15.15 (ESP8266) and $39.95 (Raspberry PI 3) might not be significant, when adding the salaries and respective development costs on top.
Of course, the best approach for those that care about Java and IoT is to just use a plain GNU/Linux distribution like Yocto and standard Embedded Java, instead of Android Java fork.
But overall I agree with your dismay.
It's just that using 512 MB RAM and a quad-core processor for something as simple as a light switch just seems to be so very wasteful.
That is what people asked for, apparently.
The initial plan for Brillo was to replicate some of the Android frameworks in C++.
"We incorporated the feedback from Project Brillo to include familiar tools such as Android Studio, the Android Software Development Kit (SDK), Google Play Services, and Google Cloud Platform."
https://android-developers.googleblog.com/2016/12/announcing...
That usually involves adding touchscreen LCD.
Once you add LCD, you want nice graphics, animations etc. While you can use microcontrollers for low-res LCDs, when you get past, say 640x480px resolution, due to increasing memory and CPU requirements it often makes sense to go with system-on-chip solution running high-level OS.
The existing libs/frameworks to create nice looking, polished UIs for embedded Linux devices are not as easy to use, well understood and having large base of developers as Android is.
So this leaves device manufacturers seriously considering Android. Working on software stack directly with SoC manufacturers is PITA (although they want you to buy chips from them, they don't want to spend time on support), so having a flavour of Android geared towards embedded devices is a good value proposition from Google.
That said, you don't have to use Android Things. I guess it's more a case of "if you have a system that runs Linux anyway, why not use Android Things?".
It is super sad that Mozilla decided to leave this space though (even if trying to pivot FirefoxOS was nothing but trying to buy time). Wish there was a less insidious company trying to get into all my devices.
Also, why "Weave" instead of just using Thread? ( https://en.wikipedia.org/wiki/Thread_(network_protocol) )
[EDIT] - It looks like Weave IS built on Thread, though it's a little sad that it took me so long to figure it out:
https://www.silabs.com/products/wireless/Pages/nest-weave-th...
My knowledge of the Thread Group's management/scheme layout was lacking, it looks like it's INTENDED that thread is meant to be below one layer of abstraction, managed by different vendors (sillicon labs, nxp, etc)
[EDIT] After spending some time looking at Ubuntu Core... is it just a smaller Ubuntu distro + managed updates?
I do like the "snap store" concept... marketing jargon aside, it seems like Canonical is paying attention to both developer and user ergonomics more than ever
[EDIT2] Ubuntu core & snapcraft.io are pretty exciting
Mozilla is working on IoT products and an IoT platform based on the Web of Things.
On that note i seem to recall them working on a small web server and auto-discovery system that allowed any mobile device to share something. To me that seems like the perfect IoT starting point, as now you do not need an app for every damn device.
https://hacks.mozilla.org/2016/09/flyweb-pure-web-cross-devi...
Unfortunately, I'm a little wary of trusting mozilla to support their groundbreaking/interesting-to-developer projects anymore (for better or for worse, many people applaud their renewed focus on Firefox)
Sounds like a call for a shameless plug! We have recently released resinOS[1] as a stand-alone OS after a few years of development and production deployments on resin.io[2] connected devices.
[1]: https://resinos.io [2]: https://resin.io
I can't seem to find a license anywhere. It does seem to include access to some Google services that the open source android libraries do not: http://i.imgur.com/IEZYLwN.png
With this model at least you're not part of botnet for sale, so that's a good thing.
If you want to avoid state actors you have to live the lifestyle of Stalman or something similar.
Thing is though that on ChromeOS, there is a core part that never gets updated. This is why only certain newer Chromebooks could get Android app support. Because the way they implemented it required a minimum Linux kernel version.
And over on the Android side you still have the issue of OEM and carrier meddling in the update process.
So i fear that this platform will be beset with similar issues once it starts to spread beyond the realm of enthusiast dev boards.
It's possible to update kernels in ChromeOS (there are A/B partitions for them just like for pretty much everything else). The main question is how much effort should be invested in bringing "ancient" (in computer time) SoCs up to speed to support a use case (Android) they might not be powerful enough for (both CPU speed and memory availability).
After all, the SoCs in use are much the same ones that are powering said Android devices already. The overhead of the ChromeOS addition should be minimal.
Also, there might be additional requirements for the GPU - all that map-Android-display-to-Wayland stuff that is used to get Android output into Chrome OS windows requires a bunch of capabilities that aren't necessarily efficiently implemented on older SoCs. Rendering to offscreen buffers is a feature that GPU designers provided and improved bit-by-bit and only with lots of market pressure.
A couple hundred hours of work to bring the kernel forward (and test that it doesn't introduce regressions) for a feature that will only frustrate users (because it's there, just not practically usable) may not be a good investment.
It's great that they've got something for IoT, but I wouldn't want to build anything serious with this yet.
Is the pro that you get to use Java with a (hopefully) friendly API vs writing in C or C++ as in the old days?
For what we do at my workplace this is a godsend. We design installations for retail environments that need to have very rich interfaces. For us it's not MCU vs Android, it's embedded PC vs Android hardware.
We were already doing similar things with stock Android except we had to use custom boards interfacing over USB to do anything involving sensors to stay somewhat free from specific hardware.
We were running into limitations in Android that centered around the fact that it is targeting consumer devices first and foremost. Android 6 brought COSU mode, but it still showed signs of the steady march towards a more locked down Android.
Besides the pro of supporting our usecase in a first class manner, having access to the Android UI framework or a web browser is big for those complex interfaces.
The productivity gains vs trying to build up that stack from a bare ARM MCU are immeasurable in the literal sense (a separate company contracted to do something like that would probably have more employees than we currently have working on software)
And of course, being able to hire Android devs and take advantage of the ecosystem doesn't hurt.
I do not want to let you down, however, and will provide an equally inflammatory remark: We do know that Apple will continue to build walls around Homekit making it virtually useless to anyone outside the already fortified walls of iOS!
If you want to offer a cloudy service on top of that, I'll buy your cloudy-service box which offers to do that, but it better be using the same API to control those devices because maybe I don't want your cloudy box and want to integrate them with vendor B's devices or vendor C's + some homebrew stuff.
What happened to Brillo? Why start a new project with a new name instead of just making Brillo 2.0? Should I invest anything in this or will they just drop it again?
It combines Google’s earlier efforts around Brillo (which was also Android-based, but never saw any major uptake from developers) with its Android developer tools like Android Studio, the Android SDK, Google Play Services and Google’s cloud computing services. Support for Weave, Google’s IoT communications platform that (together with Brillo) makes up Google’s answer to Apple’s HomeKit, is on the roadmap and will come in a later developer preview
That's crazy, if true. An IoT communication protocol shouldn't rely on Google or any other company to work. Imagine if your Wi-Fi router only worked if Samsung got to collect all the data that passes through it.
This sounds even worse than when people complained that in some cases data from AMP pages would go through Google. At least then developers could still use the open source independent version of AMP.
This is another step beyond that, where your light bulbs have to phone home to Google and to their manufacturer.