# Question about XML stability

**URL:** <https://forum.inductiveautomation.com/t/question-about-xml-stability/104463>\
**Category:** Ignition\
**Tags:** ignition81, vision\
**Created:** [March 31, 2025, 4:56pm UTC](https://forum.inductiveautomation.com/t/question-about-xml-stability/104463 "2025-03-31T16:56:19Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Leor\_Fishman](https://avatars.discourse-cdn.com/v4/letter/l/e19adc/32.png) [@Leor\_Fishman](https://forum.inductiveautomation.com/u/Leor_Fishman)\
**Post date:** [March 31, 2025, 4:56pm UTC](https://forum.inductiveautomation.com/t/question-about-xml-stability/104463/1 "2025-03-31T16:56:19Z")

</div>

How often does the internal serdes format of vision XML windows change?

Wondering for a couple different use cases, but the most relevant one more broadly is 'if i update my gateway/designer by a minor version bump, is that going to lead to a bunch of diffs in my window.xml files due to internals rather than actual project changes that e.g. git will notice'

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [March 31, 2025, 5:08pm UTC](https://forum.inductiveautomation.com/t/question-about-xml-stability/104463/2 "2025-03-31T17:08:24Z")

</div>

Basically never, unless we ever get around to deliberately trying to make it more human readable.

It's ossified into its current state, for good and bad, so I would consider it semi-stable (at least within minor versions).

Again, with the usual caveats that you really might want to just do whatever you're trying to do _within_ the bumpers of the software rather than forging your own trail 😄

---

<div class="post-metadata">

**Author:** ![Leor\_Fishman](https://avatars.discourse-cdn.com/v4/letter/l/e19adc/32.png) [@Leor\_Fishman](https://forum.inductiveautomation.com/u/Leor_Fishman)\
**Post date:** [March 31, 2025, 5:09pm UTC](https://forum.inductiveautomation.com/t/question-about-xml-stability/104463/3 "2025-03-31T17:09:30Z")

</div>

" _within_ the bumpers of the software"

If the stuff I were working on were doable within the software's bumpers, I'd be doing so already 🙂

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [March 31, 2025, 5:09pm UTC](https://forum.inductiveautomation.com/t/question-about-xml-stability/104463/4 "2025-03-31T17:09:35Z")

</div>

> [@paul-griffith](#):
>
> deliberately trying to make it more human readable.

Pretty please?

Some of my past recommendations would also make it much more git-friendly.

---

<div class="post-metadata">

**Author:** ![Leor\_Fishman](https://avatars.discourse-cdn.com/v4/letter/l/e19adc/32.png) [@Leor\_Fishman](https://forum.inductiveautomation.com/u/Leor_Fishman)\
**Post date:** [March 31, 2025, 5:10pm UTC](https://forum.inductiveautomation.com/t/question-about-xml-stability/104463/5 "2025-03-31T17:10:31Z")

</div>

honestly my biggest piece of feedback atm is that string refs (as distinct from component refs) afaict add like....0 upside to serdes speed. Oftentimes the ref tag will be longer than the string it's replacing!

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [March 31, 2025, 10:40pm UTC](https://forum.inductiveautomation.com/t/question-about-xml-stability/104463/6 "2025-03-31T22:40:48Z")

</div>

As far as I know the intention of the ref system was always to save space over the wire. Whether that was a goal that made sense or was achieved fifteen years ago when it was designed is orthogonal to whether it makes sense _now_, but in any event it basically boils down to:  
If it's in Vision, and it's _not broken_, don't try to fix it. You and Phil trying to do fun things in Vision's XML encoding is _neat_, but doesn't help Joe and Jane trying to keep their one production line at a factory working.

---

<div class="post-metadata">

**Author:** ![Leor\_Fishman](https://avatars.discourse-cdn.com/v4/letter/l/e19adc/32.png) [@Leor\_Fishman](https://forum.inductiveautomation.com/u/Leor_Fishman)\
**Post date:** [March 31, 2025, 10:56pm UTC](https://forum.inductiveautomation.com/t/question-about-xml-stability/104463/7 "2025-03-31T22:56:21Z")

</div>

Yep, I agree!  
Everything I'm building is to make actual day-to-day tasks easier, _without_ compromising what's actually going on under the hood, because that side of things is stable

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [March 31, 2025, 11:07pm UTC](https://forum.inductiveautomation.com/t/question-about-xml-stability/104463/8 "2025-03-31T23:07:58Z")

</div>

The ref system is critical to not duplicate actual **objects** , including the components themselves. Critical ssince the XML is not well-ordered, and components with bindings will show up "complete" when the InteractionController is serialized, and those refs will then be used when the root container is serialized.

> [@paul-griffith](#):
>
> but doesn't help Joe and Jane trying to keep their one production line at a factory working.

I would argue that making their production line's gateway git-friendly does indeed help keep that production line running. Tweaking the XML encoding to do just two things would be huge:

- Use path to named components as their ref (leaving other object refs as-is), and
- alter encoding order of windows and templates to process their root container first.

_ **Win!** _

---

<div class="post-metadata">

**Author:** ![Leor\_Fishman](https://avatars.discourse-cdn.com/v4/letter/l/e19adc/32.png) [@Leor\_Fishman](https://forum.inductiveautomation.com/u/Leor_Fishman)\
**Post date:** [March 31, 2025, 11:10pm UTC](https://forum.inductiveautomation.com/t/question-about-xml-stability/104463/9 "2025-03-31T23:10:13Z")

</div>

yep, that's why i specified string refs. (though the over-the-wire explanation explains that too)  
component/object refs make sense to me.
