-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
4d6da17
commit 59be46f
Showing
2 changed files
with
38 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,38 @@ | ||
## Conclusions | ||
{:#conclusions} | ||
|
||
Write me: in what cases it’s useful (and when not), and future work (editor) | ||
{:.todo} | ||
After more than four years of development, Components.js has become a stable Dependency Injection framework for TypeScript and JavaScript projects, | ||
and has seen a significant uptake by popular tools that make use of it as core technology. | ||
It has been shown to be useful for enabling the primary tasks of a DI framework, | ||
but thanks to its semantic configuration files, | ||
it also brings with it the power of Linked Data and the Semantic Web for enabling globally interoperable and discoverable configurations. | ||
Using the Linked Software Dependencies service, components and configurations become dereferenceable and citable, | ||
which allows software configurations to be shared easily with others, | ||
which is for example beneficial for improving the reproducibility of software experiments. | ||
|
||
We can recommend Components.js for TypeScript/JavaScript projects that have at least a subset of the following characteristics: | ||
|
||
* Architectures that require **high modularity and flexibility**; | ||
* Need to modify wiring of components **without changing code**; | ||
* Need for ability to **share wiring configurations** with others; | ||
* Managing and including **configurations across different independent projects**. | ||
|
||
As with all DI frameworks, Components.js comes with the downside that for large applications, | ||
configurations can become complex and logic flow may be harder to follow. | ||
In order to mitigate these risks, we recommend a good management of configuration files, | ||
which may involve splitting up configuration files based on your architecture's primary subsystems, | ||
which is the approach followed by large projects such as Solid Community Server, Semantic Components, and Comunica. | ||
|
||
In future work, we do not foresee the need for any major changes or additions within the Components.js framework itself. | ||
However, all large projects that make use of Components.js have identified the need for better tooling to create and manage configuration files. | ||
For example, the Comunica project is developing a [graphical user interface](https://github.com/comunica/comunica-packager){.mandatory} | ||
to visually customize the wiring of the engine, which can then be exported into a reusable configuration file. | ||
Since Components.js configurations make use of the Linked Data principles, | ||
it is possible to create a generic user interface to create such configuration files for any project that makes use of Components.js. | ||
Furthermore, since components and configuration files are largely programming language-independent, | ||
it is possible to create equivalent implementations of Components.js for other OO languages such as Java and C#. | ||
|
||
In general, Components.js gives us the necessary foundation for building next-level applications that depend on high flexiblity, such as smart agents. | ||
These applications are crucial for environments such as Linked Data and the Semantic Web, | ||
which require and benefit from this level of flexibility. | ||
Therefore, DI frameworks such as Components.js pave the road towards a world with more flexible applications. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters