Jump to content

Why is OpenG Installed to the user.lib?


Recommended Posts

Because it's not (yet????) an officially supported re-use library -- not officially supported by NI that is. But at another level you ARE right -- it should be there because it should be "adopted" by NI. Well at least that's my perspective on it.

How many here use OpenG in their commercial products? Do those who do that include the appropriate EULA in the installer for their product? What is the proper way to include OpenG in a released commercial product? I'm sure these have been responded to in the past but they are now coming up as real questions for me, given the changes at NI (like including VIPM in the startup to manage addon tools).

Any help would be appreciate, including refs to useful prior posts here on these issues. For those who are interested in what I've written most recently about this issue look at: https://decibel.ni.com/content/docs/DOC-15014#comment-17128.

Thanks.

val

Link to comment

NI is now suggesting that reusable libraries should be located in the vi.lib. I was curious why the OpenG Toolkit 4.0 is installed to the user.lib.

File and Folder Names for Integrating into LabVIEW

The main reason is compatibility with older versions, since NI has openend the 'upgrade' functionalities they use internally (open up an old 6.x file VI and you'll see what I mean). So without breaking all the software allready utilizin OpenG we cannot move the files (we could deprecate the old locations though).

And I have another perspective than NI, I've always assumed that everything inside vi.lib should be available on any LabVIEW install. This assumption alwasy told me to post add-ons into user.lib or instr.lib. So I'm in favour of the user.lib location.

Ton

Link to comment
How many here use OpenG in their commercial products?

We do.

Do those who do that include the appropriate EULA in the installer for their product?

Of course - it would be illegal not to.

What is the proper way to include OpenG in a released commercial product?

I don't understand the question.

You can find out more about BSD licensing (which is the license the majority - if not, all - of the OpenG components are releaed under) here: http://en.wikipedia....ki/BSD_licenses Each OpenG componens includes the license text, so you can know what you're up for when distributing it.

Link to comment

To the best of my knowledge (on phone so don't have VIPM fired up) all packages part of the core OpenG Library have BSD licenses except LVZIP because it leverages other code (and must inherent it's license or similar).

That document is referring to creating add-ons by anyone, I can't see anywhere it's saying offically supported by NI only if it goes in here - it's just merely a suggestion?

Anyways, there is nothing wrong with user.lib. I use it, as well as other companies, to distribute reuse libraries. I can't see the location really matters, and my opinion is the similar to Ton's wrt vi.lib.

As Ton mentioned moving would cause relinking a recompiling issues, which would be a big problem.

Btw - OpenG is a LabVIEW Tools Network Silver Certified product. Whilst not supported by NI, it has passed the above standard. :)

Link to comment

OK, to be clear (CRELF because he asked it) I was definitely NOT suggesting to not include the appropriate info if OpenG is in your code. Rather I was asking for clarification from those who do it routinely about what specific info needs to be put into my code to be fully compliant. I'll follow up on the refs -- thanks!

Jgcode, I appreciate that OpenG is Silver Certified. I didn't know but that alleviates that level of concern for me. And as we all know LAVA is the "gold standard" of highly talented, well-seasoned LV architects and aficionadi who give us all the benefits of their experience by giving us their time: and that is the single biggest gift anyone can give you.

I think if (and I really hope it's WHEN) OpenG is fully integrated into LV "officially", it should then be in vi.lib as it should be part of the default instll: ie available to all users. But that's probably just simply an IMHO kind of statement.

Link to comment
Jgcode, I appreciate that OpenG is Silver Certified. I didn't know but that alleviates that level of concern for me. And as we all know LAVA is the "gold standard" of highly talented, well-seasoned LV architects and aficionadi who give us all the benefits of their experience by giving us their time: and that is the single biggest gift anyone can give you.

Concern? OpenG is striving to conform to standards set by NI.

That should be reason for feeling relief if anything? :)

As for LAVA, whilst I fully support and agree with the above LAVA compliments, I don't think you are comparing apples with apples here, i.e. Open Source code certification, versus - help you get on the forums?

