Pro / opcua-device-skills

OPC UA Device-Independent Skill Model
9 stars 2 forks source link

ModelDesign schema #2

Closed mpostol closed 5 years ago

mpostol commented 5 years ago

It is a general question on how to represent the OPC UA Information Model. The ModelDesign files are validated against schema and XML files that are not in this repository. The files are not officially released and may change at any time. I have described this process in the

My concern is that his repository cannot be reused to generate the same results. It is marked build success but it is not clear hot to get this success. I will appreciate adding an explanation to the readme files related to the dependency chain.

Pro commented 5 years ago

I updated the Readme to list the step-by-step guide which should be used to build the NodeSet2.xml file from the ModelDesign files.

This build process is based on the official UA-ModelCompiler, where I opened a Pull Request to add docker support. My build process then uses the pre-built docker container. https://github.com/OPCFoundation/UA-ModelCompiler/pull/36

This pre-build docker container is using the current files of the UA-ModelCompiler master branch, therefore the ModelDesign files are validated against the schema file inside the docker container. I will try to keep this docker container aligned with the official master branch, until the PR is merged.

I'm happy for any feedback!

mpostol commented 5 years ago

@Pro thanks for the answer. I know that you have done the best in this respect. I have raised this issue to address the more general problem, but your work is a perfect example to continue this discussion.

My concern is that the docker only solves the problem with software installation but not versioning.

  1. The ModelCompiler tool is not versioned
  2. The repository doesn't publish binaries for ModelCompiler
  3. What does it mean official - the repository is maintained by a single person and as I know the process is not covered by any OPCF procedure
  4. The main role for this code is to do generate officials NodeSet files for released models as the companion specification
  5. Using docker you can produce a bubble working for a particular model
  6. The generated files are applicable only for the OPC Unified Architecture .NET Standard
  7. How to deal with versioning of the standard model that is based for any other models.

@Pro let me stress it is not only your problem. My Address Space Model Designer has ModelCopiler embedded as a plugin and schema files as the internal resources. In my opinion, is a good example of dependency hell .

Form Part 6 we can learn that to avoid these problems we should use compiled against UANodeSet schema models, but it does not work for custom models.

Let me know what do you think about it. I promised to publish my ASMD as the open source but still have some doubts on how to do it. BTW have you tried this tool. In the meantime, I can provide you an appropriate license for free. Mariusz

Pro commented 5 years ago

@mpostol thanks for your comments!

My concern is that the docker only solves the problem with software installation but not versioning.

Models do have a version string. It's currently not used correspondingly in this repo, but these version numbers should be used, independent how the model is created.

  1. The ModelCompiler tool is not versioned

Correct, but that shouldn't be an issue with the model itself. There is one specific release version, and that is the only source of truth, even if it contains bugs.

  1. The repository doesn't publish binaries for ModelCompiler

Why should it? You can check out a specific commit id and then build the model compiler from there. The docker image itself is also based on a specific commit. Normally you do not include binaries in git...

  1. What does it mean official - the repository is maintained by a single person and as I know the process is not covered by any OPCF procedure

Official in the sense that it is used by the OPCF for the official OPC UA Nodesets.

  1. The main role for this code is to do generate officials NodeSet files for released models as the companion specification

Yes

  1. Using docker you can produce a bubble working for a particular model

No, docker is just used to have a precompiled version of the model compiler which can be used for any model. It lowers the efforts for new users, since you do not have to install mono and then build the compiler first.

  1. The generated files are applicable only for the OPC Unified Architecture .NET Standard

No, the generated files are according to the official NodeSet2 format. Many OPC UA stacks have an importer for that specific format.

  1. How to deal with versioning of the standard model that is based for any other models.

Versioning of the models itself is a hard task. I agree. There should be some kind of min/max supported version for models. But on the other hand, the model compiler will complain, if the model is not consistent.

@Pro let me stress it is not only your problem. My Address Space Model Designer has ModelCopiler embedded as a plugin and schema files as the internal resources. In my opinion, is a good example of dependency hell .

Form Part 6 we can learn that to avoid these problems we should use compiled against UANodeSet schema models, but it does not work for custom models.

Let me know what do you think about it. I promised to publish my ASMD as the open source but still have some doubts on how to do it.

I'd say you should include the most recent release of a specification, and maybe some way to manually define the UANodeSet repository. Then a user can select which version he wants to use.