From phones to call your pet to fully connected cities, IoT offers so many opportunities that only your imagination can hold you back. Whether it’s rethinking products or developing brand new innovations, the hardware development is often complex and extremely custom; ergo you need to develop a custom software to match. We don’t think so, and here’s why.
Time to Market
Let’s think a little about prototyping and the time pressure you are under during this stage. You want to build connectivity into your prototype that is cost-effective and fast. But you also need to be sure that it’s scalable and reliable for when you go into production.
Developing custom connectivity is an option you could take if you have the in-house skills and / or budget to match. Working with a third party solution will help you progress your project faster and get to market a lot faster, too.
But here’s the problem, out of the box solutions can be rigid. And since you are not a one-size-fits-all kinda company, why should you choose a one size fits all solution?
Flexible, not Custom IoT Software
So we’ve circled right back to the start. You still need to get your innovation in front of investors and out to market fast, but in-house development time is holding you back and out-of-the-box solutions feel to rigid.
If you have deep-ish pockets, you can outsource the entire development of custom connectivity for your product. And if you are ready to make that investment for development as well as future maintenance and know this bet will pay off, then it’s worth exploring the option.
We’d like to challenge you to consider flexibility rather than custom software design. Flexible software with full access to the source code, can be amended to your needs without you having to write all the code from scratch. Open source software will allow you to do exactly this. Saving you a lot of time while accessing top-notch software.
Open Source: What to Watch Out For
Not all open source software is created equal. That applies to IoT software as much as to any other area. Some applications may just be projects that die due to the developer moving on to a new project or losing interest. So here some stuff to watch out for when evaluating open source software:
1. Background Check
You need to do a background check. Go to GitHub and visit other forums to hear what other people are saying about the software you are evaluating. Also, check the release notes for regular updates. In general, you are better off going with a company-backed software rather than something built by an individual. While both may pack it in, a company is less likely to do so and should it happen, is more likely to have an exit strategy with users in mind.
Following on from the first point, you need to be sure that the software you choose is made for the scale you are going after. Check that others have used it to launch a product and that it’s running smoothly for them. Pick up the phone to some of the reference clients (if you can find them on the vendor’s site) or see if some research can help you figure out the scale of usage.
The are many open source licenses. Roughly speaking, there are two big categories: those that allow you to do whatever you want (e.g. MIT), and those that bind you to distribute your derived work under the same licensing terms (e.g. GPLv2). The latter is designed to ensure that open source software stays open, but you have to figure out whether you can afford to lose your competitive advantage by releasing the full sources of your product to the public and potentially waste business opportunities provided by you controlling the IP of your product.
If you do not want to disclose your customizations, you need to acquire a commercial license with less restrictive terms than the GPLv2. If you are serious about your product, paying an established vendor for software isn’t a bad thing. It means the company is less likely to disappear, they can afford engineers for updates as well as compiling support documentation. But do check pricing models (SaaS vs. once-off, royalty-free vs. not) and when payment is due.