I think if (and I really hope it's WHEN) OpenG is fully integrated into LV "officially", it should then be in vi.lib as it should be part of the default instll: ie available to all users. But that's probably just simply an IMHO kind of statement.

Wouldn't really be Open Source if NI owned it and distributed it with LabVIEW!

FWIW I hope this day never comes. What I would love to see on the other hand is that if an OpenG VI was so awesome (e.g. covering a functionality gap) NI decided to include such functionality in a future version of LabVIEW (this is my personal opinion only).

I.e. OpenG influenced LabVIEW positively then that would be great, but I don't want to see them manage the entire OpenG organization!!

And it is available for everyone - simply download VIPM and away you go (Note: I appreciate that some companies cannot or do not wish to leverage such resources for internal reasons, and I have no issues with that).

The LVTN is a way for any organization to plug into LabVIEW and OpenG views certification as very important.

Anyways, I am just trying to understand your reasoning - are u able to go into details on why you would want the above?

Link to comment

Because it's not (yet????) an officially supported re-use library -- not officially supported by NI that is. But at another level you ARE right -- it should be there because it should be "adopted" by NI. Well at least that's my perspective on it.

The recent direction of NI to push VI Package Manager leads me to believe OpenG will never be integrated into LabVIEW. It seems that NI is attempting to leverage the community for extra value added toolkits and re-use code while giving credit to the toolkit developers. Many of these toolkits have "NI part numbers" but are 100% supported by partners.

Wouldn't really be Open Source if NI owned it and distributed it with LabVIEW!

FWIW I hope this day never comes. What I would love to see on the other hand is that if an OpenG VI was so awesome (e.g. covering a functionality gap) NI decided to include such functionality in a future version of LabVIEW (this is my personal opinion only).

I.e. OpenG influenced LabVIEW positively then that would be great, but I don't want to see them manage the entire OpenG organization!!

And it is available for everyone - simply download VIPM and away you go (Note: I appreciate that some companies cannot or do not wish to leverage such resources for internal reasons, and I have no issues with that).

The LVTN is a way for any organization to plug into LabVIEW and OpenG views certification as very important.

Anyways, I am just trying to understand your reasoning - are u able to go into details on why you would want the above?

I concur with the above reasons for keeping OpenG as a third party package. I believe the reason why some want OpenG integrated into LabVIEW is due to issues with the process of getting the library into LabVIEW. For instance, my organization had to tweak the firewall for VIPM to properly download the OpenG packages. I can see how this may be a hurdle to install "additional" software with IT among large organizations.

And to follow-up on the original thread: thank you for the information. My hunch was backwards compatibility. It would be nice to have OpenG libraries excluded from the VI Hierarchy window which is not an option for user.lib.

Link to comment
It seems that NI is attempting to leverage the community for extra value added toolkits and re-use code while giving credit to the toolkit developers. Many of these toolkits have "NI part numbers" but are 100% supported by partners.

Yes, that seems correct, and IMHO is very logical to mainstreaming LabVIEW.

On a side note, it provides a great market place, allowing developers to make money from selling tools etc...

I concur with the above reasons for keeping OpenG as a third party package. I believe the reason why some want OpenG integrated into LabVIEW is due to issues with the process of getting the library into LabVIEW. For instance, my organization had to tweak the firewall for VIPM to properly download the OpenG packages. I can see how this may be a hurdle to install "additional" software with IT among large organizations.

As a side note, from reading their forums, posts and blogs etc.. JKI are able to help with this process.

And to follow-up on the original thread: thank you for the information. My hunch was backwards compatibility. It would be nice to have OpenG libraries excluded from the VI Hierarchy window which is not an option for user.lib.

If there is any logical reason(s) such as the above, that would make sense to move the libraries (or do anything else to them) then OpenG want to hear it!

The only other use case I can think of, off the top of my head is when - I have wanted to do this in during a source distribution build:

post-10325-0-02176800-1313156443_thumb.p

I wanted to exclude NI vi.lib but not my library VIs (which was under vi.lib at the time), but I couldn't so having it in user.lib lets me etc...

  • Like 1
Link to comment

I wasn't suggesting that NI should OWN OpenG, just that it should "live" in vi.lib and be officially supported by NI in addition to the support given by the OpenG community. My less than optimal experiences all occurred a number of years (and versions!) ago -- way before VIPM was available. VIPM does make a difference re: migrating code to newer versions and that would ease the pain, but it wouldn't have solved the specific problem I had "back in the day". And I agree that the Open Source community is an incredibly valuable community -- but I also lived through the C/Pascal/etc "wars" of the early days -- before C## was developed. I saw the battles and fights for control over unix and its variants and ALL of that was incredibly challenging to active programmers: just when you'd get a "complete" system approach going, new versions would come out and, like spring flowers and weeds, bugs would pop-up everywhere. frusty.gif

One of the big plusses for me in moving to LV when I did (back in v4) was that I could essentially and almost completely avoid those kinds of problems: because I ONLY used code that was supported by NI. thumbup1.gif

Now that's not entirely true because, in the early days of my project, I had to deal with legacy VB and C## code leftover from other consultants who "knew that was the better way to go" when it DEFINITELY wasn't. But it did serve THEIR purpose of trying to maintain value for themselves, as well as not having to deal with the fact that they didn't know how to make LV work, and also were embarrassed by what I (with no CS degree and "just" a domain expert) was already doing with it. The first several years were largely spent by me removing that crap from the project book.gif so that it was ultimately all native LV. rolleyes.gif

The only thing now that remains non-NI has been the Blowfish implementation -- and I do so wish someone would update that. It's still got CINs in it! And we all know they are nono.gifnono.gif.

So, no, I don't want NI to OWN OpenG -- just include it in vi.lib or, since it appears that won't be happening (at least "not yet") then I want NI to and the OpenG community to not ever move it to vi.lib. If it's home is going to be -- and remain! -- user.lib then that's fine and makes some sense for reasons others have stated, esp backwards compatibility. And it was developed by users, so of course that location makes sense...cool.gif

Link to comment

.... For instance, my organization had to tweak the firewall for VIPM to properly download the OpenG packages.

Brian, could you specify how you tweaked the firewall. I don't know where the OpenG packages are hosted (and I don't think IT is willing to open the firewall for sourceforge.net), so if you have any info on that please add.

