Version control 7.9 projects

Thanks for fast and clear response. I like the idea of a custom module. However, after spending the past 6 months developing in c# and using git for version control it is clear this is a best practice that control system software providers need to incorporate. I like ignition because it is more open than any scada I have used. Git versioning would truly make it stand out from the ocean of proprietary monolithic software packages controls engineers like me must endure. It also would help to bring industrial control system programmers into the mainstream of best computer science best practices. My guess it the newest generation of programmers would be slack jawed if they knew the extent of industrial control systems running on unversioned ladder logic and hmi scripts.

1 Like

Switch from v7.9 Vision to v8.1 Perspective. Much will be friendly to git. If git-friendliness ever comes to Vision, it won’t happen in v7.9. (EOL is a year away.)

I doubt a git-friendly format for Vision will ever happen.

Part of the reason for the existing format is legacy baggage but another big part is that it’s been optimized all to hell in the name of performance because the speed of de-serialization is directly reflected in how fast your Vision windows load as you navigate around.

Love to upgrade to 8.1… Anyone have a business case for it that could either reduce conversion to 8.X a trivial effort or justify the hundreds of hours to convert and test ? Any tools to make this easier ? My first attempt to upgrade to 8.0 was dismal. Granted it was early days with 8.0 but tags didn’t even work (many nested UDT’s). Plus major training to learn new environment. Have not tried latest 8.x maybe I will be surprised. Is Vision at end of life or just Vision 7.9 ?

Just 7.9 in general.

Vision will be maintained and supported for years to come.

1 Like

Interesting. I've made suggestions on what I thought was a modest change to the XML encoder to make it dramatically more git-friendly, plus some other changes that would make it more human-friendly, too:

Is performance the reason none of these were pursued? I can't image the first item being a performance hit. The named references I described might, though. ):

I am dubious that such a change would make any substantial improvement. The XML isn’t even XML anymore, it’s a binary encoding of the XML infoset.

I’m sorry that your initial upgrade experience was rocky. Ignition 8 has improved greatly from the early days, in particular with regards to UDTs.

As for the “business case”, I mean… this is your thread about how desperately you want better version control compatibility, which was certainly a major design consideration for Ignition 8. Yes, there is room for improvement, but it’s far better than 7.9, even just breaking resources out into files is a huge step forward even if the contents of those files is difficult to work with.

1 Like

That makes my brain itch. Is this a Christmas nerd-snipe?

Hahaha, no, it really is. This was part of the “optimized to hell” bit that Kevin was alluding to. If you think about what XML is, it’s just a text-encoding of a certain structure of data. Well, at one point, to glean another ~10% improvement or so in parsing speed, we realized that we could encode the exact same information, but in a binary format, and it would be smaller and thus be parsed faster. It allowed us to use our contextual knowledge of the information being serialized do some too-clever-for-our-own-good things. For example, we can encode a color as a single 4-byte integer rather than as the character encoding of a 4-byte integer, which might be many characters (likely more than 4), which results in smaller encoded size plus obviates the need to then interpret the that string as a number.

When you shift right-click on a window and copy the “XML” to clipboard, we are transcoding the binary encoding back into the normal text encoding for your viewing convenience.

Anyhow, I’m rambling, but you get the idea… :santa:

2 Likes

Hah! The bastard child of XML and Java Serialization. :laughing:

Heh, yeah, sort of. Funny enough, our XML encoding was originally inspired by Java’s 2nd (but ultimately doomed) attempt at serialization: https://docs.oracle.com/javase/7/docs/api/java/beans/XMLEncoder.html

You are right, of course… 8.x would be a great improvement in terms of version control and probably other things I don’t know about yet. In my world it is hard to sell a major upgrade when things are working ok. I really appreciate all the feedback and discussion.

Very informative thread.
I’m the first person in my department using Ignition (v8.1.5) and have been asked to give an informal demo to my colleagues who’ll soon be using it. They’ll certainly ask about version control ability for Vision projects. Can GIT be used Jim initial posted?
Thanking you in advance!
Kind regards,
Ted.

@Kevin.Herron
@PGriffith
@pturmel
@Carl.Gould
@jimschaefer

Yes, you can use git with Vision in 8.x, but the resources are still binary blobs. So not particularly git-friendly.

Thanks Phil.

There is a way to get a Vision window to XML using the context menu "copy" followed by a paste to a text editor. How to automate this?

You can't. It's only accessible in the context of a running Designer instance.

As of 8.1.25, you can set your Vision project to encode resources as XML on disk. This is never going to come to 7.9. Upgrade.

https://docs.inductiveautomation.com/display/DOC81/Vision+Project+Properties#VisionProjectProperties-VisionGeneralProperties

Ok, that is good news at least.

so if I am reading this correctly there is better support for git now for vision in 8.1 and even the use some text diff features if we encode resources with xml?