-
Notifications
You must be signed in to change notification settings - Fork 535
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support building reusable components / eco-systems #4265
Comments
@leeviana - FYI |
This is a SOLID proposal :) |
Worth pointing out: Early (but more broader) thinking is described in this document Certain topics might not be directly related to this issue, but it would be great to go over comments and see what other big area s are worth being extracted into their own top-level features. |
I know this pattern as the object-capability model, which is a security model where the parent process grants privileges to spawned child processes by passing a set of objects called 'capabilities' to the child at creation time. Joe's article (above) links to lot of additional resources and the techniques mentioned all apply here (just replace language like "unforgeable reference to token" with "object like UndoManager".) One twist are programs like a Window Manager or CLI that need the capability to launch arbitrary programs on the user's behalf, but do not themselves know anything about the program being launched or it's required capabilities. In this situation, you generally end up with a powerful service at the top of the process tree that holds all of the user's capabilities and exposes weaker capabilities that allow programs like WM/CLI to enumerate and launch "pre-provisioned" programs. (One pattern is an installation service that persists user capabilities into the programs at install time.) You might find that some of our customers are in a similar situation, with a general requirement to embed arbitrary components into an editing surface with limited knowledge of those components or their requirements. Moving such a customer to the capability model will likely require providing the equivalent of the installation/launcher service. (Technically, containers are currently a closed system, so they could thread all capabilities through to every nested instance of every nested component that needs to create... but I think such a "ubiquitous-mega-capability-bundle" is at odds with a lot of the goals of this proposal.) |
This issue has been automatically marked as stale because it has had no activity for 180 days. It will be closed if no further activity occurs within 8 days of this comment. Thank you for your contributions to Fluid Framework! |
This issue has been automatically marked as stale because it has had no activity for 180 days. It will be closed if no further activity occurs within 8 days of this comment. Thank you for your contributions to Fluid Framework! |
First, "components" below (for most part) means any piece of (reusable) code in container.
But occasionally I'll use more specific meaning - data store or data object (it should be obvious from context).
There are multiple motivations for the work that I'm proposing.
While they look different, they are all about one and the same thing:
All of these problems can be distilled really to the following missing functionality in framework (Aquaduct):
Following this patterns will ensure components build using framework clearly describe all their dependencies, and can be reused by other (reusable) libraries by satisfying those requirements, either directly or though adaptation, or through propagating requirements up the stack to consumers of such library. It becomes possible to analyze systems/libraries in terms of their dependencies and behavious
The text was updated successfully, but these errors were encountered: