This page is to document some historic (technical) architecture of OpenSCD. In the current setup; Mixins are used to extend OpenSCD.
Repository: openscd/open-scd: A substation configuration description editor for projects using SCL IEC 61850-6 Edition 2 or greater (github.com)
eyJleHRTcnZJbnRlZ1R5cGUiOiIiLCJnQ2xpZW50SWQiOiIiLCJjcmVhdG9yTmFtZSI6IlNhbmRlciBKYW5zZW4iLCJvdXRwdXRUeXBlIjoiYmxvY2siLCJsYXN0TW9kaWZpZXJOYW1lIjoiU2FuZGVyIEphbnNlbiIsImxhbmd1YWdlIjoiZW4iLCJkaWFncmFtRGlzcGxheU5hbWUiOiIiLCJzRmlsZUlkIjoiIiwiYXR0SWQiOiI2ODY3NzIxMCIsImRpYWdyYW1OYW1lIjoiT3BlblNDRCBtb25vbGl0aCIsImFzcGVjdCI6IiIsImxpbmtzIjoiYXV0byIsImNlb05hbWUiOiJPcGVuU0NEIG1vbm9saXRoIGFyY2hpdGVjdHVyZSIsInRic3R5bGUiOiJ0b3AiLCJjYW5Db21tZW50IjpmYWxzZSwiZGlhZ3JhbVVybCI6IiIsImNzdkZpbGVVcmwiOiIiLCJib3JkZXIiOnRydWUsIm1heFNjYWxlIjoiMSIsIm93bmluZ1BhZ2VJZCI6Njg2Njk3MDcsImVkaXRhYmxlIjpmYWxzZSwiY2VvSWQiOjY4NjY5NzA3LCJwYWdlSWQiOiIiLCJsYm94Ijp0cnVlLCJzZXJ2ZXJDb25maWciOnsiZW1haWxwcmV2aWV3IjoiMSJ9LCJvZHJpdmVJZCI6IiIsInJldmlzaW9uIjoxLCJtYWNyb0lkIjoiMTA5NTdkOTgtODU2MC00Nzc2LTkyZmItYzNlYWZlYzQ0MjM4IiwicHJldmlld05hbWUiOiJPcGVuU0NEIG1vbm9saXRoLnBuZyIsImxpY2Vuc2VTdGF0dXMiOiJPSyIsInNlcnZpY2UiOiIiLCJpc1RlbXBsYXRlIjoiIiwid2lkdGgiOiIxODcxIiwic2ltcGxlVmlld2VyIjpmYWxzZSwibGFzdE1vZGlmaWVkIjoxNjg3NTEwNzMxOTIwLCJleGNlZWRQYWdlV2lkdGgiOmZhbHNlLCJvQ2xpZW50SWQiOiIifQ==
Q&A
Why using the Lit library?
- Framework agnostic
- Lit is easy to use
Downsides of the current architecture
It is almost impossible to add a plug-in without checking out the complete OpenSCD code. This leads to:
- "Forking" to make the plug-ins work
- Hard to make your own distribution with your own plug-ins
- It is technically possible to create your own plug-in, but this is complex and you cannot rely on existing code. You're forced to use the lit framework for your plug-in and should have a very good understanding of OpenSCD inner workings.
Example:
com-pas/compas-open-scd: A substation configuration description editor for projects using SCL IEC 61850-6 Edition 2 or greater (github.com)
In order to make CoMPAS work with OpenSCD; additional code was needed (e.g. login, access to the database, etc). This is why the "fork" exists.