Discovering a new technology is somehow like meeting a new friend. And like friends, some technology may just pass by, some are here to last long. When Project Flogo was first announced at TIBCO NOW back in May 2016, it came with a lot of promises:
- Very lightweight, enabling deployment on small edge IoT devices and gateways
- Easy development with a graphical designer and debugger
- And last, but not least, Open Source
Some detailed content has now been published in the TIBCO Community, so that you can get a better grasp at what Project Flogo is and can do.
Good friendship cannot be based on immediate feelings, and a deeper knowledge is required to establish trust. Project Flogo is based on Go language (golang). To be honest, I was a bit concerned as I did not know much about Go language. Thus, my first initiative was to learn and understand more about Go.
In a nutshell, I found out that Go is an easy, readable, modern language with a computing efficiency closed to C/C++. It is native, does not depend on any framework, and can be deployed easily as a single binary.
Outside of technicals, one major aspect of any programming language is its adoption level and the size of its community. And I was happily surprised to realize that it was much larger than I anticipated, and is growing. I did several searches to find re-usable packages for integration, and I consistently found a few packages ready to use.
Go language is actually being used by more and more of the top innovative software companies like Uber. Then came the moment of truth: experiencing my first application development with Project Flogo.
I used a Raspberry PI and did a bit of simple electronic wiring to connect a LED and a temperature sensor to my PI. I had the ground ready to build my test application:
- Monitor the temperature (input trigger)
- When and only when the temperature was getting above a threshold (limiting traffic from the edge):
- Light up the LED (acting back locally within the edge)
- Raise up an Alert (linking to cloud on meaningful events)
- Keep track of alert situation to avoid spamming and clear the alert when appropriate (local stateful processing at the edge)
By the way, one note on Raspberry PI: I chose it because I had it. Raspberry PI has clearly become a significant processing horse, which can easily run more heavyweight Java frameworks. It is clear that, with its few MBs footprint, Project Flogo is also targeted for much smaller platforms, even down to the Cortex M0 as an ultimate goal. This will certainly be part of my next round of experiments.
I did try both Project FloGo development web UI, and the CLI Interface.
The first important observation is that you don’t need to know Go language to use Project Flogo. As long as you use the Project Flogo triggers (input event channels) and activities (function modules) available in the github community, you just integrate and configure them to make up your app. With CLI, you write up JSON config files, and, with the web UI, visual flow creation and debugging convey a great developer experience.
I could have created my application fully with zero development, but decided to create a custom activity to assess extension capabilities. And again, I was nicely amazed. I quickly found an open source package to send notifications through PushOver, and just had to write a few lines of code validated in a few hours, thanks to both the simplicity and readability of Go language, and the Project Flogo helpers, creating automatically the right stubs to insert my activity code.
Finally, deployment to the Raspberry PI was stunningly easy: no pre-requisite to install, just one binary file to copy and run.
|As you can see, I fully adopted Flynn, the cute Project FloGo‘s mascot, as my new friend. Although he’s still very young and will still mature over time, he is already full of the talents required to raise up over the IoT fray.|