IoT Show: EFLOW and WSL for IoT Edge development - read the full article about IoT Development, IoT Development and Internet of Things technologies from Microsoft IoT Developers on Qualified.One
>> Today, you might not know it, but its acronym day and well talk about WSL and EFLOW, E-F-L-O-W.
If you dont know what these are, definitely should tune in, if you know what they are, well talk with Terry and Craig about when to use which in your Linux development for IoT, and thats today on The IoT Show.
[MUSIC] >> Hi everyone. This is the IoT Show.
Im Olivier, your host, and today we will be talking with Terry and Craig about Linux development for the Edge.
Well, lets start with some introductions.
Hi Craig, how are you? >> Good, how are you? >> Im fantastic.
What are you doing these days with Microsoft? Whats your role? >> Im a Program Manager working on the Windows Subsystem for Linux, which allows developers to use an awesome Linux experience directly on their Windows machine.
>> Yeah, well definitely want to dig into that for sure.
Terry youve been on the show already, but how about you give a little refresh about yourself; what are you doing these days? >> Hi Oliver, I am a Senior Program Manager on the Azure IoT Edge Devices Team.
We work on both Linux and Windows, bringing Edge deployments to the Windows platform for IoT purposes.
>> Fantastic. Im glad to have both of you here.
IoT developers, when theyre building IoT Edge devices, code that should run at the Edge.
They are targeting different types of systems of devices.
Some are running Windows, some are running Linux, and they want the ease of development.
I think we in the form of WSL in one side, EFLOW on the other one, we have a lot of tools that developers can use but lets describe what these are.
Lets start with WSL.
Craig tell me more about what is WSL and put yourself in the shoes of an IoT developers, someone building 40 Edge.
>> Yeah. The WSL stands for the Windows Subsystem for Linux.
In general, allows you to have a full Linux environment on your machine.
From an end-to-end experience, what this looks like is you can go to the Microsoft store and you can download a distro like Ubuntu or Debian or Open Suse, and you can use that as your full Linux environment.
The really cool thing about WSL compared to some other solutions like dual booting or SSH into a VM or remote machine, is that its really tightly coupled with the Windows interface.
There are tools like the S-CODE remote, which allows you to have a full IDE thats running fully in a Linux environment on your Windows machine, using the regular like Visual Studio Code interface that youd normally would use.
As all we do things like allow you to have access to the GPU, you can access Linux files or Windows files from either or environment, and this just makes it a really awesome place so that you feel like all of your files are in the exact same place, no matter which tools youre using, either Windows or Linux based.
>> It sounds practical.
Ive been playing around with it.
It does really feel like you are in Windows and you still leveraging the Linux, sometimes command lines, tools, resources and so on.
Thats pretty great and I can see IoT developers being trusted in that for sure.
Terry, were not here compare, were really her to define how they compliment each other, but tell us a bit more about EFLOW.
You came on the show ready to describe what it was about.
But once again, lets have a little teaser about EFLOW that should be as long as Craigs teaser about WSL, lets try that.
>> Yeah, EFLOW is really a curated virtual machine environment where we package the Linux environment and Azure IoT Edge together.
Thats built-in ready to deploy on your Windows devices and simple provisioning to Azure IoT Edge and deployment of the Edge modules for production purposes.
Thats really the difference between the two and EFLOW is for the production side of things, for long running factory deployments. Things of that nature.
>> Sounds good. Lets try and put that into some context.
Lets talk about a scenario.
Were talking about developing, targeting Linux, whether in the form of containers, those form of apps, lets actually discuss that scenario, the developments scenario, and when you would use which at some stages of that development.
>> Yeah. I can jump in and just say that this scenario can start in WSL.
You can use WSL as a familiar environment for you to basically jump off developing your IoT scenario.
What I mean by that is you can open up Windows Terminal and get exact access to bash and do everything that you would normally do in Linux; access containers, debug and run through them and build your IoT module directly inside of WSL with an environment that youre comfortable with.
Then once youre ready to go, basically start testing this for production or start shipping just to production, EFLOW can step in.
Ill hand it over to Terry.
>> Yeah. I think you guys had a slide that actually can help us also go through that workflow. There you go.
>> Exactly. As Craig mentioned, you really start your development of your Linux application using WSL as your test environment for that application that youre building.
When youre transitioning from standard Linux container to a Docker container or actually Edge module.
Thats when you would bring in EFLOW into the mix and deploy to a real production type environment to validate what you would use on for your IoT solution.
>> If I wanted to try and summarize that, you would want to use WSL when youre building a Linux app, like generic Linux app, Linux functionality or a piece of code that is supposed to run a Linux at the end of the day in a way or another, then you would think about the packaging of that.
In the case of IoT Edge, you package into Docker containers, that would be Linux Docker containers.
EFLOW enters into the game when it comes to running on the actual machine where you can benefit from the Windows host OS with security, management features, and capabilities, but still run that Linux container youve been developing in a Linux environment basically.
>> Yes, thats right, EFLOW gives you that hybrid environment where you can take the best of both worlds.
Youve got the full Windows platform for your enterprise deployment management, and then EFLOW is running your IoT Edge modules built from Linux unchanged.
>> Nice. Ill come back to you, Craig.
But I have another one for you, Terry right here.
When it comes to packaging and creating your IoT Edge modules, you have the piece of code and then you want to make them an IoT Edge module, today if you want to do that using VSCode, for example, you would use a simulator.
My understanding of that in the future, youll be able to use EFLOW there as well as in that packaging stage, youll be able to leverage EFLOW to get even closer to the production environment.
>> Were just starting to look into that to bring EFLOW into the developer workflow in terms of deploying the Docker container directly to EFLOW, is not something that weve got available yet, but it is certainly something that we are interested in offering in the future.
>> Got it. Terry, question for you in terms off maybe differences but also more about maybe limitation that would say so when youre an IoT developer, you want to build code that accesses the hardware.
Youre on the death machine, of course, so you dont have the exact same sensors or whatnot, are there limitations to WSL when it comes to accessing hardware, lets imagine I want to put a serial connector on my PC and access that from a piece of code that Im developing using WSL, are there limitations there? Are there other things that IoT developers should think about when leveraging WSL? >> Yeah, I can feel that.
Yes for sure right now, there are limitations for IoT developers and the main one is that WSL does not yet have full USB device access, which can be a blocker.
That is something that were super interested in expanding on, and were looking ahead to do in the future to investigate that.
>> All of that. That makes sense.
I think this is the right set of people here plus our community to actually give you feedback.
Ill be very interested to work with you on that and eventually go on GitHub, have some proof concepts and see how we can move that needle forward.
I think there was also a question I had lined up about, what are the main differences, but I think we covered most of that.
Terry do you see anything else to bring up to IoT developers when it comes to the differences between WSL and EFLOW? >> Yeah. Let me first get back to your question on how to pass through capabilities.
We built some things into EFLOW to allow support for serial devices.
If youre trying to use Modbus or Canvas, that sort of thing, we do have a way to plumb those through, and weve also got a sample code available on our GitHub for transforming a USB camera into an RTSP feed over IPs, so you can do streaming with a USB connected camera.
We have the same issues that Craig is talking about, about general USB compatibility due to drivers and so forth, and pass-through of the mapping of those devices into the Linux environment.
But weve also built support for TPM in EFLOW.
We could do TPM provisioning, and also well have the ability to read from the TPM.
If youve got like private keys stored in the TPM, and you need to use those private keys in your Edge modules.
There is quite a bit of support available there.
One thing I would point out that is different and Craig, correct me if Im wrong, I believe that WSL is targeted at the desktop.
so Pro and Enterprise, however, EFLOW also support server.
We know a lot of customers that are using a Windows Server, Windows Server Core, and IoT Scenarios.
We do have support for Server in that sense for running those IoT workloads.
>> Okay, got it. Definitely were looking at WSL to develop the Linux app in the comfort of Windows.
Then looking at EFLOW as the building or bringing the ability to run a Linux module, Linux container on a Windows box, making it transparent or as seamless as possible for that piece of code.
Piece of code doesnt know its running on a Windows box, just like attacks, Interfaces API whatnot, the same way it would do on the Linux box, that makes with these containers actually totally transposable from one device to another, the OS being something that they are agnostic to.
Guys, this is awesome.
I think you are putting together a blog post that were going to link to it so thats if people want to learn more about EFLOW, WSL, how theyre used together to develop your Linux workloads on a Windows box and for a Windows box in case of a EFLOW.
Well put that link down there, aka.ms/ IoTShow/EFLOWandWSL.
Craig, Terry, thanks a lot for your time today.
I hope to see you soon on the IoT show again and everyone.
Well, thanks for tuning in. See you soon, bye.
>> Thank you.
>> Thank you.
Microsoft IoT Developers: IoT Show: EFLOW and WSL for IoT Edge development - IoT Development