In a recent info-lv post, a user was commented on the stability of different versions of LabVIEW and added this:
- An annual release improves stability – In the past, we’ve gotten locked into huge development efforts with long cycles – like LabVIEW 8.0 – which has resulted in some stability challenges. The fact is, LabVIEW 8.0 was such a huge release with so many features – many of which involved some very deep and fundamental areas of the product - that we took a hit. 8.0 was a long development cycle that was very painful to get out (I’m sure you’ve all been on “deathmarch” projects as well). With a team as big and complex with as many dependencies as we have with LabVIEW, it’s almost impossible to operate with open-ended schedules. What tends to happen when you do that is that some particularly important feature becomes the critical path, and while we are finishing that feature, everyone else naturally starts to squeeze in new things. As new things get added, we have to go back and redo some testing and validation. A vicious cycle ensues. The longer testing cycle means new things can get added… etc. I think this is one of the things that impacted our 8.0 quality. Not to mention the fact that when there are THAT many new features added to the product, its very difficult for our users (and our marketing department) to fully understand and take advantage of them.
- Annual releases are critical for alignment across all of our internal (and external) constituents. With an annual release, we now have moved to a much more predictable schedule. Admittedly, we’ve added a little overhead in testing and releasing every year. But we removed a lot of the unknowns that we struggled with in the past.
We no longer have these exchanges:
Marketing: “How’s the new version coming?”
R&D: “Great”
Marketing: “Is it going to be ready by NIWeek? We need to prime the pump before then?”
R&D: “I’ll let you know when its ready?”
Marketing: “hmmm… We better come up with a backup plan for the keynote”All joking aside, we now have a standard schedule and the train leaves the station every year at about the same time. The developers know that key features need to get slotted into a release- if they miss the train, they know the next one is coming around a year later. When we work on larger, multiyear development efforts, we do need to manage the rollout in a more sophisticated way – at times, we test and ship code that is a foundational element for something that users won’t take advantage of until the following release – we just have to roll it out piecemeal that way.
- We need a regular release schedule to accomodate the diversity of the LabVIEW platform components. Different parts of LabVIEW have to move at different speeds. For LabVIEW users who are using GPIB instruments only, they probably can wait two or three years for new features to the environment. For less mature parts of LabVIEW, such as LabVIEW Real-Time or FPGA, we have to move pretty quick to continue closing the gaps we have there in functionality, usability, and hardware support. We are making much bigger strides there on an annual basis.
- Customers prefer knowing our release schedule - We haven’t explicitly communicated to our customers our strategy shift to annual releases – we wanted to get through a few of them to see how it went before proclaiming success. However, I have found that many of our customers appreciate knowing the basic plan (new features followed by maintenance releases) on our side to help them manage their own development strategy. A completely different topic is how and when customers upgrade their LabVIEW-built applications. The fact is that there are many factors that go into this decision. Sometimes, there are key features they want to take advantage of, but in most cases, the reason customers upgrade is driven by risk, timing, and hardware issues on their side. This is a known area that we are focusing some resources to help, but I think smaller, more regular releases will ultimately help smooth this process – but that is a different blog post.
In all of this, there are small set of requirements that we work very hard to maintain and improve upon for every release:
- Every version of LabVIEW needs to be stable
- Upgrading from one version to another should be a smooth process – we should not break your code if at all possible
- Everything should work together when you move to a new version – when you upgrade, you need validated versions of all the toolkits and modules as well (the new DVD in 8.6 goes a long way in simplifying that issue).


