Why Eclipse IoT Needs Packages
With almost 40 Eclipse Internet of Things (IoT) projects to choose from, developers have the flexibility to mix and match the specific projects that are ideal for their IoT application strategies and goals. But, all of this flexibility and choice comes with some heavy costs for developers.
Here are just a few of the many reasons the Eclipse IoT community needs to focus on creating packages that make it faster and easier for IoT application developers to find the open source code they need and jump-start application development.
Open Source Projects Are Critical for IoT
The fact that there are around 40 contributed Eclipse IoT projects highlights how important developers believe open source code is for IoT applications. Now, it’s time for the Eclipse IoT community to help developers make better use of the projects that have been submitted so far, drive widespread adoption of Eclipse IoT projects, and encourage additional submissions.
With open source IoT projects, developers can avoid tying their applications to a single vendor’s IoT technology and strategy. While vendor-specific solutions might give developers what they need today, locking in to the vendor’s approach over the long-term can be restrictive and risky. APIs can change, prices can increase, and roadmaps may no longer align with the way the application needs to evolve.
Locking in to a specific vendor also typically locks developers into cloud-based solutions. But, many IoT solutions require on-premises deployments where each application component runs in the same environment as the end devices. Manufacturing facilities that leverage IoT applications are a prime example. It’s not unusual for these facilities to rely exclusively on LAN connections to enable IoT applications. Developers must have access to IoT technologies their customers can deploy anywhere, and fully operate and control themselves.
Development time and budget also come into play. It often doesn’t make sense for developers to create all of the application functionality themselves. For example, most IoT applications include a connectivity layer that provides data from sensors and devices to a back-end system for analysis. This functionality is mandatory, but it’s not a differentiator or a unique selling point. When developers can reuse open source code for this type of lower level functionality, they can focus on the higher-level layers where they add more value while saving time and money.
There Is No Grand Design to Today’s IoT Projects
Today, there is no alignment among the contributed projects. It’s simply a collection of IoT projects that were started by individuals who were working to solve a particular problem and wanted to share the results of their efforts with others.
The person who started one project usually had no involvement with, or knowledge of, other IoT projects. Projects are in varying states of development, and they target a wide variety of issues. They are not integrated with one another, and not necessarily even compatible for use in the same application. In some cases, multiple projects solve similar problems, but within the context of a specific application, so each one solves the problem in a different way.
Unless You’re Already an IoT Expert, It’s Overwhelming
Depending on the developer’s level of expertise and experience with IoT applications, it can be overwhelming to sort through a long list of projects whose purpose they don’t understand and can’t quickly grasp. The unfortunate reality is that only highly experienced IoT application developers will be able to quickly and easily determine which projects fit into which layer of the application architecture and which projects are the best choice for a particular functionality.
A large part of the problem is that projects are primarily described by the technical capabilities they provide. This makes it difficult for developers who are new to the IoT application domain to determine how and where each project fits into an IoT application architecture — despite their programming knowledge and previous experience. It’s not that IoT applications are harder to understand, they just require a different set of knowledge.
For example, a developer with a strong background in enterprise applications will already have a good understanding of vertical scalability. However, if that same developer is now tasked with developing a cloud-based IoT application, it may be difficult for them to immediately understand how horizontal scalability can be achieved in the context of cloud-related IoT projects because that’s not part of their past experience.
The Eclipse IoT homepage provides a couple of ways to filter and sort projects, but again, developers must already understand every level in an IoT architecture and know what they’re looking for before they start. There’s no point in filtering by devices, gateways, or cloud stacks if you don’t know whether or why you would need the functionality. For example, to find the right gateway project, a developer must already know:
- The constraints that using a gateway typically imposes
- Why a gateway is the right choice for the application versus implementing the same functionality on the back end in the cloud
Today, there’s no real shortcut around the need to take a deep dive into the documentation for projects to better understand what they really do and whether they’re a good fit for a particular IoT application. The two Open Testbeds can be used as examples of how particular IoT projects can be combined in IoT applications. And, it’s worth searching the web to see whether anyone else has developed a similar IoT application using Eclipse IoT projects, but that’s about it.
Integration Is a Big Task
Once individual IoT projects are selected, integrating them is another significant and time-consuming task. Developers must determine the external behaviors that are exposed in each project, learn the APIs, and figure how much mapping is required between projects. More often than not, developers must also understand the internal workings of projects to successfully integrate them.
So, while developers can use Eclipse IoT projects to save the time required to implement the functionality themselves, they will almost certainly spend considerable time and effort on integration tasks.
Packages Significantly Lower Barrier to Entry
The challenges of getting started with Eclipse IoT projects today create a high barrier to entry and won’t help us improve adoption of open source IoT technologies.
The good news is the Eclipse IoT community has recognized the challenges with the current situation and has started a packages project that will simplify developers’ experience and make it much easier to choose and use Eclipse IoT projects.
Get More Information
For a closer look at the packages project and our goals for improving Eclipse IoT, be sure to read Jens Reimann’s article in this newsletter.
And, as always, I would encourage you to get involved and share your ideas and expertise so together we can realize the potential of open source IoT projects at the Eclipse Foundation.