DISTek Integration has been heavily involved in ISOBUS development for a long time now. We have helped many clients develop and integrate custom VT solutions for their vehicles and implements and have even written and sold our own ISOBUS stack (VIRTEC), along with a VT server application (VT Anywhere). One of the consistent tools we have used throughout our ISOBUS development has been ISODesigner from Jetter AG.
ISODesigner is a software tool that allows you to design object pools for ISOBUS applications. Object pools are basically the graphics that you see displayed on a VT when you are running an ISOBUS app. This tool allows you to easily create and modify your pool, while staying compliant with your target version of ISO-11783.
ISODesigner has served as a flexible tool that’s been a great fit for us. There is one issue with it, however, that can make collaborative development on an ISOBUS GUI very challenging. The way that ISODesigner stores its project files is in an XML format. Some of these files can easily grow to be tens of thousands of lines long, so if you have multiple developers working on a project who need to modify the UI simultaneously, these project files will need to be merged at some point. That is where the challenge comes in.
If you have ever had to merge XML files for any reason, you probably know how difficult it can be. This is because the XML schema is designed to be robust, where the main differentiator between entities is dependent on the hierarchy and names or attributes, but each entity has lots of lines that look exactly the same. Most “diff” tools look at files line by line and don’t take “blocks” of elements into account, so the tool gets easily confused really fast on what has actually changed or if elements have only moved around, for example. This results in having to merge a lot of these by hand, which is difficult or impossible to do when you are talking about 50,000 lines of code (especially without accidentally breaking something!).
One solution to this problem is to only allow one developer to work on the GUI project at a time. Even though it is a workable idea, it is not usually ideal. Sometimes, even if only one person is doing active UI development, someone else working on another feature may need to make small changes to fix bugs and may get blocked. This is why I am planning to write a custom script specifically to merge Jetter ISODesigner *.jop files.
I’ll be working on this over the next month, so stay tuned for the next blog in this two part series where I’ll release the developed script and provide a tutorial on how to use it.