LabVIEW NXG is dead, long live LabVIEW!
I would debate whether it is a good idea for me to write this post for several reasons (it's not the original goal of this blog after all). I also believe a blog is a place to express oneself, and last week might be marked with a red X in NI's and the LabVIEW community's history.
As you may know, NI declared this week that they will stop any LabVIEW NXG development after LV NXG 5.1 to be released next year. This led me to reflect the choices NI has made in the past decade.
Disclaimer: This article does not aim at defending nor attacking NI, NXG and LabVIEW. I'll be simply exposing my opinion based on some facts and my personal experience.
A long yet short journey
NXG has always been a thing ever since I started working at NI, 10 years ago. A small team was working on it at the time. One of their first achievement was the web UI builder, an interesting project which got... dismissed about 2 years after its release. Then NXG gained a LOT more focus internally, and ended up monopolizing more than 80% of the LabVIEW R&D teams. 2017 made history as LV NXG 1.0 came out as beta before being released to the world the same year. Most of you know the rest of the story: 5 versions and 4 years later the product will now being discontinued.
During the pre-release years, a few things worth mentioning now happened:
- Most of the LabVIEW community knew LabVIEW was going to be revamped. NXG was famous years before it came out even if people would not know its name nor its features (except the sadly famous "It will zoom!!!"). This is mostly the result of NI poorly communicating every now and then about this change to avoid confessing the LabVIEW IDE has been sick for years.
- Yet, hardly any information about this brand new IDE had filtered. This is actually smart and avoids blowing out the positive effect of a major change/release announcement.
- From what I can tell, the R&D mostly ignored user inputs for years to lead their vision. It's only in 2012 and 2013 that the users truly started being listened, with the wide"Voice of the Customer" initiative (a massive product feedback from partners, architects and the worldwide support teams) and the Idea Exchange forums. In that context, it wouldn't be surprising if the base vision and technical choices that made NXG early in the days were flawed.
Designing a system is a challenge. Designing a product is an adventure. Designing an IDE is something else. I will never second guess people developing a language or an IDE. There is so much as stake: usability, user experience, features, extensibility, performance...
It feels like NXG was designed in this specific order:
- Usability: NXG was primarily (but has remained) designed for non-programmers, a common ground with the first LabVIEW versions. And to me, it totally succeeds at it.
- User experience: Yes it's pretty. Most of the time, finding what you are searching for (when it exists...) is easy. Tutorials, the window layout... Great stuff out there.
- Features: While there are fantastic features in NXG, I was personally about 20% sure whether I was going to find everything I needed for a given application in NXG. Even with the continuous addition of new features, NXG has still been way behind our good ol' LabVIEW for many core programming tasks (VI Server? Easy integration and customization when building stand-alone apps/installers?...)
- Extensibility: good luck with that. While some great plugins have been released by some partners and educated users, the C# framework used to extend NXG is scary. I do have (basic) C# skills and back in the day I had to give up after the Hello World extension sample. Hopefully the framework has improved since 2.1 when I stumbled upon this bad boy.
- Performance: LabVIEW "CurrentGen" is not the fastest beast around, and unfortunately NXG isn't anywhere close to meeting its older brother's landmarks. Navigating the IDE is excrutiatingly long, the execution speed was (is?) terrible. We cannot cope with an IDE that takes half a second of lag to drop a function or connect two structures. There again, we can see the weight of the technologies initially used to develop the IDE.
With all that in mind, I'm dazzled by all the developments done since 1.0 compared to what was achieved before. There are plenty of stunning ideas (HTML VIs, hardware integration, documentation...), things LabVIEW needs today. Things that, hopefully, will be moved from NXG to LabVIEW like a few minor improvements did in the last couple years. They promised us after all.
Now, NI is a company that makes mistakes, like most. What makes NI a bit different and probably stronger is that they can aknowledge that. Even when the decision is about discontinuing a hundreds of years of human effort product. Bravo for that.
This is 2020 ya know...
What's next for us and for LabVIEW? From where I stand now, I have no clue. I can hope for a few things though. I did say it, LabVIEW is a sick product. Maintaining an IDE and allow designing modern UIs with that C++ core is going to be harder and harder. Allowing a deep, programmatic extension of the IDE and the language is one of the keys that makes LabVIEW so special and that made NXG fail so hard. Paying thousands of dollars for an IDE in 2020, as awesome as it is, is a guarantee for failure. These are times for paid add-ons or specialized toolkits, and for small subscription fees. LabVIEW cannot stand a chance against Visual Studio (free since 2013!) or Pycharm if the sales strategy doesn't follow today's reality. The Community Edition was a step in the right direction, and many more will be needed before we can proudly celebrate the 50th LabVIEW birthday. Yes after all this wall of text I still believe we will be discussing G in 2036, hang in there!
LabVIEW NXG is dead, long live LabVIEW!