Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Added something about wizarding. Also, updated header hierarchy

...

Info
titlePractical example of the current limitations

Practical example for CoMPAS. CoMPAS currently relies on "fork" of OpenSCD in order to add the needed functionality:

com-pas/compas-open-scd: A substation configuration description editor for projects using SCL IEC 61850-6 Edition 2 or greater (github.com)

The goal for CoMPAS would be to add the CoMPAS specific code as add-on to OpenSCD-next in form of plug-ins. The current "fork" will no longer be needed. CoMPAS will just make a distribution of OpenSCD including the CoMPAS plugins/extensions.


OpenSCD next product vision

Next Generation

OpenSCD NEXT is the next generation version of OpenSCD aimed at flexibility and extensibility. NEXT features a modular structure that enables third parties to develop on top of OpenSCD CORE, thus enabling the community to add plugins, add-ons and components on top of OpenSCD CORE, while core functionality can be maintained separately.

Community focused

OpenSCD NEXT has a focus on community, and is essentially a tool for collaboration, in an environment supporting the energy transition. It enables third parties to easily participate.

Marketplace

OpenSCD NEXT features a bazaar model, where providers can develop functionality together and share what they have developed in a generic way for substation configuration.

Create your own packages

OpenSCD NEXT enables providers to dynamically create packages for their own purposes or packages that provide generic value for the community.


Architecture principles for OpenSCD-core

Some architecture principles are written in order to guide the architecture and implementation.

...

Modular and loosely coupled

Limit dependencies


General functional aspects of OpenSCD next

  • Embed OpenSCD next as embedded application is not foreseen yet.  It might be possible with an iframe. The current technology might already allow it.
  • Support multiple OpenSCD instances is not supported
  • OpenSCD provides: front-end for graphical interaction

...

Based on a configuration file OpenSCD-Core loads the different plug-ins/addons etc.


Functionalitiy of Functionality of OpenSCD-core:

Loading addons/plug-ins

...

The SCL doc editing is reponsible for manipulating the SCL. It takes care of the right sequence/order of SCL edits. For more information see OpenSCD-core handling SCL Edits.


OpenSCD Plug-ins

An OpenSCD plug-in is an addition to OpenSCD-Core to add functionality. This could be generic 61850 functionality or vendor/utility specific functionalitiyfunctionality. Examples: Datatemplate editor, substation-section editor, GOOSE editing, validation etc.

...

For more information see: OpenSCD-core plug-in


OpenSCD Components

OpenSCD Components are reusable WebComponents. Components can be used by plug-ins to build functionality faster, plug-in authors can also decide to build everything themselves.

Filtered-lists

Examples: filtered-lists are used in many plug-ins. In order to re-use the code, a filtered-list component is build and published on NPM.


OpenSCD Addons

OpenSCD addons are an extension of OpenSCD-Core to split functionality. This functionality can be pure technical and requires no custom UI. Examples for some OpenSCD addons add ons are Wizarding, Validating, Waiting, etc.

OpenSCD addons will be a replacement for current mixins, so there is no/less need to fork  OpenSCD-Core and to build mixins on top of the fork. Addons allow experiments with (potential) new core functionality. Succesful Successful addons can be merged into OpenSCD-core.

Wizarding

Example: Wizarding API is hard to make pefect perfect in the first run. If started with an addon for wizarding, we can experiment/use it. If it turns out that the addon is missing crucial functionality. We can introduce a new add-on next to the old addon (with its limitations).

Solution: There will be 2 POC's by Tamás Russ and Pascal Wilbrink . Comparing those will give the best solution.

For more information about mixins: TypeScript: Documentation - Mixins (typescriptlang.org)

...