Ticket #4104: 20250401-Tahoe-LAFSMeetings.md

File 20250401-Tahoe-LAFSMeetings.md, 58.0 KB (added by blaisep, at 2025-04-01T18:29:58Z)

20250401 meetings

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