Ticket #4104: 20250408-Tahoe-LAFSMeeting.md

File 20250408-Tahoe-LAFSMeeting.md, 60.0 KB (added by blaisep, at 2025-04-08T19:10:09Z)

20250408Meetings

Line 
1---
2title: Tahoe-LAFS - Nuts & Bolts Meetings
3
4---
5
6# Tahoe-LAFS - Nuts & Bolts Meetings
7[Location](https://meet.jit.si/AccurateFiltersManipulateBefore)
8[Legacy meeting notes](https://tahoe-lafs.org/trac/tahoe-lafs/wiki/WeeklyMeeting)
9[This doc](https://hackmd.io/DzedQERvRLWaaaeo-gtDhA)
10[Consolidation of notes](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4104)
11[IRC Group: #tahoe-lafs@libera.chat]
12
13# Apr 8, 2025
14
15## Attendees
16- Jeff
17- Blaise
18- Chris
19- @hacklschorsch
20
21## Issue tracking Migration
22
23- [Preview of Forgejo instance (WIP)](https://forge.lafs.eval.latfa.net/tahoe-lafs/trac/issues)
24    - [How to pronounce Forgejo](https://forgejo.org/static/forgejo.mp4) ^^
25
26#### UNblock 4162: One step task Gandi authZ organization change: for DNS zone changes
27
28In response to the current proposal to [automate the DNS maintenance](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4162#comment:7)
29we decided to make a tactical change: [update the records manually](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4162#comment:10) to expedite the transition.
30
31Note: this process will consolidate issue tracking (`trac` ) with source control (`git`) ! So the developer experience will be similar to Github/Codeberg/Gitea/Forgejo
32
33## Docs
34- Landing page (Project Home)
35    - [Preview (WIP)](https://www.lafs.eval.latfa.net/) (Jekyll static site generator)
36- Wiki hosting
37- Explain Tahoe loggin in 35 easy steps
38- Explain Configuration formats
39
40
41### Dreams of a python SDK
42
43- inspired by https://github.com/gridsync/gridsync/blob/main/tests/integration/test_magic_folder_integration.py
44- a pattern for process management https://github.com/gridsync/gridsync/blob/main/gridsync/supervisor.py
45- a pattern for monitoring processes and events: https://github.com/gridsync/gridsync/blob/29edd61fa7dbd856fe757f0f11e911ebf6a44cab/gridsync/monitor.py#L372
46- a pattern for filtering https://github.com/gridsync/gridsync/blob/main/gridsync/filter.py
47- qt event loop with twisted https://github.com/twisted/qt5reactor/blob/master/src/qt5reactor/core.py
48
49
50## Cool Links:
51https://radicle.xyz/ (interesting science project for a mirror)
52Gray Hat Python [pdf](https://github.com/ManhNho/Python-Books-for-Security/blob/master/Gray-Hat-Python-Python-Programming-For-Hackers-And-Reverse-Engineers.pdf)
53Python compiler https://nuitka.net/
54GPU without cuda https://www.modular.com/mojo
55
56---
57
58# Apr 1, 2025
59
60## Attendees
61- Blaise
62- Chris
63- Meejah
64- Jeff
65- @hacklschorsch
66
67### Integration testing
68
69- Unit tests use `twisted.trial`
70- Integration tests use pytest
71- [Tahoe-lafs](https://github.com/tahoe-lafs/tahoe-lafs/tree/master/integration)
72- [Magic Folder](https://github.com/tahoe-lafs/magic-folder/tree/main/integration)
73- [Link](https://github.com/tahoe-lafs/magic-folder/blob/main/integration/test_invite.py#L17)
74- @Chris: If interested, some similar integration tests from the gridsync codebase (pytest-based, with real nodes, files, invites, network connections, and references to "Alice" and "Bob"): https://github.com/gridsync/gridsync/blob/main/tests/integration/test_magic_folder_integration.py
75- Parmetrize tests with hypothesis: https://hypothesis.readthedocs.io/en/latest/
76- Contract testing
77    - Using Pact: https://docs.pact.io/getting_started/comparisons
78    - Using Deal: https://pypi.org/project/deal/
79
80### Storage Node Protocol: Foolscap vs GBS (http)
81 - "Are we backwards compatible with FURLs?"
82     - The [structure of fURLs and NURLs ](https://tahoe-lafs.readthedocs.io/en/latest/specifications/url.html#syntax) is similar (except for the trailing `v=1`)
83     - Version 0 NURLs are different?
84 - Ideally have a test suite _independent_ of the implementation so we could test implementations against the same criteria
85 - We don't have a full protocol test to validate that an implementation handles (GBS, etc)  properly.
86 - Long Term: web assembly for the browser to connect to storage servers.
87
88### Glossary items
89 - [Spookey (SPKI)](https://en.wikipedia.org/wiki/Simple_public-key_infrastructure) is used in fURLs and NURLs ([v0 and v1 a bit differently](https://tahoe-lafs.readthedocs.io/en/latest/specifications/url.html#versions)).
90 - Verified Fakes (vs Mocks): https://pythonspeed.com/articles/verified-fakes/
91
92### Links
93
94https://tahoe-lafs.readthedocs.io/en/latest/specifications/url.html#versions
95https://tahoe-lafs.readthedocs.io/en/latest/specifications/http-storage-node-protocol.html#transition
96https://github.com/tahoe-lafs/tahoe-lafs/blob/master/src/allmydata/protocol_switch.py
97https://hypothesis.readthedocs.io/en/latest/
98Autobahn for websockets: https://github.com/crossbario/autobahn-python
99
100# Mar 25, 2025
101
102?? Blaise Absent
103
104# Mar 18, 2025
105
106## Attendees
107- Blaise
108- Meejah
109- Jeff
110- @hacklschorsch
111
112
113#### Tahoe Client shipped for Android
114- hacklschorsch: [Tahoe-LAFS client in the Google Play Store](https://play.google.com/store/apps/details?id=org.tahoe_lafs.tahoe_lafs_mobile)
115- F-Droid on hold - currently we can't build the app fast enough.
116
117#### Fediverse interest in migration to Forgejo
118- @b3n contributed to [a mastodon thread](https://x0r.be/@b3n/114139604580878482) where people were looking for details on migrating to Forgejo.
119
120#### Flo's updates from BOBKonf conference
121- Yjs CRDTs would work great with an append-only capability; Maybe we can emulate that for now with a range request to a read/write-cap?
122  - Meejah: Multiple writers is the main reason for append-only cap, not past data security.
123- Wants help reviewing new man pages for the Tahoe-LAFS Debian package
124  - [grid-manager](https://github.com/tahoe-lafs/tahoe-lafs/pull/1432)
125  - Updates to tahoe man page (opening a PR soon)
126
127#### We need multi-writer append-only cap (but ...
128- Tahoe can do it now with one writer... if you promise to always write to the same cap
129- Tahoe can't support 2 or more writers.
130- CRDTs compare versions and DETECT conflicts
131- Magic folder will compare two versions (using clock timings) but it doesn't (yet) resolve conflicts.
132    - There is a PR will display the conflicts so a human can resolve them
133    - But it polls for an immutable
134    - Meejah: We need a cryptographer to add support and it would be a nice upgrade (to avoid polling)
135
136#### Capability theory
137- Ocap implementations are mostly about communication (Spritely Goblins, etc)
138- Tahoe is one of the few for data capabilities
139-
140
141### Links
142
143- [yjs](https://github.com/yjs/yjs)
144- https://yjs.dev/#features
145- Rust port of CRDT https://github.com/y-crdt/y-crdt
146- [Macaroons](https://github.com/rescrv/libmacaroons) is for data.
147
148
149# Mar 11, 2025
150
151### Attendees
152- Chris
153- Jeff
154- @hacklschorsch
155
156#### CI stuff
157Flo managed to successfully download and zip together all artifacts so they upload properly,
158But the Test PYPI token has expired and a new one needs to be generated:
159[Relevant PR](https://github.com/tahoe-lafs/zfec/pull/121)
160[Relevant issue](https://github.com/tahoe-lafs/zfec/issues/127)
161
162#### Mobile app now available on the Play store
163"Open testing" release at: https://play.google.com/store/apps/details?id=org.tahoe_lafs.tahoe_lafs_mobile
164
165Needs better getting-started documentation because it cannot create anything on its own
166
167#### A Haskell storage server implementation exists
168but can't communicate with the Python client, maybe versioning issues
169One issue is the eclectic logging of the Python implementation and the minimal logging of the Haskell implementation
170Indiana Jones style code archaeology reveals a vast trove of well-designed Haskell code in tahoe-great-black-swamp
171Just not sure of how to build the proper url
172
173#### Possibility of lightweight HTML/JS-only apps with Tahoe-LAFS Client HTTP API
174Just an html page that displays text or a text editor depending on read or write-cap
175Or a picture gallery
176Ecosystem of tiny web apps, like sandstorm?
177Potentially using the GBS server?
178These apps could themselves be stored in a Tahoe directory
179
180# Feb 18, 2025
181
182### Attendees
183- Blaise
184- Chris
185- Jeff
186- @hacklschorsch
187- Meejah
188
189#### Hosting multipoint video conferences.
190
191[Pair on](https://sr.ht/~meejah/pear-on/) (what sets up ttyshare in magic wormhole) does not have a video multiplexer.... Maybe VLC has a server?
192https://askubuntu.com/questions/56356/how-to-host-a-video-conference-with-vlvc
193> I just found out that you can use VLC and VLVC to hold video conferences between 2-10 people, and that sounds amazing, hopefully removing the heavy lean on Skype.
194https://www.videolan.org/vlc/libvlc.html
195http://breakthrusoftware.com/html/onlinedocs/kb/videomill/vlc.html
196Python bindings https://github.com/oaubert/python-vlc
197
198https://wiki.videolan.org/VideoLan_VideoConference/
199
200Jitsi: uses webRTC and that is hard to punch through wormholes.
201
202
203#### web sockets in Tahoe-lafs
204
205https://github.com/tahoe-lafs/tahoe-lafs/blob/master/ws_client.py
206
207#### Safer Serving Eliot logs: don't write to disk
208Write logs to in memory files to reduce exposure of sensitive data
209https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3006
210fixed https://github.com/tahoe-lafs/tahoe-lafs/pull/584
211
212#### Upload Helper
213- does the upload helper work?
214- is it still useful? are uploads an issue in 2025?
215
216#### Upload: Strategy of happiness
217
218https://tahoe-lafs.readthedocs.io/en/latest/specifications/servers-of-happiness.html#upload-strategy-of-happiness
219
220#### Deploying grid manager
221a solution for private storage
222Maybe use the test grid?
223
224#### No new capability types
225because we don't have cryptographers for cryptographic review.
226
227## Feb 11, 2025
228
229### Attendees
230- Blaise
231- Chris
232- Jeff
233
234#### Private Facts API discussion, Chris' suggestions
235- Consider using the CLI `alias` function for human readable references to capabilities.
236- Consider saving capabilities in a local secrets manager.
237
238## Feb 4, 2025
239
240### Attendees
241- Blaise
242- Chris
243- Jeff
244- Ben
245- Meejah
246
247#### FosDem Lightning talk
248- Flo presented
249- Link TBD
250- No analytics because we don't control the DNS name.
251
252#### Trac Migration
253- Brian on board with DNS redirection, etc
254
255#### Other items in progress, pending grant renewal
256- LAFS rust crate
257- Recovery workflow
258
259#### What sequence diagramming tools work well?
260- PlantUML is the most portable and future proof https://crashedmind.github.io/plantuml.github.io/
261- Mermaid is the most beautiful, but very JavaScripty https://mermaid.js.org/intro/
262- kroki.io is the umbrella project that runs everything https://kroki.io/
263- excalidraw is good for drag&drop with a bit of import/export https://excalidraw.com/
264
265## Jan 28, 2025
266
267### Attendees
268- Blaise
269- Chris
270- Flo (@hacklschorsch)
271- Jeff
272- Meejah
273- Pete
274
275
276#### Pete has news from "Magic Internet" !
277
278- Opportunity for differentiating the guiding principals from the legacy tech debt!
279- Python Tahoe is moving to Open Collective for managing grants
280- Itamar working on some outstanding 3.13 compatibility requirements
281- Magic Internet is focused on Magic Wormhole, Magic Cap
282- Building basic tools the internet needs but no one will fund
283    - eg. [libsodium](https://doc.libsodium.org/) is an implementation of the [NaCL](https://nacl.cr.yp.to/) protocols.
284    - Another comparable: [libssl](https://github.com/openbsd/src/blob/master/lib/libssl/ssl_lib.c).
285        - but easier to use, like https://github.com/mendsley/libssl
286
287- Magic Cap is "data capabilities" (inspired by OCap) - library for decentralized capabilities. (Networking, Permissions, Persistence)
288    - Rust for interop
289    - Python bindings (because we love python)
290    - Wasm for browsers (eg JavaScript, NodeJS)
291- Client-first
292- eg. "am I allowed to change these bytes?"
293    - Today: enforced by Linux
294    - Next: enforced by linux, determined by MagicCap
295- Independent of a server or provider.
296- Budgeting and roles, TBA
297- Public infrastructure and assets, Real Soon Now.
298
299#### FAQs
300- Is there a community meeting or some other way to follow Magic Cap?
301    - Not Yet. TBD.
302- Is Magic Cap a re-write of Tahoe-LAFS?
303    - No. Think of it as smalltalk on crack.
304- Are we making an oCap system?
305    - No. The libraries should include
306- What if I want to use Spritely goblins?
307    - Magic Cap could work with Spritely.
308- Do we know what the boundary of the API looks like (Files? AuthZ Permissions? Directories?). What level of abstraction would the libraries operate?
309    - TBD, but we'll avoid leaking some of the abstractions we have leaked in the past.
310
311
312#### Getting steeped in Rust
313- Chris wants to align his work on the Rust LAFS crate.
314- Wormhole Rust implementation has fallen behind.
315
316### Other links:
317Brian on Magic Wormhole:  https://www.youtube.com/watch?v=sulJG196BMw
318    -  Longer talk: https://www.youtube.com/watch?v=oFrTqQw0_3c
319-  Learn Rust with practical excercises: https://rustplatform.com/
320-  https://gitlab.redox-os.org/redox-os/cookbook
321-  https://blog.bovid.space/conceptual-intro-to-spritely-goblins.html
322-  https://en.wikipedia.org/wiki/Object-capability_model
323-  The [Cosmos SDK](https://docs.cosmos.network/main/learn/advanced/ocap)
324-  Carbonado is an archival format for encrypted, durable, compressed, provably replicated consensus-critical data, without need for a blockchain or powerful hardware. https://crates.io/crates/carbonado
325
326
327## Jan 21, 2025
328
329### Attendees
330- Blaise
331- Chris
332- Flo (@hacklschorsch)
333- Jeff
334- Meejah
335
336#### Chris: Rust implementation
337- Erasure, mutables...
338- Meejah asked about the fec crate
339
340#### Flo: New PubGrid online
341- New PubGrid online
342  - Couldn't keep old introducer fURL because of lost key, new fURL is in https://tahoe-lafs.org/trac/tahoe-lafs/wiki/TestGrid
343- [Updates](https://github.com/tahoe-lafs/infrastructure/pull/6) merged into `main` branch of [IaaC repository](https://github.com/tahoe-lafs/infrastructure/)
344- Many improvement ideas already in https://github.com/tahoe-lafs/infrastructure/issues
345  - These tickets should be in Trac instead
346 
347#### Flo: Debian packages accepted
348- Great work from Andrius (maintainer for Debian packages)
349- Tahoe-LAFS incl. 8 (?) new dependencies have been accepted into Debian Testing!  This means we'll make it into the upcoming Debian release (and all downstream distros, see, for example, https://repology.org/project/tahoe-lafs/versions)
350- All tests pass with Python 3.12 and 3.13
351- Our code is continuously tested against packaging and Debian version of dependencies in https://github.com/tahoe-lafs/tahoe-lafs/pull/1426, to be merged
352- Cosmetic fixes ongoing regarding SyntaxWarnings of Python 3.12/3.13
353
354#### Flo: Tahoe-LAFS mobile app
355* Own grid functionality completed
356* Working on parsing plain Tahoe-LAFS Dircaps
357* Have [improved architecture of application](https://gitlab.com/tahoe-lafs/tahoe-lafs-mobile/-/merge_requests/29)
358* Test version going Play store
359
360#### Private Facts sample app
361
362Decisions
363* example with key:values (write direct to Tahoe?)
364* example with sqlite (cache locally, save to Tahoe on exit)
365
366For simple pure tahoe, do the key:value
367
368Error Handling
369* examples at https://github.com/tahoe-lafs/magic-folder/blob/main/src/magic_folder/tahoe_client.py
370* Chris: check if the tahoe node is running vs a failure in transmission (eg. we got a connection refused error, is the node running? or is there a problem like a happiness quota)
371* [`get_welcome`](https://github.com/tahoe-lafs/magic-folder/blob/993f1ab478ca073c594b16973984ba485d9575d5/src/magic_folder/tahoe_client.py#L186) is the key to happiness
372
373
374#### Fedora packaging
375
376* they are having trouble with the python package: https://copr.fedorainfracloud.org/coprs/g/fedora-review/fedora-review-2327756-python-magic-wormhole/build/8295435/
377* Some consider the Rust implementation to be more current
378*
379---
380
381## Jan 14, 2025
382
383### Attendees
384- Blaise
385- Chris
386- Flo (@hacklschorsch)
387- Jeff
388- Meejah
389- Pete
390
391### Test Grid in progress!!
392
393- Change the dnd records
394- Decide the lifecycle of files,
395- expiration
396- governance (manage the introducers?)
397
398### Private Facts
399Blaise gave a tour of the latest description of the sample application:
400- using the Sphinx theme: https://github.com/pradyunsg/furo
401- ADR: use the `requests` library for the python examples
402- ADR: use sqlite for the "database"
403- ADR: use fastAPI for the app server
404- ADR: handle the "directory/filepath" metaphor later
405
406#### Decisions
407
408- Impose the file system metaphor later?
409- Use the test grid?
410
411### Roadmap: Tahoe Enhancement Proposal process. What work is the project likely to prioritize?
412As funding for the current work comes to an end, what are we working on and what are the Project priorities?
413What would most benefit the project?
414- Chris working on Rust implementation (does it have a future?)
415- Blaise working on project adoption (use cases, office hours, conferences, example apps)
416- Interoperability with other technologies
417
418
419## Jan 7, 2025
420### Attendees
421- Blaise
422- Ben
423- Chris
424- Flo
425- Jeff
426- Meejah
427- Shane
428- Sherry
429
430We exceeded the jitsi capacity. It struggled to handle the size of the meeting!
431
432#### Welcome Sherry
433
434
435## Dec 17, 2024
436### Attendees
437- Blaise
438- Flo
439- Jeff
440- Meejah
441
442
443
444### Previous Items
445
446#### CI is mostly green:
447- https://github.com/LeastAuthority/tahoe-lafs/tree/3484.test-build-images
448- https://github.com/LeastAuthority/tahoe-lafs/tree/4143.refresh-images-part2
449-
450
451### New Items
452
453#### 3rd party Integrations
454- Rodrigo has some scaffolding for a app using svelte.js in the repo for the sample app: https://github.com/blaisep/private_facts/blob/main/packages/src/routes/dashboard/%2Bpage.server.js
455
456#### Writing design docs
457@meejah:
458- Describe the characteristics of:
459    - Grid
460        - Protocols (GBS, foolscap, both)
461        - storage criteria
462    - Introducer
463        - member criteria
464        - service discovery
465        - announcements
466    - Membrane
467- Examples:
468    - https://github.com/tahoe-lafs/tahoe-lafs/blob/master/docs/managed-grid.rst
469    - https://github.com/tahoe-lafs/tahoe-lafs/blob/master/docs/specifications/http-storage-node-protocol.rst
470
471Need not be an implementation guide. It could be prose or something more structured, such as:
472- https://github.com/balanced/balanced-api/blob/master/features/callbacks.feature
473- https://github.com/behave/behave/blob/main/features/fixture.feature
474- https://github.com/balanced/balanced-api/blob/master/features/settlements.feature
475
476## Dec 10, 2024
477### Attendees
478- Ben
479- Blaise
480- Chris
481- Jeff
482- Meejah
483- Shane
484
485### New Items
486
487#### CI
488- Ben has CI working everywhere
489    - Github
490    - Local
491    - Backport changes to CircleCI
492    - **Except**: Inconsistency specific to Circle CI (even in Least Authority Org), possibly resource related on circle CI's k8s config
493- Trac issues
494    - 3484
495    - 4131
496    - 4135
497    - 4142
498    - 4143 (Updating the CI images)
499    - xxxx (Using the new images)
500    - xxxx (_Plan B_ bypassing the intermediate image build)
501
502Note: Tahoe-lafs github admin group has 6 members.
503
504#### Is building CI images in advance a premature optimization?
505- Circle CI creates "tahoelafsci/debian:11-py3.9" and uses that image to create the build.
506- It requires a periodical "click of the button" for the occasional rebuild of the CI images.
507- It does not actually provide reproducible builds.
508- We are not pinning images nor are we pinning wheels.
509- It *may* provide some faster builds (we have not quantified)
510- Reporoducibility vs (...) Currency (?)
511- @blaise: We should consider a separate repo/pipeline for CI images because their revision cycle is different from Tahoe-lafs
512- @meejah: there is not a lot of project or version specific code added to the docker images.
513- @meejah: I don't want to run ci against a previous frozen version. I want to run CI against the current version.
514- @meejah: useful to pull the latest platform, maybe pin the python.
515- @ben: we can fix what we currently have (the Dockerfile infrastructure) and consider making changes separately.
516- Ben will explore a PR building with the upstream images without the intermediate docker images.
517
518#### Consider pinning Python separately from platform
519
520- cache and pin the platform? (criteria?)
521- cache and pin the Python? (criteria?)
522
523
524
525## Dec 3, 2024
526### Attendees
527- Ben
528- Blaise
529- Flo
530- Shane
531- Meejah
532- Chris
533- Jeff
534
535
536#### We need a release, soon
537@hacklschorsch
538
539#### CI failures
540- @btology happy to migrate CI off CircleCI (we chose Circle for reliability, but that has changed)
541    - has a plan to move most of the unit tests [which currently fail on CircleCI](https://github.com/LeastAuthority/tahoe-lafs/actions/runs/12144760020/job/33864884211) over.
542    - Todo: Update fedora builder to fc41
543- Typecheck fails on `master` https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4115
544- Oracle Linux fails: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4135
545- Master branch does not build
546    - Integration tests do not run on master branch
547- Nix pacakge build does not work
548    - Too Slow:https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4126)
549    - Cachix does not have current images, so dependencies must be built from source.
550    - We need Cachix token [trac](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4134)
551    - We need access to the Cachix org to regnerate the token
552    - Do we care about nix?
553        - If someone needs the flake for Tahoe-lafs, eg (private storage?) they will fail.
554        - Maybe we consider that "downstream" and people can fix it.
555- PyPi: ownership for prod, but only JP has access to test.pypi
556- Ubuntu builder fails https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3949
557- We build wheels for Windows, Mac OS, Debian and PyPI
558- Should we decide which CI are "blockers"?
559    - Debian, Mac OS and Windows MUST be green
560    - If no one complains, then they dont block
561
562
563## Nov 26, 2024
564### Attendees
565
566- Ben
567- Blaise
568- Flo
569- Shane
570- Meejah
571- Chris
572
573### New Items:
574
575#### Tahoe Project open office hours
576- Consider a standing schedule for folks to drop in with questions and pairing.
577- Blaise is available to turn on the lights, start the coffee pot and arrange the chairs.
578- Meejah suggests 15:00 UTC might be a good time for Europe and North America.
579
580#### GridSync
581
582[Standalone magic-folder binaries fail due to missing win32com.shell import](https://github.com/gridsync/gridsync/issues/707)
583[PyInstaller/frozen tahoe executables fail to execute on macOS 13 due to missing libintl](https://github.com/gridsync/gridsync/issues/709)
584
585#### User Stories for Landing  Page: www.tahoe-lafs.com (and related Wiki content)
586- Describe the CRUD lifecycle
587    - Who does the CRUD ?
588    - What privs do they need?
589- Failure Scenarios:
590    - Host outages? (no response from host, page not found, ...)
591    - Content bugs? ()
592@hacklschorsch wants :
593    - static landing page sounds good
594    - enough redirect to preserve the original trac urls https://docs.gitlab.com/ee/user/project/pages/redirects.html
595   
596   
597- Wiki Pages are mostly reproducible
598    - Before:
599        - https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4095
600    - After:
601        - https://forge.lafs.eval.latfa.net/tahoe-lafs/trac/issues/4095
602    - NOT reproducible:
603        - dynamic(ish) content like Roadmap,
604
605
606#### Broken CI updates
607
608- CircleCI keeps asking for an SSH key in some fork or PR!?
609- Flo thinks he has fixed most of CI issue,
610- but there is still a flaky systemtest which fails from time to time
611- Ben is trying to reproduce this flay part with GH actions
612
613- Refactor (big) tests, see https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4078 and then https://github.com/tahoe-lafs/tahoe-lafs/pull/1354
614    - Tracebacks get elided through Twisted, tracebacks get created at the deferred, yet we want them created from where they are deferred. ( [because](https://github.com/tahoe-lafs/tahoe-lafs/pull/1354/files#r1444822971) )
615    - @meejah: "The real problem may be that we're shutting it down too many times" and it does things after it has been stopped (eg. Add shares called after we deleted Shares)
616    - Differing seeds for random number generators can result in strange behaviour so @Chris points out that we can force `PYTHONHASHSEED=1` and force consistency.
617
618#### FOSDEM 2025
619
620- Flo and Ben would like to present some works (e.g.: Mobile, Tracker, Website),
621
622
623## Nov 19, 2024
624### Attendees
625
626- Blaise
627- Rodrigo
628- Meejah
629- Chris
630- Jeff
631- @hacklschorsch
632- Shane
633
634### New Items:
635
636#### User stories for ticketing system
637Meejah and Blaise have paired on the "admin" side user stories (e.g.: "as an admin, I do not expect to require access to the underlying host" eg. system upgrade, system users, etc.)
638
639#### SupaWiki and Tahoe for private content.
640
641- Describe the threat model. Be clear on the expectations resulting from the specific deployment mode.
642For example, with Desktop apps there is "Trust on every use" so it is "less secure" than locally installed code.
643
644@rodrigo explained that it is possible to conserve the principles in Tahoe. He had to read a lot to understand where the edges are and what he would need to implement in order to take advantage of the security model.
645
646@meejah: Let's pretend we have an available grid. Where would we keep the capability string, how would a patient expose data to the doctor?
647- Prefer the term "exposure" over trust. There is no trust in tahoe, just exposure.
648
649@Rodrigoplp: we dont' yet have specific constraints, because we're exploring an example (the private medical facts)
650- The work that needs to be done is to make clear where the exposure begins.
651- If the system requires many nuanced decisions, then it will be used by experts
652- If you need to access simple users, then they need apps that have few dials and levers
653
654@chris: tahoe doesn't have a security guarantee beyond the capability string, so sharing and recovery would need to be addressed by an external tool.
655
656@meejah: well, there is a `membrane` cap that provides a short lived string. Tahoe has been conservative about claims, which is why there is no delete key.
657
658*Questions*
659- if an app can add a layer of access control, *then* it can facilitate sharing, revocation and recovery?
660- should we add glossary entries for terms like `exposure` vs `trust`
661
662### Todos:
663- Explicit doc for the "security model" (inclusive of:
664    -  https://tahoe-lafs.readthedocs.io/en/latest/architecture.html#security
665    -  https://tahoe-lafs.readthedocs.io/en/latest/about-tahoe.html#what-is-provider-independent-security (ie.  The "provider-independent security" doc)
666- Expand glossary entries to include security concerns (eg. "treat capability strings as secrets", or the "secure domain is where the cap string is in the clear")
667- Add Glossary entries:
668    - exposure
669    - trust
670    - sharing
671    - revocation
672    - recovery
673    - membrane
674    - macaroon
675
676
677#### Broken CI
678
679@hacklschorsch : the tests seem to fail around HTTP. Foolscap seems to work but HTTP will pass and then fail.
680https://github.com/tahoe-lafs/tahoe-lafs/pull/1381#issuecomment-2444698978
681(maybe improve setup and teardown? see: allmydata.test.test_system.HTTPSystemTest )
682
683Ben noticed that there are less failures on the PAID circle CI account?!
684Ben will try to verify this using the LA fork:
685https://github.com/LeastAuthority/tahoe-lafs/tree/master, which now fails on CircleCI because of this ghost SSH key issue.
686
687### Beware logging
688There are several log sources and they are joined (manually) using timestamps :frowning:
689- Eliot  (`eliot tree`, `eliot prettyprint`)
690- Twisted
691- Python logger
692
693#### FOSDEM 25 in Bruxelles ?
694- Should we present a talk here?
695
696
697## Nov 12, 2024
698### Attendees
699
700- Ben
701- hacklschorsch
702- Jeff
703- Rodrigo
704- Shane
705- Blaise (late)
706
707### New Items:
708
709#### SupaWiki https://supawiki.com/
710Rodrigo joined and presented the idea to record personal data in a safe/private wiki.
711
712Update from blaise, limited availability during mourning:
713
714Public Repo for the integration app is: https://github.com/blaisep/private_facts
715@rodrigoplp is blasting ahead with integration into supawiki.com
716
717#### Mobile Tahoe-LFS mobile app in Haskell
718Good news, a few PRs have been merged: 11, 14, 15, 17, 19, 20 and 21:
719https://gitlab.com/tahoe-lafs/tahoe-lafs-mobile/-/merge_requests/?scope=all&state=merged
720
721#### User stories for Tahoe-LAFS end-users:
722Jeff and Blaise are working on describing how Tahoe-LAFS works.
723Leading to a sequence diagram (WiP):
724https://github.com/blaisep/private_facts/blob/main/docs/source/upload_content.puml
725
726#### MoveOffTrac
727- Pairing meeting on user stories postponed.
728- Possible licensing issue discussed with Codeberg. In short, if this is dual-licenced project, it should not be an issue.
729- The problem could come from [TGPPL](https://github.com/tahoe-lafs/tahoe-lafs/blob/master/COPYING.TGPPL.rst) and CodeBerg [policy](https://docs.codeberg.org/getting-started/faq/#can-i-host-software-and-resources-without-a-free-and-open-source-software-license%3F)
730- Ben needs more info from Meejah and Pete to try to get a written approval from Codeberg.
731- As a reminder: this is not a blocker, until we decide to move the code from GH to CodeBerg (not in scope so far).
732
733#### CircleCI
734- Ben is working on the SSH ghost key issue
735- More info in [#4098](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4098#comment:17)
736- The problem may be fixed in 2 ways:
737  1. gaining admin access (using a temporary GH user) to add and remove an ssh key (hopefully cleaning the dirt in the pipes)
738  2. forcing https checkout using a custom step (PR in progress)
739- Rodrigo said it may be worthed to consider alternatives to CircleCI, like an independent version of GitHub Actions.
740- As a reminder: the CI is already half GH, half CircleCI. But if GH is doing better, both look vendor locking.
741- Some steps have been made in the MoveOffTrac to test Gitea act runner, which is a replacement for GitHub actions: https://code.lafs.eval.latfa.net/tahoe-lafs/web-landing-page/src/branch/main/.gitea/workflows/jekyll.yaml
742
743
744#### Other links:
745https://yopass.se/   (Maybe uses Tahoe?)
746https://github.com/tahoe-lafs/tahoe-lafs/blob/master/COPYING.TGPPL.rst
747
748
749---
750
751## Nov 05, 2024
752### Attendees
753
754- Ben
755- Blaise
756- Chris
757- hacklschorsch
758- Jeff
759- Meejah
760- Shane
761
762
763### New Items:
764
765#### Project Adoption
766The creator of [SupaWiki](https://supawiki.com) is interested in being able to create and read private objects using Tahoe.
767
768@blaisep :  created a fresh repo to hold code for the Tahoe-specific demo app, inspired by the meetup-health tracker: [private_facts](https://github.com/blaisep/private_facts). Happy to add collaborators.
769
770### Ongoing
771
772#### Trac migration with keywords
773[PR](https://github.com/tahoe-lafs/trac2gitea/pull/31) in progress for trac2gitea to migrate keywords as labels (total = 912 w/ some dupplicates).
774
775Let's meet offline to review https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4095 and memorialize a decision process.
776- summarize the user scenarios ([stories](https://github.com/tahoe-lafs/MoveOffTrac/blob/main/docs/UserStories.md))
777- clarify the constraints and requirements
778- clarify the scope of each milestone (eg. describe structure of an issue, choose. a target pla)
779
780#### CircleCI
781- Making progress in related repositories (e.g.: ZKAPAuthorizer) and learning for Tahoe-LAFS
782- ssh key error seen in many projects, inluding Tahoe-LAFS: WiP to understand/avoid it
783- Too much permissions by default
784
785#### RClone
786- https://forum.rclone.org/t/tahoe-lafs-backend/6625
787- Flo: Very interesting! The REST API looks perfect for rclone - there are many rclone backends which work in a very similar way so that would be easy for rclone to consume.
788
789#### Python packaging
790- Is there a more "standard way" of packaging Python (Ben found it heterogeneous)?
791- Blaise and Jeff are investigation [UV](https://github.com/astral-sh/uv): promessing, but?
792- Tahoe-LAFS still uses [Makefile](https://github.com/tahoe-lafs/magic-folder/blob/main/Makefile)!
793- Note: Tahoe-LAFS packages are not deployed to PyPi from CI
794- BTW: PyPi is about to drop signature w/o alternative
795- Meejah still publishes signatures for other projects
796- See https://github.com/meejah/pypiratzzi/
797
798---
799
800## Oct 29, 2024
801### Attendees
802
803- Ben
804- Blaise
805- Chris
806- hacklschorsch
807- Pete
808- Jeff
809- Meejah
810- Shane
811
812
813### New Items:
814
815#### CodeBerg has some retrictions about the license
816- https://codeberg.org/Codeberg/org/src/branch/main/TermsOfUse.md#2-allowed-content-usage
817- Re-licensing does not look like an option for Tahoe-LAFS (TGPPL)
818- This is a cons, but there are other Forgejo providers
819
820#### Magic-grid installation is fixed (Meejah)
821A simple typo in `pyproject.toml` resulted in ugly traceback. https://paste.ofcode.org/wapHcem8hXBVgigJ8LQUFg
822
823#### Explosion of interest in the Health app
824Front end developers from the Nivenly community (folks behind https://hachyderm.io ) are excited about a health tracker with provider-independent privacy.
825
826#### Jeff working on 1101
827Writing tests for a CLI improvement (handling the `--verbose` option for commands that don't explicitly support it). @meejah suggests starting with `tahoe ls` because it lacks `--verbose` and is very simple.
828    - The Twisted CLI test infrastructure is weak.
829    - The way the Twisted handles cmd args is somewhat magical.
830    - Ideally, we re-write the CLI with `click` ... :santa:
831
832#### Learning to run individual tests:
833
834[tox.ini](https://github.com/tahoe-lafs/tahoe-lafs/blob/master/tox.ini#L76) has most of the details. In general, most of the tests use Twisted's trial module. Use `python -m twisted.trial --help`
835
836#### Help is on the way for CI.
837
838B3n reports that there is approval for applying some of his time to work on CI.
839
840#### something about SEEDS proposal
841??
842
843#### Maybe release a new Magic-Folder
844    - conflict-resolution branch may be messy.
845    - Chris might benefit for grid-sync
846    - The Tahoe client UI for Magic Folder is ... not smooth because it shows the various levels and metadata..
847   
848#### Case Study: Bootstrap WireGuard using magic wormhole
849- One time use of magic wormhole to set up or add a wireGuard node. @meejah
850
851#### trac2gitea keywords
852- https://github.com/tahoe-lafs/trac2gitea/issues/28
853- ticket keywords would generate 1846 new labels
854- Meejah suggested to look at https://github.com/twisted/twisted which had similar concern (e.g: #11563)
855
856### Related links:
857
858[STUN tunneling](https://github.com/magic-wormhole/magic-wormhole/issues/6#issuecomment-147854595)
859
860## Oct 22, 2024
861### Attendees
862
863- Blaise
864- Chris
865- hacklschorsch
866- Meejah
867
868
869### New Items:
870#### Debian build
871Is there a set of tools we can use to validate our Debian builds?
872#### Decision: let's avoid including Debian-specific dependencies in upstream.
873
874
875#### Python 3.13
876Jeff noticed a weird error with 3.13.rc2: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4118#comment:4
877Chris is checking compatiblity. 3.13 deprecated `cgi` module and there are dependencies on it.
878#### Decision: We should move cgi classes to use the Twisted APIs
879
880#### Testing NAT with pytest and libvirt Virtual Networking
881@meejah : testing NAT with pytest is a headache
882@blaisep : consider one of the networking emulation libraries like [pygmni](https://karneliuk.com/2021/08/pygnmi-10-rapid-and-reliable-network-testing-with-pytest-pygnmi-and-openconfig/)
883@chris : `headscale` is a open source tailscale/wireguard to VPN all-the-things (orthogonal, but interesting)
884https://archive.fosdem.org/2023/schedule/event/goheadscale/
885
886---
887
888## Oct 15, 2024
889### Attendees
890
891- Blaise
892- B3n
893- Meejah
894- Jeff
895- Chris
896
897
898### random notes
899
900- some discussion of security etc around Terraform-managed Gandi DNS
901- some meta-discussion of privacy of data for some use-cases
902- distributed forgejo (etc) PRs mentioned, discussed a bit
903- blocker: CI not working https://github.com/tahoe-lafs/tahoe-lafs/pull/1377
904- Contributor/Developer [step-by-step guide](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4118)
905- It would be good to have a good solution for "oops, I merged the wrong commit" scenario. [trac](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4124#ticket)
906- Twisted project used https://github.com/chevah/trac-to-github to migrate from trac to github
907
908#### Decisions:
909- convert legacy keywords to static labels
910- link to stored queries that contributors can reuse.
911- Become independent of [CircleCI](https://sr.ht/~meejah/magic-grid/) is an aspiration. Some brave soul should do it.
912- we'll need CircleCI until we can make CI run on the three platforms: Linux, Windows, Mac.
913- Look at using [magic grid](https://sr.ht/~meejah/magic-grid/) to automate the tutorials
914
915### [Issue Tracking](https://github.com/tahoe-lafs/MoveOffTrac/blob/main/docs/UserStories.md)
916@b3n and @blaisep: Writing the [user stories](https://github.com/tahoe-lafs/MoveOffTrac/blob/main/docs/UserStories.md) for issue tracking revealed some scenarios we had not considered. The team should discuss the alternative and consequences.
917We learned:
918- There are additional, distinct,  roles with associated privileges and activities.
919- Many issues are associated with each other using the free text `keywords` feature, which is not covered by the current migration.
920- Ticket Discovery: The View Ticket page has many pre-defined queries which have no direct counterpart outside of trac.
921
922### Related links:
923- [Git Federation](https://drewdevault.com/2018/07/23/Git-is-already-distributed.html)
924- [Git over ActivityPub](https://forgefed.org/)
925
926
927
928### Gaps in the [Contributor guides](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4118)
929A new contributor has no clear path to a usable PR. The instructions assume familiarity with the project. For example:
930- A contributor cannot find related tickets (WIP, previous solutions, dependencies, @meejah's tutorial automation ticket)
931- How to collaborate on tickets that relate to each other?
932- CI/CD: Which commands build the project?
933- ...It happens that Tox is the the entry point to CI (meejah: not really, but yes tox can run _some_ of the different environments a contributor would want)
934- When to use the various Tox targets?
935- The instructions for a PR should include everything that a contributor needs for sucessful review (ie. reviewer should not have to run additional tests). (meejah: current best effort here is probably https://github.com/tahoe-lafs/tahoe-lafs/blob/master/CONTRIBUTORS.rst)
936
937### QUESTIONS: current contributor user stories
938- As a current contributor, when you want to find a ticket in Trac, do you:
939    - Use a prepared query on the [View Ticket](https://tahoe-lafs.org/trac/tahoe-lafs/wiki/ViewTickets) page?
940    - Use the Custom query form?
941    - Follow links inside an existing issue?
942
943
944
945---
946
947## Oct 8, 2024
948### Attendees
949
950- Blaise
951- B3n
952- Chris
953- hacklschorsch
954- ccx
955- Jeffhimself
956
957
958### New Items
959
960
961Include tests in the description of an issue.
962- https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2050#comment:7
963
964Proposed Docs config changes
965    - create
966        - docs/test (to store the docs-specific tests)
967        - docs/source (to restrict Sphinx to the the docs content, exclude tests, etc.)
968    - add sys.path to docs/source/conf.py (to find the source directory)
969    - Makefile (run Sphinx against the source directory)
970    - Makefile doc-testing (add target for `make doc-testing`)
971
972
973#### The step-by-step Developer Guide
974A failing test(s) for being ready to
975- build docs (`tox -e docs` ?)
976- run the tests?
977- submit a PR (nothing broken that the author couldnt' check themselves)
978- build a release
979
980#### Trac migration Developer Experience
981- @ccx Search? Associating trac issues to a feature is a PITA (labels, components are migrated)
982- @chris: developers should be able to see CI results; what is the integration of issue/commit/PR
983- @blaisep : reorder commits to match their tests.
984- Codeberg CI https://codeberg.org/Codeberg-CI/woodpecker
985
986### Questions
987- How does tox know about the fixtures?
988- setup.py install returns:
989`error: The 'zope-interface>=5' distribution was not found and is required by Twisted, twisted
990` (and I'm not supposed to run setup.py)
991
992---
993
994## Oct 1, 2024
995### Attendees
996
997- Blaise
998- B3n
999- Chris
1000- hacklschorsch
1001- Jeffhimself
1002- Meejah
1003- Pete
1004
1005### New Items:
1006
1007- Release Checklist, simple PR edition?
1008- Public Grid?
1009- Public mailbox server? (MagicFolder)
1010- Fowl and Dilation mentioned as unannounced apps related to file transfers
1011
1012
1013#### Trac Migration docs
1014- WIP https://github.com/tahoe-lafs/MoveOffTrac/tree/docs-update-24w40/docs
1015- Docs tickets will serve as the initial spike to test new user (Blaisep) creation.
1016- User Account management has some cases we want to excercise (forgot password, account confirmation, etc)
1017- Redirecting legacy URLs to the new issue tracker.
1018
1019### Prior Items:
1020
1021- Debian packaging in progress (@hacklschorsch will ask Debian Tahoe-LAFS maintainer about status, if we can help, and whether/what dependencies are currently missing in Debian)
1022- fixed cryptography library issue https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4100#no1
1023
1024#### Dependency management
1025
1026- "Tahoe is an app, so we shouldn't pin dependencies" @pete
1027
1028#### related projects
1029- "Git with you": Peer to Peer git colab (not via github) using pairon (?)
1030- [Dulwich](https://www.dulwich.io/docs/#getting-started) is a python implementation of git
1031- https://meejah.ca/blog/wizard-gardens-vision
1032- [Copybin](https://carml.readthedocs.io/en/latest/command-copybin.html), but private
1033- https://magic-folder.readthedocs.io/en/latest/invites.html#invites
1034- Brian's STUN server (?)
1035- @pete mentioned research on [OCAP](https://github.com/ocapn/ocapn)s over [CRDT](https://github.com/alangibson/awesome-crdt)s
1036- exposing ssh using [Inlets sshmux](https://inlets.dev/blog/2024/02/05/access-all-your-ssh-servers-with-sshmux.html)
1037- https://www.wireguard.com/
1038- [ZCAP](https://w3c-ccg.github.io/zcap-spec/) is separate from Tahoe. [Github]()
1039
1040
1041---
1042
1043
1044## Sep 24, 2024
1045### Attendees
1046
1047- Blaise
1048- B3n
1049- Chris
1050- hacklschorsch
1051- Jeffhimself
1052- Meejah
1053- Pete
1054
1055### New Items:
1056
1057- The new tutorials and docs will default to systemd in examples for running as a service.
1058- We'll start migrating issues. @b3n will provide a summarized plan next week. If necessary, we'll migrate to a self-hosted forgejo instanc.
1059
1060#### Migration: User Management topics
1061- Account creation flow
1062    - Auto-registration OFF,
1063    - User Creation
1064        - Auto create if Github auth'd
1065        - Manual
1066- Forgotten password flow (eg. Github IdP is down)
1067
1068#### Tahoe-S3
1069- A client which maps the finger tree into S3 numbers (and deal with S3 size limits)
1070- Finger tree used to handle failure scenarios
1071- Immutables only
1072- Doesn't create the shares
1073- Doesn't replace the native Tahoe storage server
1074- A challenge to implement in Haskell because it requires intimate knowledge of Tahoe internals, REST and Foolscap APIs
1075
1076#### ADR: Tech stack decisions
1077- Whither Haskell?
1078    - How much functionality is already implemented?
1079    - Haskell is a good high-level language.
1080- Whither Rust?
1081    - If we build *low-level* components in Rust, there's opportunity for re-use.
1082    - Rust has lots of tooling
1083
1084#### Improving Immutables
1085- Single block writers are the problem (@ccx)
1086- blockless multi-writer implementation is the answer
1087
1088Speaking of block storage, @blaisep wonders if [k8s longhorn](https://longhorn.io/docs/1.7.1/references/longhorn-client-python/) integration may be a crowd pleaser.
1089
1090
1091## TILs
1092
1093- Duplicity has a backend option [`--tahoe`](https://fossies.org/linux/duplicity/duplicity/backends/tahoebackend.py)
1094- Python pre-compiled for [iOS](https://github.com/PyO3/maturin/issues/1742#issuecomment-1686219705), courtesy of [maturin](https://www.maturin.rs/tutorial)
1095- Room for improvement in describing our goals, roadmap milestones, features, etc. ("implement Tahoe-S3" vs "have a phone app")
1096
1097
1098---
1099
1100## Sep 17, 2024
1101### Attendees
1102
1103- Blaise
1104- B3n
1105- Pete
1106
1107### New Items:
1108
1109#### Trac migration
1110The time has come. @b3n requests that next week we set in motion the steps to leave trac and use .... something else. (Eventually, we may use GitHub, but before we can migrate to GitHub we need to clean up the issue data anyway).
1111
1112#### Provisioning and configuration management
1113On a ddifferent note, most of the meeting was a discussion comparing provisioning and config management tools. @pete has a project where he needs to produce packaged images for various distributions. Ultimately, the images will run containerized applications.
1114This is an area with too many choices.
1115
1116Some of the resources that came up in the discussion may be interesting to others:
1117- [DeBock's Ansible Roles](https://robertdebock.nl/ansible.html#roles). These are tested, [using molecule](https://ansible.readthedocs.io/projects/molecule/), against several Linux distos and versions.
1118- [Packer](https://www.packer.io/) from HashiCorp, takes the "images as code" approach. Concerns about a terraform-style licensing issue came up.
1119- [Distrobox](https://distrobox.it/) to create containers with custom configurations.
1120- [Toolbx](https://containertoolbx.org/) is a wrapper for [podman](https://docs.podman.io/en/latest/) and can be considered as a simpler [alternative to distrobox](https://discussion.fedoraproject.org/t/thread-about-switching-to-distrobox/89151/18?page=2)
1121- Finally, the consensus is to create a `justfile` using [Just](https://just.systems/man/en/) to control the tasks and invoke tools like packer and ansible when necessary. Also, consider the trick that the [Fedora Atomic Desktop](https://getaurora.dev/) use to alias `ujust` to point to [admin-provided tools](https://universal-blue.discourse.group/t/just-reorganization-part-1-released/417#automation-and-scripting-3).
1122- We agreed that [dagger engine](https://docs.dagger.io/quickstart/#topics) would be useful for interacting with the running containers, but this was out of scope.
1123
1124---
1125
1126## Sep 10, 2024
1127### Attendees
1128
1129- Blaise
1130- hacklschorsch
1131- Chris
1132- Ccx
1133
1134### Step-by-step approach to getting started
1135Instead of [showing everything at once](https://imgflip.com/i/930yve), build up the service one feature at a time. @blaisep  has Incoming PR for https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4103
1136
1137
1138### Express modularity using C4 notation for the diagrams
1139- layers of abstraction Context, Container, Component, Code
1140- [PlantUML includes](https://crashedmind.github.io/PlantUMLHitchhikersGuide/) C4 in the std lib
1141- https://crashedmind.github.io/PlantUMLHitchhikersGuide/C4/C4Stdlib.html
1142
1143### Describing Tahoe to local user groups
1144As prep for presenting to larger conferences
1145@blaisep offers to do user group talks (later: conference presentations)
1146- Historical context (eg. why did they create SDK first? Surveillance capitalism, enshitification, etc.)
1147- Use case examples (creating examples relevant to end users)
1148    - The "dumb pipe scenario" (provider-independent security), use cloud storage for personal data.
1149    - Storage only is low value
1150
1151#### Challenges
1152Either gaps in functionality or gaps in understanding
1153- Describing the security boundaries (eg.vs corp walled gardens)
1154- Key management, rotattion, revocation
1155- The "dumb pipe scenario" (provider-independent security), use cloud storage for personal data.
1156- No generic writer( @ccx ) can't write everything to/from everywhere.
1157
1158#### Comparisons
1159Describing Tahoe in terms of something they already know.
1160- Nostr:  @chris has written some [Nostr](https://nostr.org/) bots. It's not a dumb pipe in a security sense. It's meant to be censorship-resistance, not confidentiality. More of a brute force approach vs lots of cryptography. @hacklschorsch liked the way the Nostr delivery model (push data to your favorite relay...) is presented.
1161Flo said NIP-104 will be a big improvement for private messaging
1162https://github.com/nostr-protocol/nips/pull/1427
1163 
1164- IPFS: similar layer of abstraction. More client implementations. Scales differently? https://news.ycombinator.com/item?id=37750529
1165- Signal: but for storage ( _can Signal self host?_ ) The reference implementation is a useful app, SDKs, Open protocol, ubiquitous.
1166- Syncthing: (peer-to-peer) but with decentralization and capabilities (@ccx)
1167
1168---
1169
1170## Sep 3, 2024
1171### Attendees
1172
1173- b3n
1174- Blaise
1175- hacklschorsch
1176- Meejah
1177- Ccx
1178
1179
1180## Prior Items
1181
1182- Glossary items
1183
1184- Debian packaging maybe delayed because `pycddl` has never been packaged for Debian. We might make it in by the end of the year. @hacklschorsch
1185    - (we should check if any of our other dependencies have never been packaged for Debian @meejah)
1186
1187- Trac migration (see: https://tahoe-lafs.org/trac/tahoe-lafs/wiki/MoveOffTrac#ProsandConsofself-hostedvsSaaS) looking at the results of migration, @b3n noticed a number of issues with author attribution and broken reference links.
1188  - @b3n suggests that we consider a transition period where we run selfhosted and collaborate on the issues we care to migrate. (eg. the user creation needs to be automatic, yet if we set it to auto, then we also get junk accounts created) We can choose a threshold of noise and migrate or wait until it is perfect.
1189  - "Our trac instance has defferred maintenance and accummulated cruft over the years. The community wants to retain the option to selfhost, even if we choose not to. So if it makes sense to self host, then we can exercise that option." @meejah
1190
1191- @hacklschorsch: Can we lower the Tahoe-LAFS merge process turnaround time?
1192  - Optimistic Merging / other ideas for the Tahoe-LAFS GitHub repo? to make contributing leaner/more fun
1193  - meejah: A PR that is green and has approvals is already merged quickly now.  If not, write on IRC
1194  - Currently, meejah is the only active committer in Tahoe-LAFS.  The committers agree it would be good to have more committers, but it's not an easy task. Blaise nominates ccx, but ccx does not have time right now.
1195
1196
1197## New items
1198
1199- Veilid: is it real, where are the intersections?
1200
1201@ccx : it's a library which bundles a number of p2p protocols. No existing app yet.
1202
1203@meejah : played with ethersync and he made it do a thing. It's early and doesn't do anything yet. For instance, no one would install MagicWormhole if they couldn't do file sharing.
1204
1205### Making it easier to develop on Tahoe
1206Separation of concerns, breaking tahoe into modules would be a good next move. @ccx (@blaise start a trac issue?)
1207
1208---
1209
1210## August 27, 2024
1211### Attendees
1212
1213- b3n
1214- Chris
1215- hacklschorsch
1216- Meejah
1217- Pete
1218
1219### Updates
1220
1221- Flo
1222  - LA wants to hire a senior Haskeller to work on LAFS
1223  - iOS: Obsidian is still investigating the "illegal instruction" compiler/linker issue
1224  - Wrote some eMails back and forth with the Debian Tahoe-LAFS maintainer: Would be great if 1.20 would be clean of Python 2 code so it can be included in Debian again.  Also need to look at Debian Trixie code freeze date
1225  - Works with Blaise on Tahoe-LAFS docs
1226  - ... and would like to pair more in general
1227 
1228- Chris
1229  - published a Rust crate for LAFS: https://crates.io/crates/lafs 
1230 source repo: https://github.com/crwood/lafs
1231  -  Local and much faster than the Python equivalent (.25s instead of 24s on Chris' machine)
1232  -  It comes with Python bindings
1233
1234- b3n
1235  - Codeberg importing issue acknowledged by them
1236  - Would like to discuss self-host vs. SaaS for the upcoming GitTea with Meejah
1237
1238- Meejah
1239  - Magic Wormhole protocol work
1240  - FOWL Policy & Permissions API mostly done, soon to be merged & released.
1241  - [Pear-On](https://sr.ht/~meejah/pear-on/) should work ATM - testers welcome
1242
1243
1244## Previous items
1245
1246@blaisep Now owns [17 trac tickets from the backlog](https://tahoe-lafs.org/trac/tahoe-lafs/query?owner=blaisep&status=assigned&status=new&status=reopened&id=&keywords=~&reporter=~&col=id&col=summary&col=keywords&col=reporter&col=status&col=owner&col=type&col=priority&col=milestone&col=changetime&desc=1&order=id) which are addressed in this month's effort to produce the getting started kit (docs and Artifacts)
1247
1248
1249## New Items
1250
1251- Trac [#4103](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4103#ticket) is a running summary of the items related to the Getting started guide.
1252- Trac [4102](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4102#ticket) describes a workaround for a problem with one of the transitive dependencies (`eliotutils.py`).
1253- @blaisep has limited availability until Sep 30 2024
1254
1255
1256---
1257
1258## August 20, 2024
1259### Attendees
1260
1261Blaise
1262b3n
1263ccx
1264Chris
1265hacklschorsch
1266
1267## Previous items
1268
1269### WTF Circle CI?
1270* Is it broken? Maybe drop it?
1271* Do we have much logic in the Circle CI?
1272* It might be tests failing, rather than a systemic fail (credentials, dependencies, etc)
1273* "AMP server"? (twisted RPC framework) @ccx
1274* * https://app.circleci.com/pipelines/github/tahoe-lafs/tahoe-lafs/4958/workflows/d16324ae-293d-45c8-ba97-6ac39ef4cfc4
1275* https://app.circleci.com/pipelines/github/tahoe-lafs/tahoe-lafs/4958/workflows/d16324ae-293d-45c8-ba97-6ac39ef4cfc4/jobs/86344
1276
1277
1278### Towards a portable CI
1279* keep logic in the repo
1280* avoid huge Nix dependency (or maybe build a weekly Nix image)
1281* https://docs.gitlab.com/ee/ci/ci_cd_for_external_repos/github_integration.html
1282
1283
1284
1285### Describe the build process
1286* add prose in the dev guide to the files in the repo describing the build (@blaise)
1287* update the release checklist: https://tahoe-lafs.readthedocs.io/en/latest/release-checklist.html
1288
1289### Mutables, Service of Happiness
1290* @blaise asked where we were at with mutables...
1291* using mutables as single writers (eg. Tahoe backup)
1292* It's a big thing, eventually replace with a proper design for a multi-writer primitive
1293* For now, stick with readonly or Magic Folder for examples and getting started guide.
1294* > Mutables are not just even single-writer safe because partitions can cause rollbacks. Shouldn't be super common but it's still real world error case. @ccx
1295
1296### [MoveOffTrac](https://tahoe-lafs.org/trac/tahoe-lafs/wiki/MoveOffTrac) - [#4095](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4095)
1297* Trac dump from last month has been migrated on the self-hosted Forgejo [instance](https://forge.lafs.eval.latfa.net/tahoe-lafs/trac-2024-07-25).
1298* Working on user mapping: trying to figure how to link trac users to Gitea/Forgejo users, with a mapping to the Github user if different!
1299* New Forgejo instance (copy/paste from Gitea) to be closer to Codeberg: https://forge.lafs.eval.latfa.net/tahoe-lafs/
1300* Testing migration to Codeberg with pagination bug (workaround), performance issue (deadlock error) and user mapping (unlikely possible)
1301* Keyoxide.org may help us to link all those account!?
1302
1303## New Items
1304
1305* Blaisep has trac !!!
1306* TIL: Trac use "htdigest" (@meejah "i'll put a note in ~trac")
1307
1308---
1309
1310## August 13, 2024
1311### Attendees
1312
1313Blaise
1314b3n
1315ccx
1316Chris
1317hacklschorsch
1318Pete
1319
1320## Previous items
1321
1322- Blaise needs a trac account to CRUD issues, for docs, etc.
1323- GitTea self register results in many spam accounts @b3n
1324- We have users on Trac and users on GitHub, sometimes the names are different. @b3n
1325- Trac Migration Plan [WIP](https://tahoe-lafs.org/trac/tahoe-lafs/wiki/MoveOffTrac)
1326- migrated Trac eval instance (https://code.lafs.eval.latfa.net/tahoe-lafs/trac-2024-05-23/issues)
1327
1328## New
1329- Meejah might not have admin to [github.com/tahoe-lafs](https://github.com/tahoe-lafs/tahoe-lafs/pull/1370) but so far that isn't yet a problem (eg. if Circle CI creds need updating.) @blaisep
1330- Consider using Google, GitHub auth for auto register CodeBerg accounts
1331- Consider upgrading/self hosting Trac instance (maybe it's not so bad after all)
1332- Could we make trac readonly and do new work on the ["demo" instance](https://www.lafs.eval.latfa.net/) instance?
1333
1334
1335### Migrating Issues: Goals and Constraints
1336- Anything off of track is better
1337- Github Issues are accessible, but there is risk of lock-in, enshitification
1338- Gitea/Forgejo/CodeBerg is future-proof (no lock-in)
1339- Inconsistent tribal knowledge about decisions made last year @blaisep et al.
1340
1341---
1342
1343
1344## August 6, 2024
1345### Attendees
1346
1347Blaise
1348b3n
1349Chris
1350ccx
1351hacklschorsch
1352meejah
1353Pete
1354
1355
1356Thought leaders:
1357Amber O'Hearn (not so much)
1358Larry Lessig
1359Brewster Kahle
1360Christine_Lemmer-Webber (spritely)
1361
1362
1363New Items:
1364
1365Pete's foundation doc: https://docs.google.com/document/d/1MpFUUB9sX-SA6rsHpq9ZkIhrnZaG3zwzI6KJ9I0VAgE/edit
1366
1367## Comparables
1368
1369* https://spritely.institute/about/
1370* https://ocapn.org/
1371* https://darkcrystal.pw/ (meejah)
1372* ISRG https://www.abetterinternet.org/
1373* https://divviup.org/
1374* https://sans-io.readthedocs.io/
1375
1376
1377### Mission statements
1378
1379"Infrastructure for Libre, gratis, private, intentional composability and sharing " @Blaise , @meejah
1380
1381Device introduction @meejah
1382
1383"social infrastructure tools (sharing and composability to support differrent social structures and relationships)"
1384Bootstrap social relations, dependency maps.
1385@Chris
1386
1387secure sharing with least privilege (zero trust?) @ccx
1388(Higher resolution, more ephemeral than app-level privs)
1389https://roy.marples.name/blog/posts/capsicum_vs_pledge_final_thoughts
1390
1391Discoverable, "~~decentralized~~" (Autonomous?) / disconnected in nature (eg. TLS without the PKI) @Pete
1392Provider independent
1393
1394
1395### Community Survey
1396
1397@Chris: Maybe do a poll "Should we build a Library or an application?" Right now it's the worst of both worlds. Maybe we could explore where we could get more bang; decompose into smaller building blocks may be better.
1398eg, decouple wire protocol from the U I.
1399https://sans-io.readthedocs.io/ @Pete
1400
1401Who is the audience? grandmas with photosharing? Political activists? crypto bros?
1402
1403---
1404
1405## July 30, 2024
1406### Attendees
1407
1408Blaise
1409hacklschorsch
1410b3n
1411Chris
1412Pete
1413ccx
1414
1415## Highlights:
1416* Project governance structure
1417
1418## Agenda
1419
1420### Previous topics:
1421
1422* Docs PR in progress
1423
1424## New Topics:
1425* A proposal for a governance structure (Pete)
1426
1427### An endowment and governance structure
1428
1429* Align the Tahoe mission with the right institutional structure.
1430* Similar cases:
1431    * The [Veillid Foundation](https://veilid.org/about-us/) is a very close analog.
1432    * https://www.djangoproject.com/foundation/
1433    * https://foundation.mozilla.org/en/who-we-are/
1434    * https://www.abetterinternet.org/documents/2023-ISRG-Annual-Report.pdf
1435    * https://www.abetterinternet.org/about/
1436    * https://matrix.org/foundation/about/
1437* Fund some dedicated project support
1438
1439### Who is the community?
1440* Board members
1441* What are the activities?
1442* Intellectual property portfolio (trademarks, copyrights, patents)?
1443
1444### Who is NOT the community?
1445Where has the project stalled and why?
1446Why do people drop in, get frustrated, and leave?
1447What are the blockers for adoption and how can we overcome them.
1448
1449### Tahoe public resources; what could we build next?
1450* Public test grid ?
1451* ZCap servers ?
1452
1453#### Other options for funding services
1454
1455* https://docs.opencollective.foundation/how-it-works/fees
1456
1457#### Dependent projects
1458GridSync (golang) ?
1459Magic Wormhole ?
1460
1461#### Dependencies
1462* Twisted
1463* Mutables
1464* Python https://meta.pycqa.org/introduction.html
1465
1466---
1467
1468## July 23, 2024
1469
1470### Attendees
1471
1472Blaise
1473hacklschorsch
1474Meejah
1475b3n
1476Chris
1477ccx
1478
1479
1480## Highlights:
1481* Mutables would be a good thing for the Foundation to fund.
1482* The goal of [GBS](https://gitlab.com/tahoe-lafs/gbs-downloader) is to replace foolscap. Not there yet. (sucks to require a node online)
1483* Create project for client filesystem
1484
1485## Agenda
1486
1487### Previous topics:
1488
1489Meejah:
1490* Trac disk space restored
1491* Granted admin privs
1492
1493hacklschorsch:
1494Mobile LAFS [Wiki page](https://tahoe-lafs.org/trac/tahoe-lafs/wiki/TahoeLAFSMobile) with draft description of Features and Scope.
1495
1496B3n:
1497Next, Trac migration path (DNS, )
1498Codeberg bug
1499
1500
1501### New topics:
1502* B3n: Prepare Trac migration operating instructions (DNS settings, etc)
1503* B3n: Help Meejah create Trac account (for Blaise).
1504* Decision: Let's try to make the single mobile code base work (hacklschorsch)
1505* Deep integration with the OS is not MVP  (hacklschorsch)
1506* [Gitlab milestones](https://gitlab.com/tahoe-lafs/tahoe-lafs-mobile/-/milestones/7#tab-issues) don't have the OS integration yet.(ccx)
1507* Create FUSE module for the dev environment (ccx)
1508
1509## Notes:
1510
1511Chris:
1512* [Porting Tahoe hashlib](https://github.com/crwood/deterministic-keygen/issues/5) to Rust and found an issue:
1513* To do a restore with user supplied keys, if a directory is already created we get an uncoordinated error. Possible solution is to derive the cap locally.
1514* Curating a common set of test vectors
1515
1516#### Restore scenarios
1517Todo: write up a description, describing permuted scenarios (Meejah, Chris)
1518(We need better words to describe the operations and events)
1519
1520Four scenarios:
1521* Client failed, grid is fine
1522* Grid loses nodes
1523* Grid loses partial data
1524* Grid loses all data
1525
1526
1527#### Mutables
1528* Don't do service happiness (ccx's complaint)
1529
1530Can't detect all the restore scenarios. Sometimes all the shares end up on one server :frowning:
1531What is the meaning of Happiness? Happiness is just a number (Meejah)
1532
1533#### Mobile
1534* Need to write up the description in  [Wiki page](https://tahoe-lafs.org/trac/tahoe-lafs/wiki/TahoeLAFSMobile)
1535* We need to describe how much of the functionality
1536* Foolscap requires a node online, [GBS](https://gitlab.com/tahoe-lafs/gbs-downloader) does not
1537* "User defined grid" ? (ccx)
1538* What if we had a gridsync client (b3n)
1539* Deep integration with the OS is not MVP  (hacklschorsch)
1540* Obsidian has something called `backend` which is different.
1541* [Obelisk overrides](https://gitlab.com/tahoe-lafs/tahoe-lafs-mobile/-/blob/main/obelisk/haskell-overrides.nix?ref_type=heads)
1542* Let's have good interface definitions (ccx)
1543* [Gitlab repo](https://gitlab.com/tahoe-lafs/tahoe-great-black-swamp) Code
1544
1545
1546#### File system browser? (ccx)
1547* Can we use the native [mobile libraries](https://emanual.github.io/Android-docs/guide/topics/providers/document-provider.html)?
1548* How much do we need in the GUI?
1549* (https://gitlab.com/tahoe-lafs/tahoe-lafs-mobile/-/blob/main/obelisk/haskell-overrides.nix?ref_type=heads)
1550
1551#### Create project: Investigate FUSE File System Support (ccx)
1552* Read/Only native client
1553* Read/Only magic folder
1554* Read/Write Magic Folder
1555* Built on top of GBS downloader
1556
1557---
1558
1559
1560