could somebody explain to me what is going on here?
how does this work and what does it do?
From my guessing it is like this:
On startup different things are done. Bindings are started, rules are loaded. You can see everything with its startup level by doing
bundle:list
For me it outputs stuff like:
ID │ State │ Lvl │ Version │ Name
────┼──────────┼─────┼────────────────────────┼───────────────────────────────────────────
[...]
129 │ Active │ 80 │ 0.10.0.oh240 │ Eclipse SmartHome Item Model
130 │ Active │ 80 │ 0.10.0.oh240 │ Eclipse SmartHome Item Model IDE
131 │ Active │ 80 │ 0.10.0.oh240 │ Eclipse SmartHome Item Model Runtime
[...]
160 │ Active │ 80 │ 2.14.0.v20180522-1629 │ Xbase Runtime Library
175 │ Active │ 80 │ 1.9.6 │ MIME streaming extension
177 │ Active │ 80 │ 6.2.0 │ org.objectweb.asm
178 │ Active │ 80 │ 6.2.0 │ org.objectweb.asm.commons
179 │ Active │ 80 │ 6.2.0 │ org.objectweb.asm.tree
180 │ Active │ 90 │ 2.4.0 │ openHAB Core
181 │ Active │ 80 │ 2.4.0 │ openHAB Karaf Integration
183 │ Resolved │ 80 │ 2.4.0 │ openHAB Sound Support, Hosts: 116
184 │ Active │ 80 │ 2.4.0 │ openHAB Dashboard UI
[...]
There you can see most things have a level of 80, including bindings. Without the above change, rules also have a startup level of 80:
bundle:start-level org.eclipse.smarthome.model.rule
Level 80
What I assume is that everything with the same startup level is started at the same time. So when the startup level reaches 80, everything with startup level 80 is loaded at the same time. By increasing the level of rules, rules are loaded after everything in startup level 80 (like things or bindings) are loaded. Effectively delaying rule loading after everything else is loaded.
I even got a step further by loading things, items, etc. step by step by doing:
bundle:start-level org.eclipse.smarthome.model.thing 83
bundle:start-level org.eclipse.smarthome.model.thing.ide 83
bundle:start-level org.eclipse.smarthome.model.thing.runtime 83
bundle:start-level org.eclipse.smarthome.model.item 85
bundle:start-level org.eclipse.smarthome.model.item.ide 85
bundle:start-level org.eclipse.smarthome.model.item.runtime 85
bundle:start-level org.eclipse.smarthome.model.sitemap 88
bundle:start-level org.eclipse.smarthome.model.sitemap.ide 88
bundle:start-level org.eclipse.smarthome.model.sitemap.runtime 88
bundle:start-level org.eclipse.smarthome.model.rule 90
bundle:start-level org.eclipse.smarthome.model.rule.ide 90
bundle:start-level org.eclipse.smarthome.model.rule.runtime 90
So first things are loaded (after everything else in level 80 like bindings), then items, then sitemaps and finally rules. I’d guess they depend on each other in this order (e.g. items need things and sitemaps need items etc.).
This is just my guessing - I didn’t take a look at the code or so. If somebody from the devs could confirm this I’d be grateful.