Wiki source code of ProjectsSheet

Version 3.1 by Zenna Elfen on 2025/11/20 21:58

Hide last authors
Zenna Elfen 1.1 1 {{velocity}}
2 #set ($object = $doc.getObject('Projects.Code.ProjectsClass'))
3 #if (!$object)
4 #set ($messageKey = 'projects.sheet.description')
5 #set ($messageType = 'info')
6 #if ($doc.documentReference.name != 'ProjectsSheet')
7 #set ($messageKey = 'projects.sheet.noObject')
8 #set ($messageType = 'warning')
9 #end
10 {{$messageType}}
11 $services.localization.render($messageKey)
12 {{/$messageType}}
13 #stop
14 #end
15 #set ($discard = $xwiki.jsfx.use('uicomponents/edit/editableProperty.js', {
16 'forceSkinAction': true,
17 'language': $xcontext.locale
18 }))
19 #set ($discard = $doc.use($object))
20 #set ($editing = $xcontext.action == 'edit')
21 {{html wiki="true" clean="false"}}
22 <div class="xform">
23 <dl>
24 <dt #if (!$editing && $hasEdit)
25 class="editableProperty"
26 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('shortText1')))"
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))
30 </label>
31 <span class="xHint">
32 $escapetool.xml($services.localization.render('What''s the name of the project?'))
33 </span>
34 </dt>
35 <dd>$doc.display('shortText1')</dd>
36 <dt #if (!$editing && $hasEdit)
37 class="editableProperty"
38 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('shortText2')))"
39 data-property-type="object"#end>
40 <label#if ($editing) for="Projects.Code.ProjectsClass_0_shortText2"#end>
41 $escapetool.xml($doc.displayPrettyName('shortText2', false, false))
42 </label>
43 <span class="xHint">
44 $escapetool.xml($services.localization.render('What''s the projects website?'))
45 </span>
46 </dt>
47 <dd>$doc.display('shortText2')</dd>
48 <dt #if (!$editing && $hasEdit)
49 class="editableProperty"
Zenna Elfen 2.1 50 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('data_synchronization')))"
Zenna Elfen 1.1 51 data-property-type="object"#end>
Zenna Elfen 2.1 52 <label#if ($editing) for="Projects.Code.ProjectsClass_0_data_synchronization"#end>
53 $escapetool.xml($doc.displayPrettyName('data_synchronization', false, false))
Zenna Elfen 1.1 54 </label>
55 <span class="xHint">
Zenna Elfen 2.1 56 $escapetool.xml($services.localization.render('Synchronization answers how updates flow between peers and how they determine what data to exchange. This layer is about diffing, reconciliation, order, causality tracking, and efficient exchange, not persistence or user-facing collaboration semantics. Examples: Range-Based Set Reconciliation, RIBLT, Gossip-based sync, State-based vs op-based sync, Lamport/Vector/HLC clocks, Braid Protocol'))
Zenna Elfen 1.1 57 </span>
58 </dt>
Zenna Elfen 2.1 59 <dd>$doc.display('data_synchronization')</dd>
Zenna Elfen 1.1 60 <dt #if (!$editing && $hasEdit)
61 class="editableProperty"
Zenna Elfen 2.1 62 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('longText1')))"
Zenna Elfen 1.1 63 data-property-type="object"#end>
Zenna Elfen 2.1 64 <label#if ($editing) for="Projects.Code.ProjectsClass_0_longText1"#end>
65 $escapetool.xml($doc.displayPrettyName('longText1', false, false))
Zenna Elfen 1.1 66 </label>
67 <span class="xHint">
Zenna Elfen 2.1 68 $escapetool.xml($services.localization.render('How do peers detect differences and synchronize state?'))
Zenna Elfen 1.1 69 </span>
70 </dt>
Zenna Elfen 2.1 71 <dd>$doc.display('longText1')</dd>
Zenna Elfen 1.1 72 <dt #if (!$editing && $hasEdit)
73 class="editableProperty"
Zenna Elfen 2.1 74 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('conf_res')))"
Zenna Elfen 1.1 75 data-property-type="object"#end>
Zenna Elfen 2.1 76 <label#if ($editing) for="Projects.Code.ProjectsClass_0_conf_res"#end>
77 $escapetool.xml($doc.displayPrettyName('conf_res', false, false))
Zenna Elfen 1.1 78 </label>
79 <span class="xHint">
Zenna Elfen 2.1 80 $escapetool.xml($services.localization.render('This layer defines how shared data evolves when multiple peers edit concurrently. It focuses on conflict-free merging, causality, and consistency of meaning, not transport or storage. CRDTs ensure deterministic convergence, while event-sourced or stream-driven models maintain a history of all changes and derive consistent state from it. Examples: CRDTs (Yjs, Automerge), OT, Event Sourcing, Stream Processing, Version Vectors, Peritext'))
Zenna Elfen 1.1 81 </span>
82 </dt>
Zenna Elfen 2.1 83 <dd>$doc.display('conf_res')</dd>
Zenna Elfen 1.1 84 <dt #if (!$editing && $hasEdit)
85 class="editableProperty"
Zenna Elfen 3.1 86 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('longText2')))"
Zenna Elfen 1.1 87 data-property-type="object"#end>
Zenna Elfen 3.1 88 <label#if ($editing) for="Projects.Code.ProjectsClass_0_longText2"#end>
89 $escapetool.xml($doc.displayPrettyName('longText2', false, false))
Zenna Elfen 1.1 90 </label>
91 <span class="xHint">
Zenna Elfen 2.1 92 $escapetool.xml($services.localization.render('How is data persisted locally and replicated between peers?'))
Zenna Elfen 1.1 93 </span>
94 </dt>
Zenna Elfen 3.1 95 <dd>$doc.display('longText2')</dd>
96 <dt #if (!$editing && $hasEdit)
97 class="editableProperty"
98 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('staticList2')))"
99 data-property-type="object"#end>
100 <label#if ($editing) for="Projects.Code.ProjectsClass_0_staticList2"#end>
101 $escapetool.xml($doc.displayPrettyName('staticList2', false, false))
102 </label>
103 </dt>
104 <dd>$doc.display('staticList2')</dd>
105 <dt #if (!$editing && $hasEdit)
106 class="editableProperty"
107 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('longText6')))"
108 data-property-type="object"#end>
109 <label#if ($editing) for="Projects.Code.ProjectsClass_0_longText6"#end>
110 $escapetool.xml($doc.displayPrettyName('longText6', false, false))
111 </label>
112 <span class="xHint">
113 $escapetool.xml($services.localization.render('How do peers collaboratively change shared data and merge conflicts?'))
114 </span>
115 </dt>
116 <dd>$doc.display('longText6')</dd>
117 <dt #if (!$editing && $hasEdit)
118 class="editableProperty"
119 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('staticList3')))"
120 data-property-type="object"#end>
121 <label#if ($editing) for="Projects.Code.ProjectsClass_0_staticList3"#end>
122 $escapetool.xml($doc.displayPrettyName('staticList3', false, false))
123 </label>
124 <span class="xHint">
125 $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'))
126 </span>
127 </dt>
128 <dd>$doc.display('staticList3')</dd>
129 <dt #if (!$editing && $hasEdit)
130 class="editableProperty"
131 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('longText8')))"
132 data-property-type="object"#end>
133 <label#if ($editing) for="Projects.Code.ProjectsClass_0_longText8"#end>
134 $escapetool.xml($doc.displayPrettyName('longText8', false, false))
135 </label>
136 <span class="xHint">
137 $escapetool.xml($services.localization.render(' This layer defines how shared data evolves when multiple peers edit concurrently. It focuses on conflict-free merging, causality, and consistency of meaning, not transport or storage. CRDTs ensure deterministic convergence, while event-sourced or stream-driven models maintain a history of all changes and derive consistent state from it. Examples: CRDTs (Yjs, Automerge), OT, Event Sourcing, Stream Processing, Version Vectors, Peritext'))
138 </span>
139 </dt>
140 <dd>$doc.display('longText8')</dd>
141 <dt #if (!$editing && $hasEdit)
142 class="editableProperty"
143 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('staticList4')))"
144 data-property-type="object"#end>
145 <label#if ($editing) for="Projects.Code.ProjectsClass_0_staticList4"#end>
146 $escapetool.xml($doc.displayPrettyName('staticList4', false, false))
147 </label>
148 <span class="xHint">
149 $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'))
150 </span>
151 </dt>
152 <dd>$doc.display('staticList4')</dd>
153 <dt #if (!$editing && $hasEdit)
154 class="editableProperty"
155 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('longText9')))"
156 data-property-type="object"#end>
157 <label#if ($editing) for="Projects.Code.ProjectsClass_0_longText9"#end>
158 $escapetool.xml($doc.displayPrettyName('longText9', false, false))
159 </label>
160 <span class="xHint">
161 $escapetool.xml($services.localization.render('How do messages travel across multiple hops, and what abstract network structure is created?'))
162 </span>
163 </dt>
164 <dd>$doc.display('longText9')</dd>
165 <dt #if (!$editing && $hasEdit)
166 class="editableProperty"
167 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('staticList5')))"
168 data-property-type="object"#end>
169 <label#if ($editing) for="Projects.Code.ProjectsClass_0_staticList5"#end>
170 $escapetool.xml($doc.displayPrettyName('staticList5', false, false))
171 </label>
172 <span class="xHint">
173 $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'))
174 </span>
175 </dt>
176 <dd>$doc.display('staticList5')</dd>
177 <dt #if (!$editing && $hasEdit)
178 class="editableProperty"
179 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('longText10')))"
180 data-property-type="object"#end>
181 <label#if ($editing) for="Projects.Code.ProjectsClass_0_longText10"#end>
182 $escapetool.xml($doc.displayPrettyName('longText10', false, false))
183 </label>
184 <span class="xHint">
185 $escapetool.xml($services.localization.render('How do peers establish end-to-end byte streams and reliable delivery?'))
186 </span>
187 </dt>
188 <dd>$doc.display('longText10')</dd>
189 <dt #if (!$editing && $hasEdit)
190 class="editableProperty"
191 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('staticList6')))"
192 data-property-type="object"#end>
193 <label#if ($editing) for="Projects.Code.ProjectsClass_0_staticList6"#end>
194 $escapetool.xml($doc.displayPrettyName('staticList6', false, false))
195 </label>
196 <span class="xHint">
197 $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'))
198 </span>
199 </dt>
200 <dd>$doc.display('staticList6')</dd>
201 <dt #if (!$editing && $hasEdit)
202 class="editableProperty"
203 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('longText11')))"
204 data-property-type="object"#end>
205 <label#if ($editing) for="Projects.Code.ProjectsClass_0_longText11"#end>
206 $escapetool.xml($doc.displayPrettyName('longText11', false, false))
207 </label>
208 <span class="xHint">
209 $escapetool.xml($services.localization.render('How does data move across the medium?'))
210 </span>
211 </dt>
212 <dd>$doc.display('longText11')</dd>
213 <dt #if (!$editing && $hasEdit)
214 class="editableProperty"
215 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('staticList7')))"
216 data-property-type="object"#end>
217 <label#if ($editing) for="Projects.Code.ProjectsClass_0_staticList7"#end>
218 $escapetool.xml($doc.displayPrettyName('staticList7', false, false))
219 </label>
220 <span class="xHint">
221 $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)'))
222 </span>
223 </dt>
224 <dd>$doc.display('staticList7')</dd>
225 <dt #if (!$editing && $hasEdit)
226 class="editableProperty"
227 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('longText12')))"
228 data-property-type="object"#end>
229 <label#if ($editing) for="Projects.Code.ProjectsClass_0_longText12"#end>
230 $escapetool.xml($doc.displayPrettyName('longText12', false, false))
231 </label>
232 <span class="xHint">
233 $escapetool.xml($services.localization.render('How is data addressed and verified by content, not location?'))
234 </span>
235 </dt>
236 <dd>$doc.display('longText12')</dd>
237 <dt #if (!$editing && $hasEdit)
238 class="editableProperty"
239 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('staticList8')))"
240 data-property-type="object"#end>
241 <label#if ($editing) for="Projects.Code.ProjectsClass_0_staticList8"#end>
242 $escapetool.xml($doc.displayPrettyName('staticList8', false, false))
243 </label>
244 <span class="xHint">
245 $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'))
246 </span>
247 </dt>
248 <dd>$doc.display('staticList8')</dd>
249 <dt #if (!$editing && $hasEdit)
250 class="editableProperty"
251 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('longText13')))"
252 data-property-type="object"#end>
253 <label#if ($editing) for="Projects.Code.ProjectsClass_0_longText13"#end>
254 $escapetool.xml($doc.displayPrettyName('longText13', false, false))
255 </label>
256 <span class="xHint">
257 $escapetool.xml($services.localization.render('What relevance does this topic have for the project?'))
258 </span>
259 </dt>
260 <dd>$doc.display('longText13')</dd>
261 <dt #if (!$editing && $hasEdit)
262 class="editableProperty"
263 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('staticList9')))"
264 data-property-type="object"#end>
265 <label#if ($editing) for="Projects.Code.ProjectsClass_0_staticList9"#end>
266 $escapetool.xml($doc.displayPrettyName('staticList9', false, false))
267 </label>
268 <span class="xHint">
269 $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'))
270 </span>
271 </dt>
272 <dd>$doc.display('staticList9')</dd>
273 <dt #if (!$editing && $hasEdit)
274 class="editableProperty"
275 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('MesForm')))"
276 data-property-type="object"#end>
277 <label#if ($editing) for="Projects.Code.ProjectsClass_0_MesForm"#end>
278 $escapetool.xml($doc.displayPrettyName('MesForm', false, false))
279 </label>
280 <span class="xHint">
281 $escapetool.xml($services.localization.render('How are connections initiated, authenticated, resumed, and kept alive?'))
282 </span>
283 </dt>
284 <dd>$doc.display('MesForm')</dd>
285 <dt #if (!$editing && $hasEdit)
286 class="editableProperty"
287 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('staticList10')))"
288 data-property-type="object"#end>
289 <label#if ($editing) for="Projects.Code.ProjectsClass_0_staticList10"#end>
290 $escapetool.xml($doc.displayPrettyName('staticList10', false, false))
291 </label>
292 <span class="xHint">
293 $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)'))
294 </span>
295 </dt>
296 <dd>$doc.display('staticList10')</dd>
297 <dt #if (!$editing && $hasEdit)
298 class="editableProperty"
299 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('longText15')))"
300 data-property-type="object"#end>
301 <label#if ($editing) for="Projects.Code.ProjectsClass_0_longText15"#end>
302 $escapetool.xml($doc.displayPrettyName('longText15', false, false))
303 </label>
304 <span class="xHint">
305 $escapetool.xml($services.localization.render('How is data encoded, structured, and/or made interoperable between peers?'))
306 </span>
307 </dt>
308 <dd>$doc.display('longText15')</dd>
309 <dt #if (!$editing && $hasEdit)
310 class="editableProperty"
311 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('ctn_filesynch')))"
312 data-property-type="object"#end>
313 <label#if ($editing) for="Projects.Code.ProjectsClass_0_ctn_filesynch"#end>
314 $escapetool.xml($doc.displayPrettyName('ctn_filesynch', false, false))
315 </label>
316 <span class="xHint">
317 $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'))
318 </span>
319 </dt>
320 <dd>$doc.display('ctn_filesynch')</dd>
321 <dt #if (!$editing && $hasEdit)
322 class="editableProperty"
323 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('filesynch')))"
324 data-property-type="object"#end>
325 <label#if ($editing) for="Projects.Code.ProjectsClass_0_filesynch"#end>
326 $escapetool.xml($doc.displayPrettyName('filesynch', false, false))
327 </label>
328 <span class="xHint">
329 $escapetool.xml($services.localization.render('How are large objects transferred and deduplicated efficiently across peers?'))
330 </span>
331 </dt>
332 <dd>$doc.display('filesynch')</dd>
333 <dt #if (!$editing && $hasEdit)
334 class="editableProperty"
335 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('ctn_localsto')))"
336 data-property-type="object"#end>
337 <label#if ($editing) for="Projects.Code.ProjectsClass_0_ctn_localsto"#end>
338 $escapetool.xml($doc.displayPrettyName('ctn_localsto', false, false))
339 </label>
340 <span class="xHint">
341 $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'))
342 </span>
343 </dt>
344 <dd>$doc.display('ctn_localsto')</dd>
345 <dt #if (!$editing && $hasEdit)
346 class="editableProperty"
347 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('localsto')))"
348 data-property-type="object"#end>
349 <label#if ($editing) for="Projects.Code.ProjectsClass_0_localsto"#end>
350 $escapetool.xml($doc.displayPrettyName('localsto', false, false))
351 </label>
352 <span class="xHint">
353 $escapetool.xml($services.localization.render('How do nodes persist, index, and process data locally—without external servers?'))
354 </span>
355 </dt>
356 <dd>$doc.display('localsto')</dd>
357 <dt #if (!$editing && $hasEdit)
358 class="editableProperty"
359 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('ctn_crash')))"
360 data-property-type="object"#end>
361 <label#if ($editing) for="Projects.Code.ProjectsClass_0_ctn_crash"#end>
362 $escapetool.xml($doc.displayPrettyName('ctn_crash', false, false))
363 </label>
364 <span class="xHint">
365 $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)'))
366 </span>
367 </dt>
368 <dd>$doc.display('ctn_crash')</dd>
369 <dt #if (!$editing && $hasEdit)
370 class="editableProperty"
371 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('Crash_Res')))"
372 data-property-type="object"#end>
373 <label#if ($editing) for="Projects.Code.ProjectsClass_0_Crash_Res"#end>
374 $escapetool.xml($doc.displayPrettyName('Crash_Res', false, false))
375 </label>
376 <span class="xHint">
377 $escapetool.xml($services.localization.render('How do nodes recover and maintain correctness under failure?'))
378 </span>
379 </dt>
380 <dd>$doc.display('Crash_Res')</dd>
Zenna Elfen 1.1 381 </dl>
382 </div>
383 {{/html}}
384 {{/velocity}}