Join my daily Newsletter

Subscribe to get my latest content by email.

    I respect your privacy. Unsubscribe at any time.

    preloader

    Why I dislike PlatformIO, part two

    • Friday, Dec 23, 2016
    blog-image

    Why I dislike PlatformIO, part two

    My previous blog post on PlatformIO sparked an interesting discussion with its creator. This led me to clarify my position somewhat.

    I have decided to write this follow-up with more pointed criticism of PlatformIO.

    My fundamental feeling about it is…:

    PlatformIO feels unbalanced

    This.

    PlatformIO contains tremendously useful and (even though I hate the word) innovative features. The whole remote aspect. The ease with which new platforms can be added (even though I don’t know how relevant that is in practice – platforms are rarely changed once a decision has been made).

    It has shiny things, and I’m drawn to them.

    But PlatformIO is forcing me to use more than I want.

    I want the nice uploader. I want simple on-target unit testing. I want remote target interaction.

    But what I don’t want is PlatformIO’s library manager. I might want a library manager, but if so, I’d want one that isn’t focused on embedded, but is generic to C++.

    What I don’t want is PlatformIO’s build system. I want a build system, of my team’s choice, that’s not embedded-specific.

    The IDE, while certainly nice, is kind of orthogonal to the rest of the product. It’s this odd wart on the side of PlatformIO, the rest of which is really mostly a build system.

    In their desire to be a complete, “big boy” solution (and entice customers to pay money for their professional version), they’ve thrown in features that ought to have remained separate, since they are not at all embedded-specific.

    Putting the cart before the horse

    The embedded-specific parts drag a huge lump of unrelated tooling with them.

    It would be much better, IMO, if PlatformIO focused on the strictly embedded-related aspects, and left the choice to the users otherwise.

    In order to develop complicated systems, I need my build system to be flexible.

    Especially in the embedded world, one frequently has to contend with weird third-party tools or libraries that need to be integrated somehow. I need the build system to accommodate me, and I really need to be able to use a build system I am familiar and comfortable with — I’ll have to dig around in its guts eventually anyway.

    My embedded system’s architecture might be complicated, spanning multiple devices, platforms and programming ecosystems.

    The PlatformIO approach of taking care of everything for the user runs a grave risk of unduly limiting the required flexibility.

    Conclusion

    PlatformIO is a very nice tool for advanced beginners outgrowing Arduino IDE, or for hobbyists.

    However especially for PlatformIO Plus’ proclaimed audience, that of professional embedded engineers, it’s a lopsided product. It offers interesting, modern features, but it wants to be too much, and ends up being, if not a liability, at least a hassle.

    Ivan wrote that I’m apparently not the target audience, because I’m “too professional”. While this is flattering, I think he would be ill advised to brush my criticism aside like that.

    I suspect many engineers wound be itching to try PlatformIO, if only they wouldn’t be forced to put all their eggs into this one, pretty opaque, basket.