Ton

Link to comment

Brian, could you specify how you tweaked the firewall. I don't know where the OpenG packages are hosted (and I don't think IT is willing to open the firewall for sourceforge.net), so if you have any info on that please add.

Ton

Ton,

I am not sure why the forum insists on cropping the URL links below, so I apologize for the formatting. You will have to copy the URLs.

My issues are on the JKI forum located at http://forums.jki.ne...curity-gateway/

Our company runs an Astaro Security Gateway which does not allow direct file downloads. This prevented VIPM from any operation related to the internet. Our solution was to whitelist sourceforge.net, jkisoft.com, and ni.com.

VIPM acts a lot like a linux repository. Note: I used wireshark to packet sniff where the information is coming from.

1. Package Mirror List

You can specify here a preferred package source.

http://jkisoft.com/p...orgeMirrors.txt

2. Repository

This downloads the available packages to obtain from the Package Mirrors.

http://ftp.ni.com/ev.../index.vipr.zip

3. Packages

These come from

The following work-arounds exist:

1. IT Department Whitelist

Extensions: .zip, .vip, .txt

http://jkisoft.com/p...orgeMirrors.txt

http://ftp.ni.com/ev.../index.vipr.zip

http://www.ni.com

selected sourceforge mirror

2. Download from home

Install LabVIEW Run-Time Engine and VIPM.

Download desired packages.

Copy downloaded files from C:\ProgramData\JKI\VIPM\cache

3. Manual Package Download

Subscribe to the RSS feed and manually download the files. Double click on each file to install with VIPM.

http://sourceforge.n...gtoolkit/files/

RSS Feed: http://sourceforge.n...sc/limit/20/rss

4. VIPM Enterprise Repository

This was suggested by Jim Kring. I am not sure how this would bypass the firewall:

"Another option, altogether, would be for you to set up your own VIPM Enterprise Package Repository and, on your VIPM Clients located on your corporate network, disable (in the VIPM Options dialog) the connection to the VI Package Network. Then, have each of your VIPM Clients connect to your corporate package repository where you would make all the OpenG and other packages available to your corporate users."

Hope this helps.

-Brian

post-4274-0-93035000-1313195256_thumb.pn

Edited by brianafischer
  • Like 1
Link to comment

Can you define "officially supported by NI" I.e. What would you expect feom them? Phone support, for them to code bug fixes etc...?

Also are you go into detail about the issue you had?

Cheers

-JG

Good questions....

Re: the first one I have to say I'm not entirely sure but perhaps SOME degree of phone support (perhaps only for PLatinum certified addons????) not just a blanket: "Sorry that's not our problem." Now that's not a literal quote but it was clear that there was no possibility of further information from NI and, frankly, I didn't blame them at the time. It was just unfortunate given my predicament.

So that brings us to the second question. I could look up the exact dates and the exact LV versions involved but I believe it was during the transition to v7. The critical marker was that the "Legacy I/O" VIs in the serial palette were all deprecated and replaced -- internally -- and replaced with code that called VISA instead. That caused ENORMOUS problems for me -- it was essentially unworkable -- so I started looking about for a substitute and find the OpenG Serial library, which also didn't work. Follow up with NI was completely useless -- VISA was not workable given the prior working code. And the author of the (then) OpenG serial library couldn't offer any help either.

It was a terrible couple of months because I couldn't go forward and, for a number of reasons, couldn't revert the code to what worked in the prior version of LV. Fortunately I did get some absolutely fabulous backdoor support (thanks to bp worshippy.gif) that arose out of conversations on LAVA -- so thanks to LAVA as well thumbup1.gif.

