Description
Expected Behavior
Extensions should have the state they need to load successfully.
Actual Behavior
Sometimes extensions need state that is stored on the target (as is the case for the video sensing extension), but targets aren't installed until after extensions are installed. This is a particular issue for the future when extensions become asynchronous.
Potential solution
Create proxy objects for state that an extension needs, and pass that object to the extension when it's created. The state might not be fully populated when the proxy object is created, but its references to the right place to get state will allow the extension to get that information at a later date.
One thing to consider is how extensions will know when this state changes (ie when a different project loads) and how to make this change observable.
This issue is based on an offline conversation with @kchadha, @cwillisf, and @mzgoddard. Let me know if you have other thoughts on this or if I missed something!