Changes for page ProjectsSheet

Last modified by Zenna Elfen on 2025/11/24 11:39

From version 2.1
edited by Zenna Elfen
on 2025/11/20 21:31
Change comment: Update class sheet
To version 8.1
edited by Zenna Elfen
on 2025/11/24 11:13
Change comment: Update class sheet

Summary

Details

Page properties
Content
... ... @@ -23,18 +23,30 @@
23 23   <dl>
24 24   <dt #if (!$editing && $hasEdit)
25 25   class="editableProperty"
26 - data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('shortText1')))"
26 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('title2')))"
27 27   data-property-type="object"#end>
28 - <label#if ($editing) for="Projects.Code.ProjectsClass_0_shortText1"#end>
29 - $escapetool.xml($doc.displayPrettyName('shortText1', false, false))
28 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_title2"#end>
29 + $escapetool.xml($doc.displayPrettyName('title2', false, false))
30 30   </label>
31 31   <span class="xHint">
32 32   $escapetool.xml($services.localization.render('What''s the name of the project?'))
33 33   </span>
34 34   </dt>
35 - <dd>$doc.display('shortText1')</dd>
35 + <dd>$doc.display('title2')</dd>
36 36   <dt #if (!$editing && $hasEdit)
37 37   class="editableProperty"
38 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('shortText3')))"
39 + data-property-type="object"#end>
40 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_shortText3"#end>
41 + $escapetool.xml($doc.displayPrettyName('shortText3', false, false))
42 + </label>
43 + <span class="xHint">
44 + $escapetool.xml($services.localization.render('What are key aspects of this project?'))
45 + </span>
46 + </dt>
47 + <dd>$doc.display('shortText3')</dd>
48 + <dt #if (!$editing && $hasEdit)
49 + class="editableProperty"
38 38   data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('shortText2')))"
39 39   data-property-type="object"#end>
40 40   <label#if ($editing) for="Projects.Code.ProjectsClass_0_shortText2"#end>
... ... @@ -47,6 +47,18 @@
47 47   <dd>$doc.display('shortText2')</dd>
48 48   <dt #if (!$editing && $hasEdit)
49 49   class="editableProperty"
62 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('content1')))"
63 + data-property-type="object"#end>
64 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_content1"#end>
65 + $escapetool.xml($doc.displayPrettyName('content1', false, false))
66 + </label>
67 + <span class="xHint">
68 + $escapetool.xml($services.localization.render('Add an image for the project by clicking the image in the menu. This image will be visible in the table.'))
69 + </span>
70 + </dt>
71 + <dd>$doc.display('content1')</dd>
72 + <dt #if (!$editing && $hasEdit)
73 + class="editableProperty"
50 50   data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('data_synchronization')))"
51 51   data-property-type="object"#end>
52 52   <label#if ($editing) for="Projects.Code.ProjectsClass_0_data_synchronization"#end>
... ... @@ -83,16 +83,304 @@
83 83   <dd>$doc.display('conf_res')</dd>
84 84   <dt #if (!$editing && $hasEdit)
85 85   class="editableProperty"
86 - data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('content1')))"
110 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('long_res')))"
87 87   data-property-type="object"#end>
88 - <label#if ($editing) for="Projects.Code.ProjectsClass_0_content1"#end>
89 - $escapetool.xml($doc.displayPrettyName('content1', false, false))
112 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_long_res"#end>
113 + $escapetool.xml($doc.displayPrettyName('long_res', false, false))
90 90   </label>
91 91   <span class="xHint">
92 92   $escapetool.xml($services.localization.render('How is data persisted locally and replicated between peers?'))
93 93   </span>
94 94   </dt>
95 - <dd>$doc.display('content1')</dd>
119 + <dd>$doc.display('long_res')</dd>
120 + <dt #if (!$editing && $hasEdit)
121 + class="editableProperty"
122 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('list_rep')))"
123 + data-property-type="object"#end>
124 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_list_rep"#end>
125 + $escapetool.xml($doc.displayPrettyName('list_rep', false, false))
126 + </label>
127 + <span class="xHint">
128 + $escapetool.xml($services.localization.render('This layer focuses on durability, consistency, and redundancy. It handles write-paths, crash-resilience, and replication semantics across nodes. It is the “database/storage engine” layer where data lives and survives over time, independent of sync or merging logic. Examples: SQLite, IndexedDB, LMDB, Hypercore (append-only logs), WALs, Merkle-DAGs (IPFS/IPLD), Blob/media storage'))
129 + </span>
130 + </dt>
131 + <dd>$doc.display('list_rep')</dd>
132 + <dt #if (!$editing && $hasEdit)
133 + class="editableProperty"
134 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('long_rep')))"
135 + data-property-type="object"#end>
136 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_long_rep"#end>
137 + $escapetool.xml($doc.displayPrettyName('long_rep', false, false))
138 + </label>
139 + <span class="xHint">
140 + $escapetool.xml($services.localization.render('How is data persisted locally and replicated between peers?'))
141 + </span>
142 + </dt>
143 + <dd>$doc.display('long_rep')</dd>
144 + <dt #if (!$editing && $hasEdit)
145 + class="editableProperty"
146 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('list_peer')))"
147 + data-property-type="object"#end>
148 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_list_peer"#end>
149 + $escapetool.xml($doc.displayPrettyName('list_peer', false, false))
150 + </label>
151 + <span class="xHint">
152 + $escapetool.xml($services.localization.render('Discovery occurs in two phases: 1. Peer Discovery → finding any nodes 2. Topic Discovery → finding relevant nodes or resources These mechanisms enable decentralized bootstrapping and interest-based overlays. **Examples**: DHTs (Kademlia, Pastry), mDNS, DNS-SD, Bluetooth scanning, QR bootstrapping, static peer lists, Interest-based routing, PubSub discovery (libp2p), Rendezvous protocols'))
153 + </span>
154 + </dt>
155 + <dd>$doc.display('list_peer')</dd>
156 + <dt #if (!$editing && $hasEdit)
157 + class="editableProperty"
158 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('long_peer')))"
159 + data-property-type="object"#end>
160 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_long_peer"#end>
161 + $escapetool.xml($doc.displayPrettyName('long_peer', false, false))
162 + </label>
163 + <span class="xHint">
164 + $escapetool.xml($services.localization.render('How do peers find each other, and how do they discover content in the network?'))
165 + </span>
166 + </dt>
167 + <dd>$doc.display('long_peer')</dd>
168 + <dt #if (!$editing && $hasEdit)
169 + class="editableProperty"
170 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('list_ident')))"
171 + data-property-type="object"#end>
172 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_list_ident"#end>
173 + $escapetool.xml($doc.displayPrettyName('list_ident', false, false))
174 + </label>
175 + <span class="xHint">
176 + $escapetool.xml($services.localization.render('Identity systems ensure reliable mapping between peers and cryptographic keys. They underpin authorization, federated trust, and secure overlays. Examples: PKI, Distributed Identities (DIDs), Web-of-Trust, TOFU (SSH-style), Verifiable Credentials (VCs), Peer key fingerprints (libp2p PeerIDs), Key transparency logs'))
177 + </span>
178 + </dt>
179 + <dd>$doc.display('list_ident')</dd>
180 + <dt #if (!$editing && $hasEdit)
181 + class="editableProperty"
182 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('long_ident')))"
183 + data-property-type="object"#end>
184 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_long_ident"#end>
185 + $escapetool.xml($doc.displayPrettyName('long_ident', false, false))
186 + </label>
187 + <span class="xHint">
188 + $escapetool.xml($services.localization.render('How peers identify themselves, authenticate, and establish trustworthy relationships?'))
189 + </span>
190 + </dt>
191 + <dd>$doc.display('long_ident')</dd>
192 + <dt #if (!$editing && $hasEdit)
193 + class="editableProperty"
194 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('list_transport')))"
195 + data-property-type="object"#end>
196 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_list_transport"#end>
197 + $escapetool.xml($doc.displayPrettyName('list_transport', false, false))
198 + </label>
199 + <span class="xHint">
200 + $escapetool.xml($services.localization.render('This layer provides logical connections and flow control. QUIC and WebRTC bring modern congestion control and encryption defaults; Interpeer explores transport beyond IP assumptions. **Examples**: TCP, UDP, QUIC, SCTP, WebRTC DataChannels, Interpeer transport stack. Examples: TCP, UDP, QUIC, SCTP, WebRTC DataChannels, Interpeer transport stack'))
201 + </span>
202 + </dt>
203 + <dd>$doc.display('list_transport')</dd>
204 + <dt #if (!$editing && $hasEdit)
205 + class="editableProperty"
206 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('long_transport')))"
207 + data-property-type="object"#end>
208 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_long_transport"#end>
209 + $escapetool.xml($doc.displayPrettyName('long_transport', false, false))
210 + </label>
211 + <span class="xHint">
212 + $escapetool.xml($services.localization.render('How do peers establish end-to-end byte streams and reliable delivery?'))
213 + </span>
214 + </dt>
215 + <dd>$doc.display('long_transport')</dd>
216 + <dt #if (!$editing && $hasEdit)
217 + class="editableProperty"
218 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('list_phys')))"
219 + data-property-type="object"#end>
220 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_list_phys"#end>
221 + $escapetool.xml($doc.displayPrettyName('list_phys', false, false))
222 + </label>
223 + <span class="xHint">
224 + $escapetool.xml($services.localization.render('Highly relevant for offline-first / edge networks, device-to-device communication, and mesh networks and relates to the hardware which facilitates connections. Examples: Ethernet, Wi-Fi Direct / Wi-Fi Aware (post-AWDL), Bluetooth Mesh, LoRa, NFC, Cellular, CSMA/CA, TDMA, FHSS'))
225 + </span>
226 + </dt>
227 + <dd>$doc.display('list_phys')</dd>
228 + <dt #if (!$editing && $hasEdit)
229 + class="editableProperty"
230 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('long_phys')))"
231 + data-property-type="object"#end>
232 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_long_phys"#end>
233 + $escapetool.xml($doc.displayPrettyName('long_phys', false, false))
234 + </label>
235 + <span class="xHint">
236 + $escapetool.xml($services.localization.render('How does data move across the medium?'))
237 + </span>
238 + </dt>
239 + <dd>$doc.display('long_phys')</dd>
240 + <dt #if (!$editing && $hasEdit)
241 + class="editableProperty"
242 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('list_cont')))"
243 + data-property-type="object"#end>
244 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_list_cont"#end>
245 + $escapetool.xml($doc.displayPrettyName('list_cont', false, false))
246 + </label>
247 + <span class="xHint">
248 + $escapetool.xml($services.localization.render('Content addressing ensures immutability, verifiability, and deduplication. Identity of data = cryptographic hash, enabling offline-first and tamper-evident systems. **Examples**: IPFS CIDs, BitTorrent infohashes, Git hashes, SHA-256 addressing, Named Data Networking (NDN)'))
249 + </span>
250 + </dt>
251 + <dd>$doc.display('list_cont')</dd>
252 + <dt #if (!$editing && $hasEdit)
253 + class="editableProperty"
254 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('long_cont')))"
255 + data-property-type="object"#end>
256 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_long_cont"#end>
257 + $escapetool.xml($doc.displayPrettyName('long_cont', false, false))
258 + </label>
259 + <span class="xHint">
260 + $escapetool.xml($services.localization.render('How is data addressed and verified by content, not location?'))
261 + </span>
262 + </dt>
263 + <dd>$doc.display('long_cont')</dd>
264 + <dt #if (!$editing && $hasEdit)
265 + class="editableProperty"
266 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('list_p2p')))"
267 + data-property-type="object"#end>
268 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_list_p2p"#end>
269 + $escapetool.xml($doc.displayPrettyName('list_p2p', false, false))
270 + </label>
271 + <span class="xHint">
272 + $escapetool.xml($services.localization.render('Connectivity ensures peers bypass NATs/firewalls to reach each other. **Examples**: IPv6 direct, NAT Traversal, STUN, TURN, ICE (used in WebRTC), UDP hole punching, UPnP'))
273 + </span>
274 + </dt>
275 + <dd>$doc.display('list_p2p')</dd>
276 + <dt #if (!$editing && $hasEdit)
277 + class="editableProperty"
278 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('longText13')))"
279 + data-property-type="object"#end>
280 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_longText13"#end>
281 + $escapetool.xml($doc.displayPrettyName('longText13', false, false))
282 + </label>
283 + <span class="xHint">
284 + $escapetool.xml($services.localization.render('What relevance does this topic have for the project?'))
285 + </span>
286 + </dt>
287 + <dd>$doc.display('longText13')</dd>
288 + <dt #if (!$editing && $hasEdit)
289 + class="editableProperty"
290 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('list_sess')))"
291 + data-property-type="object"#end>
292 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_list_sess"#end>
293 + $escapetool.xml($doc.displayPrettyName('list_sess', false, false))
294 + </label>
295 + <span class="xHint">
296 + $escapetool.xml($services.localization.render('Manages connection lifecycle, including authentication handshakes, reconnection after drops, and session continuation. **Examples**: TLS handshake semantics, Noise IK/XX patterns, session tokens, keep-alive heartbeats, reconnection strategies, session resumption tickets'))
297 + </span>
298 + </dt>
299 + <dd>$doc.display('list_sess')</dd>
300 + <dt #if (!$editing && $hasEdit)
301 + class="editableProperty"
302 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('long_sess')))"
303 + data-property-type="object"#end>
304 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_long_sess"#end>
305 + $escapetool.xml($doc.displayPrettyName('long_sess', false, false))
306 + </label>
307 + <span class="xHint">
308 + $escapetool.xml($services.localization.render('How are connections initiated, authenticated, resumed, and kept alive?'))
309 + </span>
310 + </dt>
311 + <dd>$doc.display('long_sess')</dd>
312 + <dt #if (!$editing && $hasEdit)
313 + class="editableProperty"
314 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('list_mess')))"
315 + data-property-type="object"#end>
316 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_list_mess"#end>
317 + $escapetool.xml($doc.displayPrettyName('list_mess', false, false))
318 + </label>
319 + <span class="xHint">
320 + $escapetool.xml($services.localization.render(' Serialization ensures portable data representation, forward-compatible schemas, and efficient messaging. **Examples**: IPFS CIDs, BitTorrent infohashes, Git hashes, SHA-256 addressing, Named Data Networking (NDN)'))
321 + </span>
322 + </dt>
323 + <dd>$doc.display('list_mess')</dd>
324 + <dt #if (!$editing && $hasEdit)
325 + class="editableProperty"
326 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('long_mess')))"
327 + data-property-type="object"#end>
328 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_long_mess"#end>
329 + $escapetool.xml($doc.displayPrettyName('long_mess', false, false))
330 + </label>
331 + <span class="xHint">
332 + $escapetool.xml($services.localization.render('How is data encoded, structured, and/or made interoperable between peers?'))
333 + </span>
334 + </dt>
335 + <dd>$doc.display('long_mess')</dd>
336 + <dt #if (!$editing && $hasEdit)
337 + class="editableProperty"
338 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('list_blob')))"
339 + data-property-type="object"#end>
340 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_list_blob"#end>
341 + $escapetool.xml($doc.displayPrettyName('list_blob', false, false))
342 + </label>
343 + <span class="xHint">
344 + $escapetool.xml($services.localization.render(' Bulk data syncing has different trade-offs than small collaborative state (chunking, deduplication, partial transfer, resume logic). Essential for media and archival P2P use-cases. **Examples**: BitTorrent chunking, IPFS block-store, NDN segments, rsySerialization ensures portable data representation, forward-compatible schemas, and efficient messaging. **Examples**: IPFS CIDs, BitTorrent infohashes, Git hashes, SHA-256 addressing, Named Data Networking (NDN)nc-style delta sync, ZFS send-receive, streaming blob transfers'))
345 + </span>
346 + </dt>
347 + <dd>$doc.display('list_blob')</dd>
348 + <dt #if (!$editing && $hasEdit)
349 + class="editableProperty"
350 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('long_blob')))"
351 + data-property-type="object"#end>
352 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_long_blob"#end>
353 + $escapetool.xml($doc.displayPrettyName('long_blob', false, false))
354 + </label>
355 + <span class="xHint">
356 + $escapetool.xml($services.localization.render('How are large objects transferred and deduplicated efficiently across peers?'))
357 + </span>
358 + </dt>
359 + <dd>$doc.display('long_blob')</dd>
360 + <dt #if (!$editing && $hasEdit)
361 + class="editableProperty"
362 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('list_localsto')))"
363 + data-property-type="object"#end>
364 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_list_localsto"#end>
365 + $escapetool.xml($doc.displayPrettyName('list_localsto', false, false))
366 + </label>
367 + <span class="xHint">
368 + $escapetool.xml($services.localization.render('Provides durable on-device state and local computation (event sourcing, materialization, compaction). Enables offline-first writes and deterministic replay. **Examples**: RocksDB, LevelDB, SQLite, LMDB, local WALs/append-only logs, embedded stream processors (NATS Core JetStream mode, Actyx-like edge runtimes), Kafka-like libraries'))
369 + </span>
370 + </dt>
371 + <dd>$doc.display('list_localsto')</dd>
372 + <dt #if (!$editing && $hasEdit)
373 + class="editableProperty"
374 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('long_localsto')))"
375 + data-property-type="object"#end>
376 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_long_localsto"#end>
377 + $escapetool.xml($doc.displayPrettyName('long_localsto', false, false))
378 + </label>
379 + <span class="xHint">
380 + $escapetool.xml($services.localization.render('How do nodes persist, index, and process data locally—without external servers?'))
381 + </span>
382 + </dt>
383 + <dd>$doc.display('long_localsto')</dd>
384 + <dt #if (!$editing && $hasEdit)
385 + class="editableProperty"
386 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('list_crash')))"
387 + data-property-type="object"#end>
388 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_list_crash"#end>
389 + $escapetool.xml($doc.displayPrettyName('list_crash', false, false))
390 + </label>
391 + <span class="xHint">
392 + $escapetool.xml($services.localization.render('Ensures P2P apps don’t corrupt state on crashes. Tied to local storage & stream-processing, and critical in offline-first and distributed update pipelines. Abortability is the updated term, as per Mr. Kleppmann for Atomicity as part of the [ACID abbreviation](https://www.youtube.com/watch?v=5ZjhNTM8XU8). **Examples**: IPFS CIDs, BitTorrent infohashes, Git hashes, SHA-256 addressing, Named Data Networking (NDN)'))
393 + </span>
394 + </dt>
395 + <dd>$doc.display('list_crash')</dd>
396 + <dt #if (!$editing && $hasEdit)
397 + class="editableProperty"
398 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('long_crashres')))"
399 + data-property-type="object"#end>
400 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_long_crashres"#end>
401 + $escapetool.xml($doc.displayPrettyName('long_crashres', false, false))
402 + </label>
403 + <span class="xHint">
404 + $escapetool.xml($services.localization.render('How do nodes recover and maintain correctness under failure?'))
405 + </span>
406 + </dt>
407 + <dd>$doc.display('long_crashres')</dd>
96 96   </dl>
97 97  </div>
98 98  {{/html}}