January 20, 2009 at 12:04 pm |
I’ve been preparing for an upgrade from LabVIEW 7.0 to 8.6 and TestStand 3.0 to 4.1 for about four months. I’ve been reading release notes, upgrading drivers and libraries, then performing ‘mock’ upgrades of our Test Program Sets. We identified a bug in TestStand that was fixed in the recent release of 4.1.1. We have one or two concerns with problems in 8.6 that we hope will be addressed in 8.6.?.
The nice thing about a regular cycle of upgrades and fixes is we can plan how and when to perform upgrades. I’m HOPING that the 8.6.? release happens soon (before I let the development team loose) , but we’ve done our homework and can live with 8.6 if necessary.
We had a discussion during lunch yesterday about our release process, and I returned to my office and read this ‘Rands In Repose’ blog entry about engineers and when things are considered ‘done’. I believe that NI is fairly successful at balancing quality and ‘done’.
http://www.randsinrepose.com/archives/2009/01/18/the_larry_test.html
January 22, 2009 at 9:51 pm |
John, I appreciate your willingness and honesty in discussing this issue. The post from Info-LabVIEW that you originally quotes was mine; and I honestly didn’t think that anyone from NI would even read it; let alone take it to heart and want to openly discuss it. Thank you for this open dialog opportunity.
Several years ago at NIWeek I had discussed these issues at length with Andy Krupp & Pete Zogas. At that time I had pleaded for them to return to producing release notes for each version that identified bugs that had been fixed. And I applaud NI for following through and including the bug fix list with each version of LV.
I welcome new features in LabVIEW. I find may of them are very well thought out and implemented, and I do understand the complexities for producing and testing a new release. But at the same time I feel the balance of stability/reliability/compatibility vs. new features needs to sway towards the former.
I’m sure we can both come up with plenty of examples of new features which were released and honestly not ready for prime-time. When I personally come across this; I hold off on using the new feature until the next release or later; and hope that the release notes for the subsequent version lists this bug as fixed. In many ways; I don’t believe this is the right way to release a new feature; because it becomes obvious that it wasn’t thoroughly tested before being released. I understand why; and can live with these issues; but I see other coworkers not as forgiving; it leaves NI with a black mark. But what I cannot live with is when a new release doesn’t resolve fundamental long standing issues; or creates new ones. When I see this happen; it appears that it was a trade-off to push the product out the door by a deadline. What can I mention specifically; typedefs. These were introduced way back in LV5 possibly even in LV4; and really didn’t work properly until V7.1. Now in LV8, 8.2, 8.5 & 8.5.1 I’ve seen some typedef related anomalies that appear to be an artifact of the LV project concept. More specifically sharing a typedef between multiple targets. In my mind I can’t see a reason why typedefs didn’t work properly until 7.1. 6.0 & 7.0 releases and those between often crashed while dealing with complex typedefs. I could go on; but I’m sure there is an internal CAR list that’s more complete.
I know that the developers are aware of many of these issues based on my conversations with them at NIWeek. When I find the right person to talk to and explain the issue; I usually get an “oh ya, I’ve seen this before…” response; “when you do this…never use….”. And when digging deeper into why it was released; the answer is almost always the same; deadlines.
While these new releases are going on; as a customer; I often get caught up in the madness. I usually need some specific hardware which is only supported by version X of the drivers; which only supports LabVIEW version Y; and thus you almost have no choice but to go to a new release when starting on a new project; and along with it you roll the dice on stability. So after all this rant; all I ask is for a better balance of stability, reliability, bug fixes, etc. on future releases of LabVIEW.
Thanks
Milan
January 23, 2009 at 6:10 am |
Milan,
Thanks for jumping on board with more thoughts. I actually copied some of your comments and used them in some powerpoint slides as well to make some points here internally at NI – but I didn’t copy your name and deleted the info-lv digest from my mail (just trying to keep the names of the innocent hidden!).
I am currently interviewing our LabVIEW R&D manager who owns the testing and bug-reporting process so I can share how that process works for you guys on a future blog. But fundamentally, I agree with you that every software package – including LabVIEW – will at times have features get out that are “not quite ready” – I would argue that it is more often an issue with completeness rather than outright instability – but everyone has their own definition of a bug.
The real issue is the testing matrix for LabVIEW – I would challenge anyone to come up with a more difficult set of factors in terms of size of the application, number of different addons, different platforms, and OSes supported. It’s huge. We actually do have a tremendous focus on testing and I think do a pretty good job. That’s why we also have to end support for OS flavors every now and then, just to make these testing matrices manageable. LabVIEW probably runs on Windows 98, but we don’t test for it there anymore, so we can no longer state that we officially support it. With all of this well known way ahead of time, the looming deadline becomes a little less of an issue. You can set your calendar for it every year, and if you miss it, its not so bad because you only have a year to wait for the next release. In the past, if you missed a release, it felt like the end of the world, so we’d fight like hell to get everything we could into the product. That’s not the issue anymore.
Drivers and hardware compatibility is whole blog post unto itself – for now, let’s not get into that, but you do hit the nail on the head. That is the big issue more often than the core LabVIEW environment itself.
You mentioned a conversation with Pete Zogas. Pete is my boss, and I remember when he came to me after what must have been the conversation you had – he was pushing me on this topic as well. So kudos to him for sharing the voice of the customer. It’s only taken us (me) two years to try to explain to the user community the same answer I gave Pete – our shift to releasing more often is the best thing we can do to maintain and improve our stability while we are rolling out new features. Hopefully we are proving that when you look at 8.6 vs 8.5 vs 8.2, and 8.0.
January 23, 2009 at 6:19 am |
Philip,
Great link to the Larry Test. At NI, we have all kinds of scientific ways to measure stability when we are buttoning up the bug fixes for final release candidates. In addition to all that, we have what I would call the Jon Bellin test – our VP of Software R&D who possesses the most sensitive BS filter I’ve ever seen (I should know – he has applied it to me many times over the years). You will probably never see him on an NIWeek keynote stage, but he is kind of like the Winston Wolf character from Pulp Fiction (“I solve problems” The guy that cleans up the mess made when Travolta accidentally shoots the guy). In the most nasty, low-level or huge projects, he can come in and help steer the ship to safety. I remember one of his mantras he told me years ago was “Focus! Focus! Focus!” He’s a maniac on quality (in a good way).
January 23, 2009 at 3:48 pm |
John,
I appreciate the effort by NI as a whole in taking the whole bug / stability issue seriously and working to resolve it. And ultimately I agree; having regularly scheduled releases is probably the way to go; as long as the balance of stability vs. new features is considered.
I’ve participated in many of the beta releases in the past; and have to apologize for not doing a better job in identifying some of these bugs. Unfortunately when I receive a beta copy; I basically play with it, trying out new features, etc. My work deadlines just won’t allow me to consider developing a full application or continuing the development of such an app in a beta release. There are just too many risks associated with this action for me. But I realize that doing so would probably help to identify issues early on. I suspect many of the beta testers are in a similar situation. I know NI does a thorough enough test and validation on their software that really fundamental bugs have long been squashed even before a beta release.
That being said; the issues that really need to be addressed just can’t all be caught by internal or customer testing no matter how thorough. This leads me to make a suggestion about interactive bug reporting within the LV environment. I know when LV crashes; there is the opportunity to send a bug report; which I have done a few times; but its unclear what will be done about it and some feedback mechanism for resolution to the user doesn’t seem to exist. Let me propose some type of interactive network based feedback system that can be invoked anytime via help menu. This bug reporting / help system could be integrated with your web site allowing one to see the progress / verification / actions taken on their issue. A support request number would automatically be generated; as the s/n of the software and contact information would all be known. This of course would have to work through a corporate firewall. I realize that some users will end up using this for asking about some basic LV questions; which may be leveraged to some type of interactive support. But I would like to use this type of reporting system to track down highly intermittent and just plain weird issues. It will probably be best if I give you a specific example.
In LV8.5.1 on XP; sometimes when I open a project by double clicking on it in a windows file list with LabVIEW already open; the project explorer window will appear; my project tree and items all appear normally; all as expected; BUT; I cannot interact with any of the project items. I cannot open any directories; targets, or LV code. The menu one the project explorer window seems to work and I can move the window around; but it’s basically dead. If I now close the project explorer window and then double click on the very same project in my windows file list; the project explorer comes up and works perfectly as expected. This issue isn’t devastating, but quite maddening at times. If I had to put a frequency value on this issue; I would have to guess that it’s about 1 in 20 or 30 times that I open a project. So a little rare, but often enough to throw out a few curse words.
In my experience with NI support; and understandably; there is just no point in even reporting such an issue; as the cause and repeatability are all unknown factors. I know it happens and it drives me crazy; and I’ll even call it a bug; but I really can’t do anything about it. I can’t believe support would even write this up as an issue; they probably would think the problem is with the user, because of course when they do the same thing; their projects always open as expected. So now my question to you is, can some type of bug report be filed within LabVIEW which hasn’t crashed; but will allow you to recover the necessary context, LabVIEW state and whatever internal information you need to see what is causing such behavior? The user can & should also file some description of the issue, allow for some security settings to enable screen snapshots / code snippets to be sent along with the report.
If this type of data is collected at a mass scale and stored in a database; I believe your ability to identify and resolve these issues would be significantly improved. The key would be knowing what to extract from the reported system to enable R&D to determine exactly what happened.
Sorry for the long rambling message, but I just wanted to get this all out in the open.
Milan
January 28, 2009 at 10:14 pm |
Follow up post to this thread here: http://pasquarette.wordpress.com/2009/01/28/guest-post-from-labview-rd-director-david-fuller-stability-vs-annual-releases-chapter-2/
May 14, 2009 at 11:53 pm |
Stability vs. Innovation.
My customers need to keep using the same version of LabView for many years. One customer on LV version 6.01 expects his system to run for 15 more years. Another customer uses LV 7.0 has a large amount of custom LabView software that he simply can’t afford to upgrade and validate.
I understand that National Instruments needs to innovate. That is one of the reasons that National Instruments is the great company that it is today. But stability is more important than innovation to many customers.
I sold a customer on LabView 8.0 (now at 8.0.1) and told him it was the latest and greatest, as the NI rep told me. We built and certified it. Now when seeking help, I often hear that version 8 is a bad version. I spent days struggling with a type def and even more time on a BSOD issue that seems to be version related. This customer recently asked me if there is anything better than LabView available. If I could do it over (not an option) I would have used version 7.
Regular long-term stable releases of LabView and toolkits would be a solution for this problem. These would be versions that have most of the bugs eliminated. Perhaps every 3 or 4 years, one development cycle could be dedicated to a long-term stable release. This offers a nice compromise between stability and innovation.
On the releases between the stable releases you could focus on innovation. Those users who want the latest and greatest or want a newly introduced feature could use these versions and those who need stability could use the long-term releases.
Despite my ranting here, I still believe National Instruments has the best programming environment and hardware available. I told the customer that.
June 1, 2009 at 8:47 pm |
I have heard comments similar to Frank’s on many occassions. I have a few follow-up questions for Frank (and anyone else reading this) for clarification. Let set aside for a moment the notion of “big new feature releases” and “stable releases” for now. One of the driving factors behind our decision to move toward annual releases was the fact that LabVIEW 8.0 had so many new features, including core architectural changes, that the stability of the product suffered. We have a much more sustainable approach now based on more tightly controlled annual release processes.
When you say “One customer on LV version 6.01 expects his system to run for 15 more years”, what does that mean? LabVIEW is a development tool, so I assume that means “I built an application for my customer using LV 6.01, and they expect that application to work for 15 years.” The details behind these expectations are what is most important. For example:
- Does the customer expect to incorporate new I/O hardware or controllers into the system over the next 15 years, or is the system basically complete and working as is without any significant changes expected?
- Does the customer expect to upgrade the computer or OS version upon which the application is running over the next 15 years?
- Will you or the customer continue to develop new features for the application over the next 15 years? Bugs are usually not the issue if you are no longer adding new features.
This exact discussion is why we recently published our LabVIEW Support LifeCycle Policy in which we define our standard “support” policies for each version of LabVIEW. In a nutshell, we will make our best efforts to support a version of LabVIEW with new hardware support and technical support engineers for 4 years after release. We will fix bugs and release service packs for 1 year after release. We are now trying to understand what we need to offer specifically after this 4-year standard support window to address the kind of comments above.
Please add your thoughts on this.