That workaround persisted through another couple of versions of LV and it really saved me.

Now one could say that NI dropped the ball first because it was how they did the deprecation of the prior Legacy Serial VIs that caused the fundamental -- perhaps. And I did give NI a lot of grief over that but also I didn't really know enough to develop a better work around and I also didn't know enough to make VISA work -- and that is now the basis of our hardware interface code. But the suggestion from a number of sources was to migrate to OpenG and that certainly didn't help in this instance.

Now I do want everyone to be clear that I highly respect all those involved in OpenG. The work is exemplary, well organized, thorough, etc. But it didn't work for me back in the day. Today is another day and now, I'm looking into it, because of this OO Design Pattern example and because VIPM has now been introduced into LV. I just think that process should continue.

val

Link to comment

CRELF,

Yes I appreciate what you're saying here and it was appropriate to migrate this hijacked thread here, away from the example posted by Eli. My original point was simply that it wasn't announced -- or indicated -- anywhere that the example included OpenG. I was in the Hands On session at NI Week that featured it and no one there mentioned it either -- but did give instructions on how to download the example for our own use. Had Eli documented somewhere obviously that OpenG was not only used but necessary to run the example code, then I might have had somewhat of a reaction -- "Oh no, OpenG again and I have to download it...." -- but then it would have been my choice to continue BEFORE investing time and energy into an example that was supposed to show a Design Pattern, not just "how to do OO".

All that having been said, my preference is to have parts of OpenG integrated into the distro LV so tat we can all be clear about using at least those parts of (what had been) OpenG and do it transparently. Or, if that isn't done, then let's at least have all of us post somewhere on a FP or in the documentation or, or, or about what the dependencies are, esp when one is OpenG -- or a special NI Toolkit like Sound and Vibration. It's just good style.

val

Link to comment

(Note - from cross post on ni.com but since these issues keep coming up I re-posted here)

Just to point out a couple of OpenG feature that are highly overlooked:

  • The source code is available, so it is possible to test OpenG libraries during the LabVIEW beta periods and prevent bugs from LabVIEW upgrades from getting their way into the OpenG libraries.
  • OpenG library functions are all unit tested and the unit tests are also open source, so it is possible for anyone to both test and improve the quality of OpenG libraries by running/creating unit tests. The unit tests for OpenG have been one of the primary mechanisms for ensuring that the quality of OpenG code is really high. For example, the unit tests for the OpenG array library can be found here:http://opengtoolkit.svn.sourceforge.net/viewvc/opengtoolkit/trunk/array/tests/?s ortby=date

Note that the unit tests predate both JKI VI Tester and the NI Unit Test Framework, so the tests themselves are just VIs that have a pass/fail status (update: but there are plans to update them to utilize an existing unit test framework). Hopefully this helps anyone who cares about the quality of OpenG code (both developers including OpenG in their source and developers receiving code that depends on OpenG).

Also, the example code included a VI Package Configuration file (used by VIPM) that is used to download and install the specific OpenG libraries that the example depends on from the LabVIEW Tools Network, and instructions on how to apply the VI Package Configuration file. I personally don't see what additional transparency needs to exist in terms of notifying people what the example code depends on.

Link to comment

Omar,

I think I must not be explaining this process clearly enough. UNTIL I did the download AND stated to use the VIPC file, there was NO mention ANYWHERE that ANY OpenG tools/VIs/etc would be needed. There SHOULD have been some mention of the need for OpenG -- beyond VIPM itself -- somewhere in the documentation online, the printed materials for the "Hands On" session at NI Week, by the instructors, and on the BD of the main.vi. We used the code during the hands on session with no direct awareness that OpenG was being used.

Is that clear enough?

val

Link to comment

I don't see a link to the cross thread anywhere (but I may of missed it) I have been following both, you can check it out here:

https://decibel.ni.com/content/docs/DOC-15014#comment-17129

Val - I am not sure from ur comment above about 'Crelf moving threads to here' - did u post on the cross thread? If so what is your alias?

Cheers

-JG

Link to comment

Hi Folks,

I think perhaps this discussion is in part related (or will be when I post my next comment) to an idea i have posted at LV idea exchange: http://forums.ni.com/t5/LabVIEW-Idea-Exchange/Add-a-Package-Manager-to-LabVIEW/idi-p/1670074 check it out.

Cheers,

/MArcus

A valid idea but I don't think it is related at all to this discussion. Even if NI 'owned' the package (or whatever) building and distribution software you would still have the same discussion happening.

JKI have done a fantastic job with VIPM, provide a very high level of support and have made package building available to everyone as, as of VIPM 2010 it is available in the Community Edition.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.