Skip to content

Commit 5cdcf82

Browse files
committed
[INTERNAL] Update unresolved questions
1 parent a0e580d commit 5cdcf82

File tree

1 file changed

+18
-17
lines changed

1 file changed

+18
-17
lines changed

rfcs/0017-incremental-build.md

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -93,21 +93,21 @@ The cache consists of a `cache-info.json` file with the below data structure and
9393
},
9494
"resourcesRead": {
9595
"/resources/project/namespace/Component.js": {
96-
"md5": "d41d8cd98f00b204e9899998ecf8427e",
96+
"sha256": "d41d8cd98f00b204e9899998ecf8427e",
9797
"lastModified": 1734005532120
9898
}
9999
},
100100
"resourcesWritten": {
101101
"/resources/project/namespace/Component.js": {
102-
"md5": "c1c77edc5c689a471b12fe8ba79c51d1",
102+
"sha256": "c1c77edc5c689a471b12fe8ba79c51d1",
103103
"lastModified": 1734005532120
104104
}
105105
}
106106
}
107107
}],
108108
"sourceMetadata": {
109109
"/resources/project/namespace/Component.js": {
110-
"md5": "d41d8cd98f00b204e9800998ecf8427e",
110+
"sha256": "d41d8cd98f00b204e9800998ecf8427e",
111111
"lastModified": 1734005532120
112112
}
113113
}
@@ -116,7 +116,7 @@ The cache consists of a `cache-info.json` file with the below data structure and
116116

117117
**cacheKey**
118118

119-
The cache key can be used to identify the cache. It shall be based on the project's name and version as well as a SHA-256 hash of the versions of the relevant UI5 Tooling modules (`@ui5/project`, `@ui5/builder`
119+
The cache key can be used to identify the cache. It shall be based on the project's name and version as well as a SHA256 hash of the versions of the relevant UI5 Tooling modules (`@ui5/project`, `@ui5/builder`
120120
`@ui5/fs`), the names and versions of the project's dependencies and the current build configuration (ui5.yaml + CLI parameters). This shall allow the UI5 Tooling to determine whether the cache is still valid or not.
121121

122122
**taskCache**
@@ -213,9 +213,9 @@ After a *project* has finished building, a list of all the modified resource is
213213

214214
![Activity Diagram illustrating how a build cache is used when building a project](./resources/0017-incremental-build/Activity_Diagram.png)
215215

216-
### Task Purging
216+
### Cache Purging
217217

218-
**TOOD** A mechanism to purge unused cache on disk is required. The cache can grow very large and consume a lot of disk space. The latest PoC produced cache entries with a size ranging from few kilobytes for applications up to 70 MB for framework libraries like sap.ui.core or sap.m.
218+
A mechanism to purge unused cache on disk is required. The cache can grow very large and consume a lot of disk space. The latest PoC produced cache entries with a size ranging from few kilobytes for applications up to 70 MB for framework libraries like sap.ui.core or sap.m.
219219

220220
This should probably use some sort of LRU-cache to purge unused cache entries dynamically. The same mechanism could be applied to the npm artifacts downloaded by UI5 Tooling.
221221

@@ -264,15 +264,16 @@ An alternative to using the incremental build in the UI5 Tooling server would be
264264

265265
## Unresolved Questions and Bikeshedding
266266

267-
* Adapt tasks to use new cache API
268-
* Clarify cache key
269-
* Current POC: project version + dependency versions + build config + UI5 Tooling module versions
270-
* How to distinguish from pre-built projects (with project manifest)
271-
* Pre-built UI5 libraries become especially important with this concept. Otherwise consumers will always have to build framework libraries, even in the server
272-
* Include resource tags in cache
273-
* Measure performance in BAS
274-
* Compress cache to reduce memory pressure
275-
* Allow tasks to store additional information in the cache
276-
* Some tasks might be relevant for the server only (e.g. code coverage)
267+
* Measure performance in BAS. Find out whether this approach results in acceptable performance.
268+
* How to distinguish projects with build cache from pre-built projects (with project manifest)
269+
* Cache related topics
270+
* Clarify cache key
271+
* Current POC: project version + dependency versions + build config + UI5 Tooling module versions
272+
* Include resource tags in cache
273+
* Compress cache to reduce memory pressure
274+
* Allow tasks to store additional information in the cache
275+
* Cache Purging
276+
* Some tasks might be relevant for the server only (e.g. code coverage), come up with a way to configure that
277277
* What if a task ceases to create a resource because of a change in another resource? The previously created version of the resource would still be used from the cache
278-
* Test with current custom tasks
278+
* Test with selected (community) custom tasks
279+
* With this concept, providing pre-built UI5 libraries becomes especially important. Otherwise consumers will always have to locally build framework libraries, even in the server

0 commit comments

Comments
 (0)