Ticket #4104: MeetingNotes-2025-08-26.md

File MeetingNotes-2025-08-26.md, 80.2 KB (added by blaisep, at 2025-08-26T18:16:24Z)

Meeting Notes 2025-08-26

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
14# 26 Aug, 2025
15## Attendees
16
17- Blaise
18- Jeff
19- B3n
20
21[Top level ticket: Move off Trac - Execution - Forgejo](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4161)
22
23- Both Hetzner and Scaleway support `cloudinit` to build the VMs, using the code in https://github.com/tahoe-lafs/infrastructure
24- SRS: Self-hosted provider: https://www.statichost.eu/
25 
26
27### Basic challenge to changing git hosts: the contributor names may get lost
28
29- User names are specific to a git host, so you need to consider a mapping from `source host` -> `target host`
30
31### Web Resources
32We cah use the assets from the new tahoe sites that @b3n was working on....
33
34[Jekyll Project code](https://forge.of.tahoe-lafs.org/tahoe-lafs/web-landing-page/)
35https://mmistakes.github.io/minimal-mistakes/
36https://mademistakes.com/work/
37https://home.of.tahoe-lafs.org/posts/2025-08-13-new-landing-page/
38
39# 17 Aug, 2025
40## Attendees
41
42- Blaise
43- Jeff
44- Flo
45- B3n
46
47### Tour of the staged [forge](https://forge.of.tahoe-lafs.org/)
48
49- Source of the web-landing-page hosted there in a repo under Tahoe-LAFS org.
50- Workflow using Github-compatible [Actions](https://forge.of.tahoe-lafs.org/tahoe-lafs/web-landing-page/actions)
51- Tracking requests (DNS updates) for @meejah in: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4183
52- @b3n and @hacklschorsch are sys and org admins
53- @chris is org admin too
54- @blaise is non-member (to serve as guinea pig)
55- @jwjacobson is (non-migrated) new member
56- self-registration is closed until migration from Trac
57- Legacy meeting notes will get migrated from the [trac wiki](https://tahoe-lafs.org/trac/tahoe-lafs/wiki/WeeklyMeeting)
58
59
60### Web assembly tahoe client ( @hacklschorsch )
61- For running the client in the browser (and move the exposure boundary closer to the user app).
62
63### updated SFTP tutorial
64- @hacklschorsch edited the [blog post](https://privatestorage-staging.com/sftp-tutorial-without-web-browser/blog/introducing-sftp/) about SFTP.
65
66
67# 12 Aug, 2025
68## Attendees
69
70- Blaise
71- Jeff
72
73### Improving private-facts core
74
75- https://github.com/private-facts/private-facts/pull/12 includes fixes to regressions and a number of other clean ups.
76- Important: we noticed that the client needs to be able to find the storage server so that is a failure we didn't consider.
77- Now you can run `just dev` and `just hello` and have a better experience.
78
79### Approaching the character limit of HackMD
80- maybe it's time to migrate, or move to some kind of wiki?
81
82
83# 5 Aug, 2025
84## Attendees
85
86- Blaise
87- Jeff
88- @hacklschorsch
89- @meejah
90
91### SFTP client still works well
92- Flo has good experience with the S/FTP transport backing up local files
93- A tutorial for Windows: https://privatestorage-staging.com/blog-sftp-frontend/blog/anything-goes-with-sftp/
94
95### Private Facts
96
97- private-facts.org points to a gh-page
98- MIT license for now (PF is mostly tools for using Tahoe, not Tahoe itself)
99
100
101# 29 Jul, 2025
102## Attendees
103- Blaise
104- Jeff
105- @hacklschorsch
106
107
108## News: Zulip forum for discussions related to "private-facts" (aka Tahoe in exile)
109Invite link: https://private-facts.zulipchat.com/join/enaxastululml2pwfo5e2mvv/
110
111## Why Zulip and not {Discourse, Discord, Slack, IRC, GitHub, Xitter, Gitter, Matrix, }
112
113- It's topic threaded
114- Open Source
115- Written in python
116- Browser and mobile clients
117- OAUTH with GitHub , GitLab , Google , and more
118
119
120## New infra waiting for DNS click-ops (and maybe some finishing touches)
121- https://forge.of.tahoe-lafs.org/
122- https://home.of.tahoe-lafs.org/
123
124- https://forge.of.tahoe-lafs.org/tahoe-lafs/web-landing-page
125- https://github.com/tahoe-lafs/infrastructure/blob/main/nix/hosts/webforge/forgejo.nix
126
127### Blockers:
128- accounts registration (eg. Flo, Blaise, Jeff)
129
130# 22 Jul, 2025
131## Attendees
132- Blaise
133- Ben (@btlogy)
134- Chris
135- Flo (@hacklschorsch)
136- Jeff
137
138## Topics
139
140### Github Action billing issue resolved ! - #4182
141(aka: the most expensive penny.)
142
143
144### Private Facts
145
146> "A showcase for client-first security using capability theory and Tahoe-LAFS."
147(currently a github org to serve as an umbrella for projects similar to, or working with, Tahoe-LAFS)
148(inspired by palletsprojects.com)
149
150Internal Goals:
151- provide visibility to the contributors
152- boost reputation, portfolio for newer contributors
153- fast prototyping of example apps
154- easy navigation to related material
155
156    Now:
157    - https://github.com/private-facts
158    - private-facts using FastAPI ( a fullstack app)
159    - private-facts using Svelte (a TypeScript client)
160
161    Next:
162    - Contacts: facts@private-facts.org , toots.pio-p.io/@private-facts , talk.tutes.ai/forums/private-facts,
163    - Code of Conduct
164    - Related projects....
165    - Awesome capability theory resources
166    - Benchmarks (testgrid up time, latency, volume...)
167    - Core: https://gitlab.com/adrianmay1/bala-lafs
168    - Mobile: https://gitlab.com/adrianmay1/bala-lafs-mobile
169    - Cookbook:
170        - DIY grid
171        - DIY introducer
172
173Started by @blaisep and @jwjacobson.
174
175### LA grant is likely closing this week
176- no more money left (budget used up + late bill from Obsidian turned up behind the sofa)
177- no feedback from the community since Feb whether we can continue?
178- @hacklschorsch offers (continuing) caring for the test grid
179
180### Rewrite of the mobile app+lib
181- Adrian is finishing the collaboration with LA and might be continuing working on bala-lafs and bala-lafs-mobile a little while longer.  He is seeking funding.
182
183### Passphrase recovery
184- no time to make it as good as hoped first
185- Chris will update on the final state of project next week
186
187### Web-landing page migration from Trac #4183
188- pending on DNS click OPS (request sent to Meejah last week)
189- expecting downtime to obtain the Let's encrypt certificate
190- rewrite/redirect rules will still sent the end-users to the current Trac tickets/wiki pages
191
192### Trac migration to Forgejo #4161
193- GHA are back, so last PR(s) will be merged asap (remote backups)
194- then async OPS will be required to migrate the data (likely after Ben's vacation)
195
196# 15 Jul, 2025
197## Attendees
198- Adrian
199- Ben (@btlogy)
200- Chris
201- Flo (@hacklschorsch)
202- Jeff
203
204## Topics
205
206### GitHub Actions stopped (more like GitHub inactions still) - #4182
207
208- Still not fixed: GHA are still failing and no feed back from GH support
209- LeastAutority is trying to add a credit card, hoping this will unlock the GHA
210
211### Shared secrets - #4177
212
213- Ben asked if anyone else than LeastAuthority could be involved (w/ a PGP key)
214- Chris advised to ensure any new recipient would explicitely approve using his PGP key (even if already known - e.g. Brian or Meejah)
215- Repository ready to be tested by Flo: https://github.com/tahoe-lafs/infrastructure-pass
216
217
218### Mobile app work in progress
219
220
221# 8 Jul, 2025
222## Attendees
223- @blaisep
224- Adrian
225- Ben (@btlogy)
226- Chris
227- Flo (@hacklschorsch)
228- Meejah
229
230## Topics
231
232### Bala-LAFS: Haskell Core library completed! Mobile App is next...
233
234- Core: https://gitlab.com/adrianmay1/bala-lafs
235- Mobile: https://gitlab.com/adrianmay1/bala-lafs-mobile
236
237### Namespacing the (Haskell) library source repos...
238
239Decided:
240  - Gonna clone gitlab:adrianmay1/bala-lafs and bala-lafs-mobile into tahoe-lafs gitlab space
241  - bala-lafs-mobile won't have the history of tahoe-lafs-mobile: just its own history
242 
243Options:
244
2451. Make a new organization somewhere (GitLab, GitHub etc)
246   - Pro: Clearer for us insiders what fits with what
247   - Con: Less clear for outside people how this relates to tahoe-lafs
248   - Con: Bala-LAFS unknown, might need explaining
249   - Con: Proliferation of organizations (already confusing between GitHub, GitLab, Trac, ...)
250
2512. Open new repositories in the GitLab tahoe-lafs organization, keeping the "bala" name/prefix
252   - Pro: It would be clear enough that this is different from the tahoe- repositores
253   - Pro: It would also be clear that the software is supposed to work with tahoe* things
254   - Pro: All members are already there
255   - Pro: fewer places to look for tahoe stuff
256   - We would still publish (in the store) under the 'tahoe-lafs-mobile' name when everything works well
257
258## GitHub Actions stopped (more like GitHub inactions now, innit)
259
260- Seems like credit card failure is the reason for GHA not working
261- Chris has reached out to GitHub support
262
263## Magic Internet project seems to not be happening anymore
264
265- There's a [group on OpenCollective](https://opencollective.com/tahoe-lafs/projects/magic-internet), but not much more.  The legal entity that was planned is not going to happen anymore.
266- Meejah says we should ask Pete.
267  - @hacklschorsch asked Pete via eMail on 2025-07-10.
268
269
270## Links:
271- Python SPAKE module: https://github.com/warner/python-spake2
272- Spake2 PyPi: https://pypi.org/project/spake2/
273
274# 1 Jul, 2025
275## Attendees
276- Adrian
277- Ben (@btlogy)
278- blaisep
279
280## Topics
281
282### Mobile App
283
284About 1 day from completing the core library and magic folder but for validation.
285
286Starting on adapting the mobile app to the new libraries. This is higher risk therefore more urgent than validation.
287
288### MoveOffTrac #4261
289
290Working (still) on the missing bits for Forgejo:
291- Local mailer in place, checking the DMARC reports [infrastructure#68](https://github.com/tahoe-lafs/infrastructure/pull/68) and [infrastructure#70](https://github.com/tahoe-lafs/infrastructure/pull/70)
292- Local and off-site nightly backups [infrastructure#73](https://github.com/tahoe-lafs/infrastructure/pull/73) and [infrastructure#75](https://github.com/tahoe-lafs/infrastructure/pull/75)
293
294### Infrastructure secrets #4177
295- New private repository: [infrastructure-pass](https://github.com/tahoe-lafs/infrastructure-pass)
296- New dedicated GH accounts for Upptime, CI/CD and OAuth2 (e.g. [forge-tahoe](https://github.com/forge-tahoe))
297
298# Jun 24, 2025
299## Attendees
300- Adrian
301- Chris
302- Flo (@hacklschorsch)
303- Ben (@btlogy)
304- Blaise (@blaisep)
305- Meejah
306
307## Topics
308
309### MoveOffTrac - mailer
310
311Working (back) on the missing bits for Forgejo:
312- https://github.com/tahoe-lafs/infrastructure/pull/68
313
314### Mobile app - Haskell - Bala-LAFS
315Adrian shows off the new structure of the Haskell code base. https://gitlab.com/adrianmay1/bala-lafs
316
317#### Highlights:
318- Namespace = Bala (also a lake, to not confuse with the original implementation)
319- Reduced LOC from 10k to 4k.
320- Shares -> Capabilities -> Directories -> Magic Folders (ascending order of abstraction)
321
322#### Challenges, Caveats and Oddities:
323- Asking servers for offers, then getting and shuffling lists of shares, consuming the offers.
324- Getting multiple offers for the SAME share.
325- @meejah observed that the python client has an [algorithm for consuming share offers](https://tahoe-lafs.readthedocs.io/en/latest/specifications/servers-of-happiness.html#upload-strategy-of-happiness), part of the servers-of-happiness strategy.
326- The UEB can confirm everything in the capability string. Don't depend on the capability string, because that can be modified.
327- Naming scheme is: a body of water near the place the project was invented.
328 
329- Early stage compromises (decisions to revisit later)
330  - `GBS.api` is the protocol description written in `servant` (Haskell REST interface library)
331  - One big type for all errors
332   
333# Jun 17, 2025
334## Attendees
335- Blaise (@blaisep)
336- Chris
337- Flo (@hacklschorsch)
338- Jeff
339
340## Topics
341
342- Did some ensemble programming on the private_facts app and the CRUD Tahoe client library
343
344## Links
345
346- Curated Ansible roles by Robert de Bock https://robertdebock.nl/ansible.html#roles
347- https://tahoe-lafs.readthedocs.io/en/latest/frontends/webapi.html#writing-uploading-a-file
348
349
350# Jun 10, 2025
351## Attendees
352- Meejah
353- Blaise
354- Jeff
355
356## Topics
357
358### Tahoe test client WIP
359
360@jeff and @blaisep moved most of the integration tests from gridsync into the private facts repo and @hacklschorsch pointed out that the ultimately want to accomplish tw results:
361- package a self-contained ("embedded") tahoe dev server for easy mocking in tests.
362- emulate CRUD behavior using the REST interface (ie. the "right hand side" of the private facts proxy)
363This will help anyone developing TAHOE-LAFS to create tests without having to reimplement a client library.
364
365**Lesson Learned:** We had been trying to do both inside the same effort and decoupling them simplifies both the development and the usage.
366
367# Jun 3, 2025
368## Attendees
369- Meejah
370- Ben
371- Flo
372- Chris
373
374## Topics
375
376### Tor test suite fixes [#4167](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4167)
377
378- Also: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3943
379- PRs:
380  - [tahoe-lafs#1435](https://github.com/tahoe-lafs/tahoe-lafs/pull/1435)
381
382Flo reports some progress made with Adrian
383And also some problems with Chutney on Windows
384
385### Infrastructure as Code to manage DNS configurations [#4162](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4162)
386
387Subdomain is not well supported by many providers (except AWS/Google and Azure...) - especially when it comes w/ DNSSEC.
388The current setup with Hetznr works ok, so we can move on while preparing the delegation of the 2nd level domain. 
389
390### Intermittent 502 response from Trac [#4178](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4178)
391The issue may not be too painfull, but Meejah suggests to ask others w/ access: Brian or JP.
392(meejah believes JP only has similar access, that is "trac" user only)
393
394### Manage shared secrets required to interact with the infrastructure [#4177](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4177)
395Proposing a git repo using `pass` to share secrets like GH bots and Hetzner account holding API tokens used for automation.
396
397### master tests don't work with wormhole 0.19.2 [#4180](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4180)
398
399CI is broken (again) and prevents further merge.
400meejah approved contribution https://github.com/tahoe-lafs/tahoe-lafs/pull/1438
401...and attempted to fix CI / errors from new, optional magic-wormhole arg: https://github.com/tahoe-lafs/tahoe-lafs/pull/1439
402
403# May 27, 2025
404
405## Attendees
406- Jeff
407- Ben
408- Blaise
409- Flo
410- Chris
411
412### Running Tahoe in production... a survival kit
413- What would we need to be confident about running Tahoe-LAFS in production?
414
415
416### Fantasy: Tahoe as a CDN
417- expose APIs (eg. minio, graphQL)
418- backend for proxy/cache (eg. Fastly, CloudFlare, Akamai)
419- back end for resilient services like Radicle https://radicle.xyz/guides/protocol or https://www.lothar.com/blog/55-Git-over-Tahoe-LAFS/
420
421### Infrastructure as Code to manage DNS configurations [#4162](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4162)
422- DNS subzone support partly working with Hetzner
423- Considering changing to https://desec.io/ Free, OpenSource, EU based (but enforcing DNSSEC)
424- Or Hurricane Electric https://dns.he.net/
425
426### Intermittent 502 response from Trac [#4178](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4178)
427Monitoring Upptime was reporting intermittent 502
428But these errors have disappeared since May 24: maybe solved
429
430### Manage shared secrets required to interact with the infrastructure [#4177](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4177)
431Credential management discussion
432To reduce bus factor, consider storing the creds in a shared password vault
433
434- (eg. LA uses https://www.passwordstore.org/)
435- consider creating bot ids to own tokens instead of individuals (e.g. for upptime-infrastructure)
436- scope will be excluding secrets already managed with SOPS https://getsops.io/
437
438    [ ] Write up a list of requirements or use cases?
439   
440### Extracting the gridsync integration tests
441- Jeff copied most of the tests into the private facts repo
442- obstacles:
443    - without zkapauthorized, most tests fail, WITH zkap all but one PASS.
444    - python <=3.12, no wheels for os x >12 (without rebuild), tahoe <=1.18
445- Chris working on that for some of the remaining foundation deliverables.
446[ ] Save error messages to help troubleshoot.
447
448### Chris (and Flo) on tor integration tests
449- Chutney https://gitlab.torproject.org/tpo/core/chutney to spin up tests. Problems with windoze
450    - uses __Specification by Example__ (yay!!) https://www.chutney-testing.com/documentation/actions/introduction/
451- PRs 1435 and 1437
452- Goal: GBS (HTTP) client to support Tor
453
454Links:
455- Marimo is cool for tutorials and code demos: https://docs.marimo.io/guides/apps/
456
457# May 20, 2025
458
459## Attendees
460- Jeff
461- Ben
462
463## Notes
464- DNS configuration is partly defined as code (subdomain of.tahoe-lafs.org):
465  https://github.com/tahoe-lafs/infrastructure/blob/3cc71938674e0a26027363d21707bd3ee629389e/tf/core/dns_of-tl-org.tf
466- #4161 Forgejo has been provisionned for MoveOffTrac
467  https://forge.of.tahoe-lafs.org/
468  Feedback from Jeff: the home page does not show any project
469  Can we change that?
470- web-landing-page has also been provisionned too
471  https://home.of.tahoe-lafs.org/
472  But the code and CI/CD still need work (not more eval links)
473- legacy services from Linode also available here:
474  https://legacy.of.tahoe-lafs.org/
475- #4175 Upptime status page is live and can be improve:
476  https://tahoe-lafs.github.io/infrastructure-upptime/
477- #4176 Disk space on Linode has been freed by Meejah on Sat 18th, but we still get some 502 (also during this N&B)
478
479# May 13, 2025
480
481## Attendees
482- meejah
483- @hacklschorsch
484- Ben
485- Jeff
486- Chris
487
488## Notes
489- Flo made some fixes with Adrian to the mobile app, got the [man page finalized](https://github.com/tahoe-lafs/tahoe-lafs/pull/1433), tried last week to fix the CI but not totally done? Tor integration tests need some attention
490- Jeff reports some progress with gridsync tests in Private Facts
491- Flo recommends checking the [Readme on Gitlab for more info on how to use the mobile app](https://gitlab.com/tahoe-lafs/tahoe-lafs-mobile#usage). Also better to sideload APK [from CI](https://gitlab.com/tahoe-lafs/tahoe-lafs-mobile/-/pipelines?page=1&scope=finished&ref=main) because it more up to date than the [Google Play version](https://play.google.com/store/apps/details?id=org.tahoe_lafs.tahoe_lafs_mobile)
492- Ben brings up [ticket 4162](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4162), wanting to move to Hetzner but unable to do so fully because of lack of response from Brian. Meejah will follow up in comments to the issue itself
493- [Ticket 4175](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4175), improving monitoring in response to the site being down sometimes. Working on tahoe-upptime using [upptime](https://github.com/upptime/upptime)
494- Close to bringing the new site live but hampered by DNS issues (4162 above)
495
496## Links
497- https://gitlab.com/tahoe-lafs/tahoe-lafs-mobile
498- https://gitlab.com/tahoe-lafs/tahoe-lafs-mobile/-/pipelines?page=1&scope=all&ref=main
499- https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4162
500- https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4175
501- https://github.com/upptime/upptime
502
503# May 6, 2025
504
505## Attendees
506- Ben
507- Jeff
508- Chris
509
510## Notes
511- Ben shows off the newly redesigned welcome page layout - contains redirects to the legacy page for certain unmigrated content
512- Ben's DNS PR: https://github.com/tahoe-lafs/infrastructure/pull/49 in preparation for the migration
513- Brian difficult to get in touch with
514- Jeff reports successful creation of tahoe_server fixture from Gridsync source; Chris recommends tahoe_integration tests
515
516## Links
517- https://nip.io/
518
519
520# Apr 29, 2025
521
522## Attendees
523- @hacklschorsch
524- Jeff
525- Chris
526
527## Notes
528- Jeff: trying to use gridsync
529- Chris: Someone should make a generic Python client for Tahoe
530
531# Apr 22, 2025
532
533## Attendees
534- Ben
535- Chris
536- @hacklschorsch
537- Jeff
538
539## Notes
540
541- Ben: Setting up a Hetzner account for Tahoe-LAFS things, to be transferred to Tahoe-LAFS (whom exactly?)
542- Ben: No progress on website (besides opening a [repo](https://github.com/tahoe-lafs/web-landing-page)) or issue tracker (pending on required DNS changes)
543- Flo: Reporting on NURLv0/NURLv1, implementing NURLv0 in the Haskell client: https://gitlab.com/tahoe-lafs/tahoe-great-black-swamp/-/merge_requests/7
544- Jeff: Working on Private Facts integration test suite with Blaise, going from GridSync tests
545  - Chris: The GridSync abstraction of Tahoe should be fairly readable and high-level
546
547# Apr 15, 2025
548
549## Attendees
550- B3n
551- Blaise
552- Chris
553- @hacklschorsch
554- Jeff
555
556### Web Landing page code repo
557
558https://github.com/tahoe-lafs/web-landing-page
559
560likely going to home.tahoe-lafs.org
561
562### Web sockets support in Twisted
563
564Comment/Suggest at:
565https://github.com/twisted/twisted/pull/12397
566
567### Migration of tahoe-lafs.org DNS
568
569https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4162#comment:14
570    TL;DR:
571    New records on gandi will be:
572
573        ```
574        tahoe-lafs.org.         60      IN      NS      hydrogen.ns.hetzner.com
575        tahoe-lafs.org.         60      IN      NS      helium.ns.hetzner.com
576        tahoe-lafs.org.         60      IN      NS      oxygen.ns.hetzner.com
577        ```
578
579## Links
580https://auto.sesser.at/ wicked fast & tiny web site
581https://github.com/hacklschorsch/auto.sesser.at the source code
582https://html5up.net/ free web code samples
583
584
585# Apr 8, 2025
586
587## Attendees
588- Jeff
589- Blaise
590- Chris
591- @hacklschorsch
592
593## Issue tracking Migration
594
595- [Preview of Forgejo instance (WIP)](https://forge.lafs.eval.latfa.net/tahoe-lafs/trac/issues)
596    - [How to pronounce Forgejo](https://forgejo.org/static/forgejo.mp4) ^^
597
598#### UNblock 4162: One step task Gandi authZ organization change: for DNS zone changes
599
600In response to the current proposal to [automate the DNS maintenance](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4162#comment:7)
601we 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.
602
603Note: this process will consolidate issue tracking (`trac` ) with source control (`git`) ! So the developer experience will be similar to Github/Codeberg/Gitea/Forgejo
604
605## Docs
606- Landing page (Project Home)
607    - [Preview (WIP)](https://www.lafs.eval.latfa.net/) (Jekyll static site generator)
608- Wiki hosting
609- Explain Tahoe loggin in 35 easy steps
610- Explain Configuration formats
611
612
613### Dreams of a python SDK
614
615- inspired by https://github.com/gridsync/gridsync/blob/main/tests/integration/test_magic_folder_integration.py
616- a pattern for process management https://github.com/gridsync/gridsync/blob/main/gridsync/supervisor.py
617- a pattern for monitoring processes and events: https://github.com/gridsync/gridsync/blob/29edd61fa7dbd856fe757f0f11e911ebf6a44cab/gridsync/monitor.py#L372
618- a pattern for filtering https://github.com/gridsync/gridsync/blob/main/gridsync/filter.py
619- qt event loop with twisted https://github.com/twisted/qt5reactor/blob/master/src/qt5reactor/core.py
620
621
622## Cool Links:
623https://radicle.xyz/ (interesting science project for a mirror)
624Gray Hat Python [pdf](https://github.com/ManhNho/Python-Books-for-Security/blob/master/Gray-Hat-Python-Python-Programming-For-Hackers-And-Reverse-Engineers.pdf)
625Python compiler https://nuitka.net/
626GPU without cuda https://www.modular.com/mojo
627
628---
629
630# Apr 1, 2025
631
632## Attendees
633- Blaise
634- Chris
635- Meejah
636- Jeff
637- @hacklschorsch
638
639### Integration testing
640
641- Unit tests use `twisted.trial`
642- Integration tests use pytest
643- [Tahoe-lafs](https://github.com/tahoe-lafs/tahoe-lafs/tree/master/integration)
644- [Magic Folder](https://github.com/tahoe-lafs/magic-folder/tree/main/integration)
645- [Link](https://github.com/tahoe-lafs/magic-folder/blob/main/integration/test_invite.py#L17)
646- @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
647- Parmetrize tests with hypothesis: https://hypothesis.readthedocs.io/en/latest/
648- Contract testing
649    - Using Pact: https://docs.pact.io/getting_started/comparisons
650    - Using Deal: https://pypi.org/project/deal/
651
652### Storage Node Protocol: Foolscap vs GBS (http)
653 - "Are we backwards compatible with FURLs?"
654     - 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`)
655     - Version 0 NURLs are different?
656 - Ideally have a test suite _independent_ of the implementation so we could test implementations against the same criteria
657 - We don't have a full protocol test to validate that an implementation handles (GBS, etc)  properly.
658 - Long Term: web assembly for the browser to connect to storage servers.
659
660### Glossary items
661 - [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)).
662 - Verified Fakes (vs Mocks): https://pythonspeed.com/articles/verified-fakes/
663
664### Links
665
666https://tahoe-lafs.readthedocs.io/en/latest/specifications/url.html#versions
667https://tahoe-lafs.readthedocs.io/en/latest/specifications/http-storage-node-protocol.html#transition
668https://github.com/tahoe-lafs/tahoe-lafs/blob/master/src/allmydata/protocol_switch.py
669https://hypothesis.readthedocs.io/en/latest/
670Autobahn for websockets: https://github.com/crossbario/autobahn-python
671
672# Mar 25, 2025
673
674?? Blaise Absent
675
676# Mar 18, 2025
677
678## Attendees
679- Blaise
680- Meejah
681- Jeff
682- @hacklschorsch
683
684
685#### Tahoe Client shipped for Android
686- hacklschorsch: [Tahoe-LAFS client in the Google Play Store](https://play.google.com/store/apps/details?id=org.tahoe_lafs.tahoe_lafs_mobile)
687- F-Droid on hold - currently we can't build the app fast enough.
688
689#### Fediverse interest in migration to Forgejo
690- @b3n contributed to [a mastodon thread](https://x0r.be/@b3n/114139604580878482) where people were looking for details on migrating to Forgejo.
691
692#### Flo's updates from BOBKonf conference
693- 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?
694  - Meejah: Multiple writers is the main reason for append-only cap, not past data security.
695- Wants help reviewing new man pages for the Tahoe-LAFS Debian package
696  - [grid-manager](https://github.com/tahoe-lafs/tahoe-lafs/pull/1432)
697  - Updates to tahoe man page (opening a PR soon)
698
699#### We need multi-writer append-only cap (but ...
700- Tahoe can do it now with one writer... if you promise to always write to the same cap
701- Tahoe can't support 2 or more writers.
702- CRDTs compare versions and DETECT conflicts
703- Magic folder will compare two versions (using clock timings) but it doesn't (yet) resolve conflicts.
704    - There is a PR will display the conflicts so a human can resolve them
705    - But it polls for an immutable
706    - Meejah: We need a cryptographer to add support and it would be a nice upgrade (to avoid polling)
707
708#### Capability theory
709- Ocap implementations are mostly about communication (Spritely Goblins, etc)
710- Tahoe is one of the few for data capabilities
711-
712
713### Links
714
715- [yjs](https://github.com/yjs/yjs)
716- https://yjs.dev/#features
717- Rust port of CRDT https://github.com/y-crdt/y-crdt
718- [Macaroons](https://github.com/rescrv/libmacaroons) is for data.
719
720
721# Mar 11, 2025
722
723### Attendees
724- Chris
725- Jeff
726- @hacklschorsch
727
728#### CI stuff
729Flo managed to successfully download and zip together all artifacts so they upload properly,
730But the Test PYPI token has expired and a new one needs to be generated:
731[Relevant PR](https://github.com/tahoe-lafs/zfec/pull/121)
732[Relevant issue](https://github.com/tahoe-lafs/zfec/issues/127)
733
734#### Mobile app now available on the Play store
735"Open testing" release at: https://play.google.com/store/apps/details?id=org.tahoe_lafs.tahoe_lafs_mobile
736
737Needs better getting-started documentation because it cannot create anything on its own
738
739#### A Haskell storage server implementation exists
740but can't communicate with the Python client, maybe versioning issues
741One issue is the eclectic logging of the Python implementation and the minimal logging of the Haskell implementation
742Indiana Jones style code archaeology reveals a vast trove of well-designed Haskell code in tahoe-great-black-swamp
743Just not sure of how to build the proper url
744
745#### Possibility of lightweight HTML/JS-only apps with Tahoe-LAFS Client HTTP API
746Just an html page that displays text or a text editor depending on read or write-cap
747Or a picture gallery
748Ecosystem of tiny web apps, like sandstorm?
749Potentially using the GBS server?
750These apps could themselves be stored in a Tahoe directory
751
752# Feb 18, 2025
753
754### Attendees
755- Blaise
756- Chris
757- Jeff
758- @hacklschorsch
759- Meejah
760
761#### Hosting multipoint video conferences.
762
763[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?
764https://askubuntu.com/questions/56356/how-to-host-a-video-conference-with-vlvc
765> 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.
766https://www.videolan.org/vlc/libvlc.html
767http://breakthrusoftware.com/html/onlinedocs/kb/videomill/vlc.html
768Python bindings https://github.com/oaubert/python-vlc
769
770https://wiki.videolan.org/VideoLan_VideoConference/
771
772Jitsi: uses webRTC and that is hard to punch through wormholes.
773
774
775#### web sockets in Tahoe-lafs
776
777https://github.com/tahoe-lafs/tahoe-lafs/blob/master/ws_client.py
778
779#### Safer Serving Eliot logs: don't write to disk
780Write logs to in memory files to reduce exposure of sensitive data
781https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3006
782fixed https://github.com/tahoe-lafs/tahoe-lafs/pull/584
783
784#### Upload Helper
785- does the upload helper work?
786- is it still useful? are uploads an issue in 2025?
787
788#### Upload: Strategy of happiness
789
790https://tahoe-lafs.readthedocs.io/en/latest/specifications/servers-of-happiness.html#upload-strategy-of-happiness
791
792#### Deploying grid manager
793a solution for private storage
794Maybe use the test grid?
795
796#### No new capability types
797because we don't have cryptographers for cryptographic review.
798
799## Feb 11, 2025
800
801### Attendees
802- Blaise
803- Chris
804- Jeff
805
806#### Private Facts API discussion, Chris' suggestions
807- Consider using the CLI `alias` function for human readable references to capabilities.
808- Consider saving capabilities in a local secrets manager.
809
810## Feb 4, 2025
811
812### Attendees
813- Blaise
814- Chris
815- Jeff
816- Ben
817- Meejah
818
819#### FosDem Lightning talk
820- Flo presented
821- Link TBD
822- No analytics because we don't control the DNS name.
823
824#### Trac Migration
825- Brian on board with DNS redirection, etc
826
827#### Other items in progress, pending grant renewal
828- LAFS rust crate
829- Recovery workflow
830
831#### What sequence diagramming tools work well?
832- PlantUML is the most portable and future proof https://crashedmind.github.io/plantuml.github.io/
833- Mermaid is the most beautiful, but very JavaScripty https://mermaid.js.org/intro/
834- kroki.io is the umbrella project that runs everything https://kroki.io/
835- excalidraw is good for drag&drop with a bit of import/export https://excalidraw.com/
836
837## Jan 28, 2025
838
839### Attendees
840- Blaise
841- Chris
842- Flo (@hacklschorsch)
843- Jeff
844- Meejah
845- Pete
846
847
848#### Pete has news from "Magic Internet" !
849
850- Opportunity for differentiating the guiding principals from the legacy tech debt!
851- Python Tahoe is moving to Open Collective for managing grants
852- Itamar working on some outstanding 3.13 compatibility requirements
853- Magic Internet is focused on Magic Wormhole, Magic Cap
854- Building basic tools the internet needs but no one will fund
855    - eg. [libsodium](https://doc.libsodium.org/) is an implementation of the [NaCL](https://nacl.cr.yp.to/) protocols.
856    - Another comparable: [libssl](https://github.com/openbsd/src/blob/master/lib/libssl/ssl_lib.c).
857        - but easier to use, like https://github.com/mendsley/libssl
858
859- Magic Cap is "data capabilities" (inspired by OCap) - library for decentralized capabilities. (Networking, Permissions, Persistence)
860    - Rust for interop
861    - Python bindings (because we love python)
862    - Wasm for browsers (eg JavaScript, NodeJS)
863- Client-first
864- eg. "am I allowed to change these bytes?"
865    - Today: enforced by Linux
866    - Next: enforced by linux, determined by MagicCap
867- Independent of a server or provider.
868- Budgeting and roles, TBA
869- Public infrastructure and assets, Real Soon Now.
870
871#### FAQs
872- Is there a community meeting or some other way to follow Magic Cap?
873    - Not Yet. TBD.
874- Is Magic Cap a re-write of Tahoe-LAFS?
875    - No. Think of it as smalltalk on crack.
876- Are we making an oCap system?
877    - No. The libraries should include
878- What if I want to use Spritely goblins?
879    - Magic Cap could work with Spritely.
880- Do we know what the boundary of the API looks like (Files? AuthZ Permissions? Directories?). What level of abstraction would the libraries operate?
881    - TBD, but we'll avoid leaking some of the abstractions we have leaked in the past.
882
883
884#### Getting steeped in Rust
885- Chris wants to align his work on the Rust LAFS crate.
886- Wormhole Rust implementation has fallen behind.
887
888### Other links:
889Brian on Magic Wormhole:  https://www.youtube.com/watch?v=sulJG196BMw
890    -  Longer talk: https://www.youtube.com/watch?v=oFrTqQw0_3c
891-  Learn Rust with practical excercises: https://rustplatform.com/
892-  https://gitlab.redox-os.org/redox-os/cookbook
893-  https://blog.bovid.space/conceptual-intro-to-spritely-goblins.html
894-  https://en.wikipedia.org/wiki/Object-capability_model
895-  The [Cosmos SDK](https://docs.cosmos.network/main/learn/advanced/ocap)
896-  Carbonado is an archival format for encrypted, durable, compressed, provably
897cated consensus-critical data, without need for a blockchain or powerful hardware. https://crates.io/crates/carbonado
898
899
900## Jan 21, 2025
901
902### Attendees
903- Blaise
904- Chris
905- Flo (@hacklschorsch)
906- Jeff
907- Meejah
908
909#### Chris: Rust implementation
910- Erasure, mutables...
911- Meejah asked about the fec crate
912
913#### Flo: New PubGrid online
914- New PubGrid online
915  - Couldn't keep old introducer fURL because of lost key, new fURL is in https://tahoe-lafs.org/trac/tahoe-lafs/wiki/TestGrid
916- [Updates](https://github.com/tahoe-lafs/infrastructure/pull/6) merged into `main` branch of [IaaC repository](https://github.com/tahoe-lafs/infrastructure/)
917- Many improvement ideas already in https://github.com/tahoe-lafs/infrastructure/issues
918  - These tickets should be in Trac instead
919 
920#### Flo: Debian packages accepted
921- Great work from Andrius (maintainer for Debian packages)
922- 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)
923- All tests pass with Python 3.12 and 3.13
924- 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
925- Cosmetic fixes ongoing regarding SyntaxWarnings of Python 3.12/3.13
926
927#### Flo: Tahoe-LAFS mobile app
928* Own grid functionality completed
929* Working on parsing plain Tahoe-LAFS Dircaps
930* Have [improved architecture of application](https://gitlab.com/tahoe-lafs/tahoe-lafs-mobile/-/merge_requests/29)
931* Test version going Play store
932
933#### Private Facts sample app
934
935Decisions
936* example with key:values (write direct to Tahoe?)
937* example with sqlite (cache locally, save to Tahoe on exit)
938
939For simple pure tahoe, do the key:value
940
941Error Handling
942* examples at https://github.com/tahoe-lafs/magic-folder/blob/main/src/magic_folder/tahoe_client.py
943* 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)
944* [`get_welcome`](https://github.com/tahoe-lafs/magic-folder/blob/993f1ab478ca073c594b16973984ba485d9575d5/src/magic_folder/tahoe_client.py#L186) is the key to happiness
945
946
947#### Fedora packaging
948
949* they are having trouble with the python package: https://copr.fedorainfracloud.org/coprs/g/fedora-review/fedora-review-2327756-python-magic-wormhole/build/8295435/
950* Some consider the Rust implementation to be more current
951*
952---
953
954## Jan 14, 2025
955
956### Attendees
957- Blaise
958- Chris
959- Flo (@hacklschorsch)
960- Jeff
961- Meejah
962- Pete
963
964### Test Grid in progress!!
965
966- Change the dnd records
967- Decide the lifecycle of files,
968- expiration
969- governance (manage the introducers?)
970
971### Private Facts
972Blaise gave a tour of the latest description of the sample application:
973- using the Sphinx theme: https://github.com/pradyunsg/furo
974- ADR: use the `requests` library for the python examples
975- ADR: use sqlite for the "database"
976- ADR: use fastAPI for the app server
977- ADR: handle the "directory/filepath" metaphor later
978
979#### Decisions
980
981- Impose the file system metaphor later?
982- Use the test grid?
983
984### Roadmap: Tahoe Enhancement Proposal process. What work is the project likely to prioritize?
985As funding for the current work comes to an end, what are we working on and what are the Project priorities?
986What would most benefit the project?
987- Chris working on Rust implementation (does it have a future?)
988- Blaise working on project adoption (use cases, office hours, conferences, example apps)
989- Interoperability with other technologies
990
991
992## Jan 7, 2025
993### Attendees
994- Blaise
995- Ben
996- Chris
997- Flo
998- Jeff
999- Meejah
1000- Shane
1001- Sherry
1002
1003We exceeded the jitsi capacity. It struggled to handle the size of the meeting!
1004
1005#### Welcome Sherry
1006
1007
1008## Dec 17, 2024
1009### Attendees
1010- Blaise
1011- Flo
1012- Jeff
1013- Meejah
1014
1015
1016
1017### Previous Items
1018
1019#### CI is mostly green:
1020- https://github.com/LeastAuthority/tahoe-lafs/tree/3484.test-build-images
1021- https://github.com/LeastAuthority/tahoe-lafs/tree/4143.refresh-images-part2
1022-
1023
1024### New Items
1025
1026#### 3rd party Integrations
1027- 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
1028
1029#### Writing design docs
1030@meejah:
1031- Describe the characteristics of:
1032    - Grid
1033        - Protocols (GBS, foolscap, both)
1034        - storage criteria
1035    - Introducer
1036        - member criteria
1037        - service discovery
1038        - announcements
1039    - Membrane
1040- Examples:
1041    - https://github.com/tahoe-lafs/tahoe-lafs/blob/master/docs/managed-grid.rst
1042    - https://github.com/tahoe-lafs/tahoe-lafs/blob/master/docs/specifications/http-storage-node-protocol.rst
1043
1044Need not be an implementation guide. It could be prose or something more structured, such as:
1045- https://github.com/balanced/balanced-api/blob/master/features/callbacks.feature
1046- https://github.com/behave/behave/blob/main/features/fixture.feature
1047- https://github.com/balanced/balanced-api/blob/master/features/settlements.feature
1048
1049## Dec 10, 2024
1050### Attendees
1051- Ben
1052- Blaise
1053- Chris
1054- Jeff
1055- Meejah
1056- Shane
1057
1058### New Items
1059
1060#### CI
1061- Ben has CI working everywhere
1062    - Github
1063    - Local
1064    - Backport changes to CircleCI
1065    - **Except**: Inconsistency specific to Circle CI (even in Least Authority Org), possibly resource related on circle CI's k8s config
1066- Trac issues
1067    - 3484
1068    - 4131
1069    - 4135
1070    - 4142
1071    - 4143 (Updating the CI images)
1072    - xxxx (Using the new images)
1073    - xxxx (_Plan B_ bypassing the intermediate image build)
1074
1075Note: Tahoe-lafs github admin group has 6 members.
1076
1077#### Is building CI images in advance a premature optimization?
1078- Circle CI creates "tahoelafsci/debian:11-py3.9" and uses that image to create the build.
1079- It requires a periodical "click of the button" for the occasional rebuild of the CI images.
1080- It does not actually provide reproducible builds.
1081- We are not pinning images nor are we pinning wheels.
1082- It *may* provide some faster builds (we have not quantified)
1083- Reporoducibility vs (...) Currency (?)
1084- @blaise: We should consider a separate repo/pipeline for CI images because their revision cycle is different from Tahoe-lafs
1085- @meejah: there is not a lot of project or version specific code added to the docker images.
1086- @meejah: I don't want to run ci against a previous frozen version. I want to run CI against the current version.
1087- @meejah: useful to pull the latest platform, maybe pin the python.
1088- @ben: we can fix what we currently have (the Dockerfile infrastructure) and consider making changes separately.
1089- Ben will explore a PR building with the upstream images without the intermediate docker images.
1090
1091#### Consider pinning Python separately from platform
1092
1093- cache and pin the platform? (criteria?)
1094- cache and pin the Python? (criteria?)
1095
1096
1097
1098## Dec 3, 2024
1099### Attendees
1100- Ben
1101- Blaise
1102- Flo
1103- Shane
1104- Meejah
1105- Chris
1106- Jeff
1107
1108
1109#### We need a release, soon
1110@hacklschorsch
1111
1112#### CI failures
1113- @btology happy to migrate CI off CircleCI (we chose Circle for reliability, but that has changed)
1114    - 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.
1115    - Todo: Update fedora builder to fc41
1116- Typecheck fails on `master` https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4115
1117- Oracle Linux fails: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4135
1118- Master branch does not build
1119    - Integration tests do not run on master branch
1120- Nix pacakge build does not work
1121    - Too Slow:https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4126)
1122    - Cachix does not have current images, so dependencies must be built from source.
1123    - We need Cachix token [trac](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4134)
1124    - We need access to the Cachix org to regnerate the token
1125    - Do we care about nix?
1126        - If someone needs the flake for Tahoe-lafs, eg (private storage?) they will fail.
1127        - Maybe we consider that "downstream" and people can fix it.
1128- PyPi: ownership for prod, but only JP has access to test.pypi
1129- Ubuntu builder fails https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3949
1130- We build wheels for Windows, Mac OS, Debian and PyPI
1131- Should we decide which CI are "blockers"?
1132    - Debian, Mac OS and Windows MUST be green
1133    - If no one complains, then they dont block
1134
1135
1136## Nov 26, 2024
1137### Attendees
1138
1139- Ben
1140- Blaise
1141- Flo
1142- Shane
1143- Meejah
1144- Chris
1145
1146### New Items:
1147
1148#### Tahoe Project open office hours
1149- Consider a standing schedule for folks to drop in with questions and pairing.
1150- Blaise is available to turn on the lights, start the coffee pot and arrange the chairs.
1151- Meejah suggests 15:00 UTC might be a good time for Europe and North America.
1152
1153#### GridSync
1154
1155[Standalone magic-folder binaries fail due to missing win32com.shell import](https://github.com/gridsync/gridsync/issues/707)
1156[PyInstaller/frozen tahoe executables fail to execute on macOS 13 due to missing libintl](https://github.com/gridsync/gridsync/issues/709)
1157
1158#### User Stories for Landing  Page: www.tahoe-lafs.com (and related Wiki content)
1159- Describe the CRUD lifecycle
1160    - Who does the CRUD ?
1161    - What privs do they need?
1162- Failure Scenarios:
1163    - Host outages? (no response from host, page not found, ...)
1164    - Content bugs? ()
1165@hacklschorsch wants :
1166    - static landing page sounds good
1167    - enough redirect to preserve the original trac urls https://docs.gitlab.com/ee/user/project/pages/redirects.html
1168   
1169   
1170- Wiki Pages are mostly reproducible
1171    - Before:
1172        - https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4095
1173    - After:
1174        - https://forge.lafs.eval.latfa.net/tahoe-lafs/trac/issues/4095
1175    - NOT reproducible:
1176        - dynamic(ish) content like Roadmap,
1177
1178
1179#### Broken CI updates
1180
1181- CircleCI keeps asking for an SSH key in some fork or PR!?
1182- Flo thinks he has fixed most of CI issue,
1183- but there is still a flaky systemtest which fails from time to time
1184- Ben is trying to reproduce this flay part with GH actions
1185
1186- Refactor (big) tests, see https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4078 and then https://github.com/tahoe-lafs/tahoe-lafs/pull/1354
1187    - 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) )
1188    - @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)
1189    - Differing seeds for random number generators can result in strange behaviour so @Chris points out that we can force `PYTHONHASHSEED=1` and force consistency.
1190
1191#### FOSDEM 2025
1192
1193- Flo and Ben would like to present some works (e.g.: Mobile, Tracker, Website),
1194
1195
1196## Nov 19, 2024
1197### Attendees
1198
1199- Blaise
1200- Rodrigo
1201- Meejah
1202- Chris
1203- Jeff
1204- @hacklschorsch
1205- Shane
1206
1207### New Items:
1208
1209#### User stories for ticketing system
1210Meejah 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.)
1211
1212#### SupaWiki and Tahoe for private content.
1213
1214- Describe the threat model. Be clear on the expectations resulting from the specific deployment mode.
1215For example, with Desktop apps there is "Trust on every use" so it is "less secure" than locally installed code.
1216
1217@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.
1218
1219@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?
1220- Prefer the term "exposure" over trust. There is no trust in tahoe, just exposure.
1221
1222@Rodrigoplp: we dont' yet have specific constraints, because we're exploring an example (the private medical facts)
1223- The work that needs to be done is to make clear where the exposure begins.
1224- If the system requires many nuanced decisions, then it will be used by experts
1225- If you need to access simple users, then they need apps that have few dials and levers
1226
1227@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.
1228
1229@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.
1230
1231*Questions*
1232- if an app can add a layer of access control, *then* it can facilitate sharing, revocation and recovery?
1233- should we add glossary entries for terms like `exposure` vs `trust`
1234
1235### Todos:
1236- Explicit doc for the "security model" (inclusive of:
1237    -  https://tahoe-lafs.readthedocs.io/en/latest/architecture.html#security
1238    -  https://tahoe-lafs.readthedocs.io/en/latest/about-tahoe.html#what-is-provider-independent-security (ie.  The "provider-independent security" doc)
1239- 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")
1240- Add Glossary entries:
1241    - exposure
1242    - trust
1243    - sharing
1244    - revocation
1245    - recovery
1246    - membrane
1247    - macaroon
1248
1249
1250#### Broken CI
1251
1252@hacklschorsch : the tests seem to fail around HTTP. Foolscap seems to work but HTTP will pass and then fail.
1253https://github.com/tahoe-lafs/tahoe-lafs/pull/1381#issuecomment-2444698978
1254(maybe improve setup and teardown? see: allmydata.test.test_system.HTTPSystemTest )
1255
1256Ben noticed that there are less failures on the PAID circle CI account?!
1257Ben will try to verify this using the LA fork:
1258https://github.com/LeastAuthority/tahoe-lafs/tree/master, which now fails on CircleCI because of this ghost SSH key issue.
1259
1260### Beware logging
1261There are several log sources and they are joined (manually) using timestamps :frowning:
1262- Eliot  (`eliot tree`, `eliot prettyprint`)
1263- Twisted
1264- Python logger
1265
1266#### FOSDEM 25 in Bruxelles ?
1267- Should we present a talk here?
1268
1269
1270## Nov 12, 2024
1271### Attendees
1272
1273- Ben
1274- hacklschorsch
1275- Jeff
1276- Rodrigo
1277- Shane
1278- Blaise (late)
1279
1280### New Items:
1281
1282#### SupaWiki https://supawiki.com/
1283Rodrigo joined and presented the idea to record personal data in a safe/private wiki.
1284
1285Update from blaise, limited availability during mourning:
1286
1287Public Repo for the integration app is: https://github.com/blaisep/private_facts
1288@rodrigoplp is blasting ahead with integration into supawiki.com
1289
1290#### Mobile Tahoe-LFS mobile app in Haskell
1291Good news, a few PRs have been merged: 11, 14, 15, 17, 19, 20 and 21:
1292https://gitlab.com/tahoe-lafs/tahoe-lafs-mobile/-/merge_requests/?scope=all&state=merged
1293
1294#### User stories for Tahoe-LAFS end-users:
1295Jeff and Blaise are working on describing how Tahoe-LAFS works.
1296Leading to a sequence diagram (WiP):
1297https://github.com/blaisep/private_facts/blob/main/docs/source/upload_content.puml
1298
1299#### MoveOffTrac
1300- Pairing meeting on user stories postponed.
1301- Possible licensing issue discussed with Codeberg. In short, if this is dual-licenced project, it should not be an issue.
1302- 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)
1303- Ben needs more info from Meejah and Pete to try to get a written approval from Codeberg.
1304- As a reminder: this is not a blocker, until we decide to move the code from GH to CodeBerg (not in scope so far).
1305
1306#### CircleCI
1307- Ben is working on the SSH ghost key issue
1308- More info in [#4098](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4098#comment:17)
1309- The problem may be fixed in 2 ways:
1310  1. gaining admin access (using a temporary GH user) to add and remove an ssh key (hopefully cleaning the dirt in the pipes)
1311  2. forcing https checkout using a custom step (PR in progress)
1312- Rodrigo said it may be worthed to consider alternatives to CircleCI, like an independent version of GitHub Actions.
1313- As a reminder: the CI is already half GH, half CircleCI. But if GH is doing better, both look vendor locking.
1314- 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
1315
1316
1317#### Other links:
1318https://yopass.se/   (Maybe uses Tahoe?)
1319https://github.com/tahoe-lafs/tahoe-lafs/blob/master/COPYING.TGPPL.rst
1320
1321
1322---
1323
1324## Nov 05, 2024
1325### Attendees
1326
1327- Ben
1328- Blaise
1329- Chris
1330- hacklschorsch
1331- Jeff
1332- Meejah
1333- Shane
1334
1335
1336### New Items:
1337
1338#### Project Adoption
1339The creator of [SupaWiki](https://supawiki.com) is interested in being able to create and read private objects using Tahoe.
1340
1341@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.
1342
1343### Ongoing
1344
1345#### Trac migration with keywords
1346[PR](https://github.com/tahoe-lafs/trac2gitea/pull/31) in progress for trac2gitea to migrate keywords as labels (total = 912 w/ some dupplicates).
1347
1348Let's meet offline to review https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4095 and memorialize a decision process.
1349- summarize the user scenarios ([stories](https://github.com/tahoe-lafs/MoveOffTrac/blob/main/docs/UserStories.md))
1350- clarify the constraints and requirements
1351- clarify the scope of each milestone (eg. describe structure of an issue, choose. a target pla)
1352
1353#### CircleCI
1354- Making progress in related repositories (e.g.: ZKAPAuthorizer) and learning for Tahoe-LAFS
1355- ssh key error seen in many projects, inluding Tahoe-LAFS: WiP to understand/avoid it
1356- Too much permissions by default
1357
1358#### RClone
1359- https://forum.rclone.org/t/tahoe-lafs-backend/6625
1360- 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.
1361
1362#### Python packaging
1363- Is there a more "standard way" of packaging Python (Ben found it heterogeneous)?
1364- Blaise and Jeff are investigation [UV](https://github.com/astral-sh/uv): promessing, but?
1365- Tahoe-LAFS still uses [Makefile](https://github.com/tahoe-lafs/magic-folder/blob/main/Makefile)!
1366- Note: Tahoe-LAFS packages are not deployed to PyPi from CI
1367- BTW: PyPi is about to drop signature w/o alternative
1368- Meejah still publishes signatures for other projects
1369- See https://github.com/meejah/pypiratzzi/
1370
1371---
1372
1373## Oct 29, 2024
1374### Attendees
1375
1376- Ben
1377- Blaise
1378- Chris
1379- hacklschorsch
1380- Pete
1381- Jeff
1382- Meejah
1383- Shane
1384
1385
1386### New Items:
1387
1388#### CodeBerg has some retrictions about the license
1389- https://codeberg.org/Codeberg/org/src/branch/main/TermsOfUse.md#2-allowed-content-usage
1390- Re-licensing does not look like an option for Tahoe-LAFS (TGPPL)
1391- This is a cons, but there are other Forgejo providers
1392
1393#### Magic-grid installation is fixed (Meejah)
1394A simple typo in `pyproject.toml` resulted in ugly traceback. https://paste.ofcode.org/wapHcem8hXBVgigJ8LQUFg
1395
1396#### Explosion of interest in the Health app
1397Front end developers from the Nivenly community (folks behind https://hachyderm.io ) are excited about a health tracker with provider-independent privacy.
1398
1399#### Jeff working on 1101
1400Writing 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.
1401    - The Twisted CLI test infrastructure is weak.
1402    - The way the Twisted handles cmd args is somewhat magical.
1403    - Ideally, we re-write the CLI with `click` ... :santa:
1404
1405#### Learning to run individual tests:
1406
1407[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`
1408
1409#### Help is on the way for CI.
1410
1411B3n reports that there is approval for applying some of his time to work on CI.
1412
1413#### something about SEEDS proposal
1414??
1415
1416#### Maybe release a new Magic-Folder
1417    - conflict-resolution branch may be messy.
1418    - Chris might benefit for grid-sync
1419    - The Tahoe client UI for Magic Folder is ... not smooth because it shows the various levels and metadata..
1420   
1421#### Case Study: Bootstrap WireGuard using magic wormhole
1422- One time use of magic wormhole to set up or add a wireGuard node. @meejah
1423
1424#### trac2gitea keywords
1425- https://github.com/tahoe-lafs/trac2gitea/issues/28
1426- ticket keywords would generate 1846 new labels
1427- Meejah suggested to look at https://github.com/twisted/twisted which had similar concern (e.g: #11563)
1428
1429### Related links:
1430
1431[STUN tunneling](https://github.com/magic-wormhole/magic-wormhole/issues/6#issuecomment-147854595)
1432
1433## Oct 22, 2024
1434### Attendees
1435
1436- Blaise
1437- Chris
1438- hacklschorsch
1439- Meejah
1440
1441
1442### New Items:
1443#### Debian build
1444Is there a set of tools we can use to validate our Debian builds?
1445#### Decision: let's avoid including Debian-specific dependencies in upstream.
1446
1447
1448#### Python 3.13
1449Jeff noticed a weird error with 3.13.rc2: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4118#comment:4
1450Chris is checking compatiblity. 3.13 deprecated `cgi` module and there are dependencies on it.
1451#### Decision: We should move cgi classes to use the Twisted APIs
1452
1453#### Testing NAT with pytest and libvirt Virtual Networking
1454@meejah : testing NAT with pytest is a headache
1455@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/)
1456@chris : `headscale` is a open source tailscale/wireguard to VPN all-the-things (orthogonal, but interesting)
1457https://archive.fosdem.org/2023/schedule/event/goheadscale/
1458
1459---
1460
1461## Oct 15, 2024
1462### Attendees
1463
1464- Blaise
1465- B3n
1466- Meejah
1467- Jeff
1468- Chris
1469
1470
1471### random notes
1472
1473- some discussion of security etc around Terraform-managed Gandi DNS
1474- some meta-discussion of privacy of data for some use-cases
1475- distributed forgejo (etc) PRs mentioned, discussed a bit
1476- blocker: CI not working https://github.com/tahoe-lafs/tahoe-lafs/pull/1377
1477- Contributor/Developer [step-by-step guide](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4118)
1478- 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)
1479- Twisted project used https://github.com/chevah/trac-to-github to migrate from trac to github
1480
1481#### Decisions:
1482- convert legacy keywords to static labels
1483- link to stored queries that contributors can reuse.
1484- Become independent of [CircleCI](https://sr.ht/~meejah/magic-grid/) is an aspiration. Some brave soul should do it.
1485- we'll need CircleCI until we can make CI run on the three platforms: Linux, Windows, Mac.
1486- Look at using [magic grid](https://sr.ht/~meejah/magic-grid/) to automate the tutorials
1487
1488### [Issue Tracking](https://github.com/tahoe-lafs/MoveOffTrac/blob/main/docs/UserStories.md)
1489@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.
1490We learned:
1491- There are additional, distinct,  roles with associated privileges and activities.
1492- Many issues are associated with each other using the free text `keywords` feature, which is not covered by the current migration.
1493- Ticket Discovery: The View Ticket page has many pre-defined queries which have no direct counterpart outside of trac.
1494
1495### Related links:
1496- [Git Federation](https://drewdevault.com/2018/07/23/Git-is-already-distributed.html)
1497- [Git over ActivityPub](https://forgefed.org/)
1498
1499
1500
1501### Gaps in the [Contributor guides](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4118)
1502A new contributor has no clear path to a usable PR. The instructions assume familiarity with the project. For example:
1503- A contributor cannot find related tickets (WIP, previous solutions, dependencies, @meejah's tutorial automation ticket)
1504- How to collaborate on tickets that relate to each other?
1505- CI/CD: Which commands build the project?
1506- ...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)
1507- When to use the various Tox targets?
1508- 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)
1509
1510### QUESTIONS: current contributor user stories
1511- As a current contributor, when you want to find a ticket in Trac, do you:
1512    - Use a prepared query on the [View Ticket](https://tahoe-lafs.org/trac/tahoe-lafs/wiki/ViewTickets) page?
1513    - Use the Custom query form?
1514    - Follow links inside an existing issue?
1515
1516
1517
1518---
1519
1520## Oct 8, 2024
1521### Attendees
1522
1523- Blaise
1524- B3n
1525- Chris
1526- hacklschorsch
1527- ccx
1528- Jeffhimself
1529
1530
1531### New Items
1532
1533
1534Include tests in the description of an issue.
1535- https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2050#comment:7
1536
1537Proposed Docs config changes
1538    - create
1539        - docs/test (to store the docs-specific tests)
1540        - docs/source (to restrict Sphinx to the the docs content, exclude tests, etc.)
1541    - add sys.path to docs/source/conf.py (to find the source directory)
1542    - Makefile (run Sphinx against the source directory)
1543    - Makefile doc-testing (add target for `make doc-testing`)
1544
1545
1546#### The step-by-step Developer Guide
1547A failing test(s) for being ready to
1548- build docs (`tox -e docs` ?)
1549- run the tests?
1550- submit a PR (nothing broken that the author couldnt' check themselves)
1551- build a release
1552
1553#### Trac migration Developer Experience
1554- @ccx Search? Associating trac issues to a feature is a PITA (labels, components are migrated)
1555- @chris: developers should be able to see CI results; what is the integration of issue/commit/PR
1556- @blaisep : reorder commits to match their tests.
1557- Codeberg CI https://codeberg.org/Codeberg-CI/woodpecker
1558
1559### Questions
1560- How does tox know about the fixtures?
1561- setup.py install returns:
1562`error: The 'zope-interface>=5' distribution was not found and is required by Twisted, twisted
1563` (and I'm not supposed to run setup.py)
1564
1565---
1566
1567## Oct 1, 2024
1568### Attendees
1569
1570- Blaise
1571- B3n
1572- Chris
1573- hacklschorsch
1574- Jeffhimself
1575- Meejah
1576- Pete
1577
1578### New Items:
1579
1580- Release Checklist, simple PR edition?
1581- Public Grid?
1582- Public mailbox server? (MagicFolder)
1583- Fowl and Dilation mentioned as unannounced apps related to file transfers
1584
1585
1586#### Trac Migration docs
1587- WIP https://github.com/tahoe-lafs/MoveOffTrac/tree/docs-update-24w40/docs
1588- Docs tickets will serve as the initial spike to test new user (Blaisep) creation.
1589- User Account management has some cases we want to excercise (forgot password, account confirmation, etc)
1590- Redirecting legacy URLs to the new issue tracker.
1591
1592### Prior Items:
1593
1594- 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)
1595- fixed cryptography library issue https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4100#no1
1596
1597#### Dependency management
1598
1599- "Tahoe is an app, so we shouldn't pin dependencies" @pete
1600
1601#### related projects
1602- "Git with you": Peer to Peer git colab (not via github) using pairon (?)
1603- [Dulwich](https://www.dulwich.io/docs/#getting-started) is a python implementation of git
1604- https://meejah.ca/blog/wizard-gardens-vision
1605- [Copybin](https://carml.readthedocs.io/en/latest/command-copybin.html), but private
1606- https://magic-folder.readthedocs.io/en/latest/invites.html#invites
1607- Brian's STUN server (?)
1608- @pete mentioned research on [OCAP](https://github.com/ocapn/ocapn)s over [CRDT](https://github.com/alangibson/awesome-crdt)s
1609- exposing ssh using [Inlets sshmux](https://inlets.dev/blog/2024/02/05/access-all-your-ssh-servers-with-sshmux.html)
1610- https://www.wireguard.com/
1611- [ZCAP](https://w3c-ccg.github.io/zcap-spec/) is separate from Tahoe. [Github]()
1612
1613
1614---
1615
1616
1617## Sep 24, 2024
1618### Attendees
1619
1620- Blaise
1621- B3n
1622- Chris
1623- hacklschorsch
1624- Jeffhimself
1625- Meejah
1626- Pete
1627
1628### New Items:
1629
1630- The new tutorials and docs will default to systemd in examples for running as a service.
1631- We'll start migrating issues. @b3n will provide a summarized plan next week. If necessary, we'll migrate to a self-hosted forgejo instanc.
1632
1633#### Migration: User Management topics
1634- Account creation flow
1635    - Auto-registration OFF,
1636    - User Creation
1637        - Auto create if Github auth'd
1638        - Manual
1639- Forgotten password flow (eg. Github IdP is down)
1640
1641#### Tahoe-S3
1642- A client which maps the finger tree into S3 numbers (and deal with S3 size limits)
1643- Finger tree used to handle failure scenarios
1644- Immutables only
1645- Doesn't create the shares
1646- Doesn't replace the native Tahoe storage server
1647- A challenge to implement in Haskell because it requires intimate knowledge of Tahoe internals, REST and Foolscap APIs
1648
1649#### ADR: Tech stack decisions
1650- Whither Haskell?
1651    - How much functionality is already implemented?
1652    - Haskell is a good high-level language.
1653- Whither Rust?
1654    - If we build *low-level* components in Rust, there's opportunity for re-use.
1655    - Rust has lots of tooling
1656
1657#### Improving Immutables
1658- Single block writers are the problem (@ccx)
1659- blockless multi-writer implementation is the answer
1660
1661Speaking 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.
1662
1663
1664## TILs
1665
1666- Duplicity has a backend option [`--tahoe`](https://fossies.org/linux/duplicity/duplicity/backends/tahoebackend.py)
1667- Python pre-compiled for [iOS](https://github.com/PyO3/maturin/issues/1742#issuecomment-1686219705), courtesy of [maturin](https://www.maturin.rs/tutorial)
1668- Room for improvement in describing our goals, roadmap milestones, features, etc. ("implement Tahoe-S3" vs "have a phone app")
1669
1670
1671---
1672
1673## Sep 17, 2024
1674### Attendees
1675
1676- Blaise
1677- B3n
1678- Pete
1679
1680### New Items:
1681
1682#### Trac migration
1683The 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).
1684
1685#### Provisioning and configuration management
1686On 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.
1687This is an area with too many choices.
1688
1689Some of the resources that came up in the discussion may be interesting to others:
1690- [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.
1691- [Packer](https://www.packer.io/) from HashiCorp, takes the "images as code" approach. Concerns about a terraform-style licensing issue came up.
1692- [Distrobox](https://distrobox.it/) to create containers with custom configurations.
1693- [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)
1694- 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).
1695- 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.
1696
1697---
1698
1699## Sep 10, 2024
1700### Attendees
1701
1702- Blaise
1703- hacklschorsch
1704- Chris
1705- Ccx
1706
1707### Step-by-step approach to getting started
1708Instead 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
1709
1710
1711### Express modularity using C4 notation for the diagrams
1712- layers of abstraction Context, Container, Component, Code
1713- [PlantUML includes](https://crashedmind.github.io/PlantUMLHitchhikersGuide/) C4 in the std lib
1714- https://crashedmind.github.io/PlantUMLHitchhikersGuide/C4/C4Stdlib.html
1715
1716### Describing Tahoe to local user groups
1717As prep for presenting to larger conferences
1718@blaisep offers to do user group talks (later: conference presentations)
1719- Historical context (eg. why did they create SDK first? Surveillance capitalism, enshitification, etc.)
1720- Use case examples (creating examples relevant to end users)
1721    - The "dumb pipe scenario" (provider-independent security), use cloud storage for personal data.
1722    - Storage only is low value
1723
1724#### Challenges
1725Either gaps in functionality or gaps in understanding
1726- Describing the security boundaries (eg.vs corp walled gardens)
1727- Key management, rotattion, revocation
1728- The "dumb pipe scenario" (provider-independent security), use cloud storage for personal data.
1729- No generic writer( @ccx ) can't write everything to/from everywhere.
1730
1731#### Comparisons
1732Describing Tahoe in terms of something they already know.
1733- 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.
1734Flo said NIP-104 will be a big improvement for private messaging
1735https://github.com/nostr-protocol/nips/pull/1427
1736 
1737- IPFS: similar layer of abstraction. More client implementations. Scales differently? https://news.ycombinator.com/item?id=37750529
1738- Signal: but for storage ( _can Signal self host?_ ) The reference implementation is a useful app, SDKs, Open protocol, ubiquitous.
1739- Syncthing: (peer-to-peer) but with decentralization and capabilities (@ccx)
1740
1741---
1742
1743## Sep 3, 2024
1744### Attendees
1745
1746- b3n
1747- Blaise
1748- hacklschorsch
1749- Meejah
1750- Ccx
1751
1752
1753## Prior Items
1754
1755- Glossary items
1756
1757- Debian packaging maybe delayed because `pycddl` has never been packaged for Debian. We might make it in by the end of the year. @hacklschorsch
1758    - (we should check if any of our other dependencies have never been packaged for Debian @meejah)
1759
1760- 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.
1761  - @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.
1762  - "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
1763
1764- @hacklschorsch: Can we lower the Tahoe-LAFS merge process turnaround time?
1765  - Optimistic Merging / other ideas for the Tahoe-LAFS GitHub repo? to make contributing leaner/more fun
1766  - meejah: A PR that is green and has approvals is already merged quickly now.  If not, write on IRC
1767  - 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.
1768
1769
1770## New items
1771
1772- Veilid: is it real, where are the intersections?
1773
1774@ccx : it's a library which bundles a number of p2p protocols. No existing app yet.
1775
1776@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.
1777
1778### Making it easier to develop on Tahoe
1779Separation of concerns, breaking tahoe into modules would be a good next move. @ccx (@blaise start a trac issue?)
1780
1781---
1782
1783## August 27, 2024
1784### Attendees
1785
1786- b3n
1787- Chris
1788- hacklschorsch
1789- Meejah
1790- Pete
1791
1792### Updates
1793
1794- Flo
1795  - LA wants to hire a senior Haskeller to work on LAFS
1796  - iOS: Obsidian is still investigating the "illegal instruction" compiler/linker issue
1797  - 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
1798  - Works with Blaise on Tahoe-LAFS docs
1799  - ... and would like to pair more in general
1800 
1801- Chris
1802  - published a Rust crate for LAFS: https://crates.io/crates/lafs 
1803 source repo: https://github.com/crwood/lafs
1804  -  Local and much faster than the Python equivalent (.25s instead of 24s on Chris' machine)
1805  -  It comes with Python bindings
1806
1807- b3n
1808  - Codeberg importing issue acknowledged by them
1809  - Would like to discuss self-host vs. SaaS for the upcoming GitTea with Meejah
1810
1811- Meejah
1812  - Magic Wormhole protocol work
1813  - FOWL Policy & Permissions API mostly done, soon to be merged & released.
1814  - [Pear-On](https://sr.ht/~meejah/pear-on/) should work ATM - testers welcome
1815
1816
1817## Previous items
1818
1819@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)
1820
1821
1822## New Items
1823
1824- 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.
1825- 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`).
1826- @blaisep has limited availability until Sep 30 2024
1827
1828
1829---
1830
1831## August 20, 2024
1832### Attendees
1833
1834Blaise
1835b3n
1836ccx
1837Chris
1838hacklschorsch
1839
1840## Previous items
1841
1842### WTF Circle CI?
1843* Is it broken? Maybe drop it?
1844* Do we have much logic in the Circle CI?
1845* It might be tests failing, rather than a systemic fail (credentials, dependencies, etc)
1846* "AMP server"? (twisted RPC framework) @ccx
1847* * https://app.circleci.com/pipelines/github/tahoe-lafs/tahoe-lafs/4958/workflows/d16324ae-293d-45c8-ba97-6ac39ef4cfc4
1848* https://app.circleci.com/pipelines/github/tahoe-lafs/tahoe-lafs/4958/workflows/d16324ae-293d-45c8-ba97-6ac39ef4cfc4/jobs/86344
1849
1850
1851### Towards a portable CI
1852* keep logic in the repo
1853* avoid huge Nix dependency (or maybe build a weekly Nix image)
1854* https://docs.gitlab.com/ee/ci/ci_cd_for_external_repos/github_integration.html
1855
1856
1857
1858### Describe the build process
1859* add prose in the dev guide to the files in the repo describing the build (@blaise)
1860* update the release checklist: https://tahoe-lafs.readthedocs.io/en/latest/release-checklist.html
1861
1862### Mutables, Service of Happiness
1863* @blaise asked where we were at with mutables...
1864* using mutables as single writers (eg. Tahoe backup)
1865* It's a big thing, eventually replace with a proper design for a multi-writer primitive
1866* For now, stick with readonly or Magic Folder for examples and getting started guide.
1867* > 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
1868
1869### [MoveOffTrac](https://tahoe-lafs.org/trac/tahoe-lafs/wiki/MoveOffTrac) - [#4095](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4095)
1870* 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).
1871* 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!
1872* New Forgejo instance (copy/paste from Gitea) to be closer to Codeberg: https://forge.lafs.eval.latfa.net/tahoe-lafs/
1873* Testing migration to Codeberg with pagination bug (workaround), performance issue (deadlock error) and user mapping (unlikely possible)
1874* Keyoxide.org may help us to link all those account!?
1875
1876## New Items
1877
1878* Blaisep has trac !!!
1879* TIL: Trac use "htdigest" (@meejah "i'll put a note in ~trac")
1880
1881---
1882
1883## August 13, 2024
1884### Attendees
1885
1886Blaise
1887b3n
1888ccx
1889Chris
1890hacklschorsch
1891Pete
1892
1893## Previous items
1894
1895- Blaise needs a trac account to CRUD issues, for docs, etc.
1896- GitTea self register results in many spam accounts @b3n
1897- We have users on Trac and users on GitHub, sometimes the names are different. @b3n
1898- Trac Migration Plan [WIP](https://tahoe-lafs.org/trac/tahoe-lafs/wiki/MoveOffTrac)
1899- migrated Trac eval instance (https://code.lafs.eval.latfa.net/tahoe-lafs/trac-2024-05-23/issues)
1900
1901## New
1902- 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
1903- Consider using Google, GitHub auth for auto register CodeBerg accounts
1904- Consider upgrading/self hosting Trac instance (maybe it's not so bad after all)
1905- Could we make trac readonly and do new work on the ["demo" instance](https://www.lafs.eval.latfa.net/) instance?
1906
1907
1908### Migrating Issues: Goals and Constraints
1909- Anything off of track is better
1910- Github Issues are accessible, but there is risk of lock-in, enshitification
1911- Gitea/Forgejo/CodeBerg is future-proof (no lock-in)
1912- Inconsistent tribal knowledge about decisions made last year @blaisep et al.
1913
1914---
1915
1916
1917## August 6, 2024
1918### Attendees
1919
1920Blaise
1921b3n
1922Chris
1923ccx
1924hacklschorsch
1925meejah
1926Pete
1927
1928
1929Thought leaders:
1930Amber O'Hearn (not so much)
1931Larry Lessig
1932Brewster Kahle
1933Christine_Lemmer-Webber (spritely)
1934
1935
1936New Items:
1937
1938Pete's foundation doc: https://docs.google.com/document/d/1MpFUUB9sX-SA6rsHpq9ZkIhrnZaG3zwzI6KJ9I0VAgE/edit
1939
1940## Comparables
1941
1942* https://spritely.institute/about/
1943* https://ocapn.org/
1944* https://darkcrystal.pw/ (meejah)
1945* ISRG https://www.abetterinternet.org/
1946* https://divviup.org/
1947* https://sans-io.readthedocs.io/
1948
1949
1950### Mission statements
1951
1952"Infrastructure for Libre, gratis, private, intentional composability and sharing " @Blaise , @meejah
1953
1954Device introduction @meejah
1955
1956"social infrastructure tools (sharing and composability to support differrent social structures and relationships)"
1957Bootstrap social relations, dependency maps.
1958@Chris
1959
1960secure sharing with least privilege (zero trust?) @ccx
1961(Higher resolution, more ephemeral than app-level privs)
1962https://roy.marples.name/blog/posts/capsicum_vs_pledge_final_thoughts
1963
1964Discoverable, "~~decentralized~~" (Autonomous?) / disconnected in nature (eg. TLS without the PKI) @Pete
1965Provider independent
1966
1967
1968### Community Survey
1969
1970@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.
1971eg, decouple wire protocol from the U I.
1972https://sans-io.readthedocs.io/ @Pete
1973
1974Who is the audience? grandmas with photosharing? Political activists? crypto bros?
1975
1976---
1977
1978## July 30, 2024
1979### Attendees
1980
1981Blaise
1982hacklschorsch
1983b3n
1984Chris
1985Pete
1986ccx
1987
1988## Highlights:
1989* Project governance structure
1990
1991## Agenda
1992
1993### Previous topics:
1994
1995* Docs PR in progress
1996
1997## New Topics:
1998* A proposal for a governance structure (Pete)
1999
2000### An endowment and governance structure
2001
2002* Align the Tahoe mission with the right institutional structure.
2003* Similar cases:
2004    * The [Veillid Foundation](https://veilid.org/about-us/) is a very close analog.
2005    * https://www.djangoproject.com/foundation/
2006    * https://foundation.mozilla.org/en/who-we-are/
2007    * https://www.abetterinternet.org/documents/2023-ISRG-Annual-Report.pdf
2008    * https://www.abetterinternet.org/about/
2009    * https://matrix.org/foundation/about/
2010* Fund some dedicated project support
2011
2012### Who is the community?
2013* Board members
2014* What are the activities?
2015* Intellectual property portfolio (trademarks, copyrights, patents)?
2016
2017### Who is NOT the community?
2018Where has the project stalled and why?
2019Why do people drop in, get frustrated, and leave?
2020What are the blockers for adoption and how can we overcome them.
2021
2022### Tahoe public resources; what could we build next?
2023* Public test grid ?
2024* ZCap servers ?
2025
2026#### Other options for funding services
2027
2028* https://docs.opencollective.foundation/how-it-works/fees
2029
2030#### Dependent projects
2031GridSync (golang) ?
2032Magic Wormhole ?
2033
2034#### Dependencies
2035* Twisted
2036* Mutables
2037* Python https://meta.pycqa.org/introduction.html
2038
2039---
2040
2041## July 23, 2024
2042
2043### Attendees
2044
2045Blaise
2046hacklschorsch
2047Meejah
2048b3n
2049Chris
2050ccx
2051
2052
2053## Highlights:
2054* Mutables would be a good thing for the Foundation to fund.
2055* The goal of [GBS](https://gitlab.com/tahoe-lafs/gbs-downloader) is to replace foolscap. Not there yet. (sucks to require a node online)
2056* Create project for client filesystem
2057
2058## Agenda
2059
2060### Previous topics:
2061
2062Meejah:
2063* Trac disk space restored
2064* Granted admin privs
2065
2066hacklschorsch:
2067Mobile LAFS [Wiki page](https://tahoe-lafs.org/trac/tahoe-lafs/wiki/TahoeLAFSMobile) with draft description of Features and Scope.
2068
2069B3n:
2070Next, Trac migration path (DNS, )
2071Codeberg bug
2072
2073
2074### New topics:
2075* B3n: Prepare Trac migration operating instructions (DNS settings, etc)
2076* B3n: Help Meejah create Trac account (for Blaise).
2077* Decision: Let's try to make the single mobile code base work (hacklschorsch)
2078* Deep integration with the OS is not MVP  (hacklschorsch)
2079* [Gitlab milestones](https://gitlab.com/tahoe-lafs/tahoe-lafs-mobile/-/milestones/7#tab-issues) don't have the OS integration yet.(ccx)
2080* Create FUSE module for the dev environment (ccx)
2081
2082## Notes:
2083
2084Chris:
2085* [Porting Tahoe hashlib](https://github.com/crwood/deterministic-keygen/issues/5) to Rust and found an issue:
2086* 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.
2087* Curating a common set of test vectors
2088
2089#### Restore scenarios
2090Todo: write up a description, describing permuted scenarios (Meejah, Chris)
2091(We need better words to describe the operations and events)
2092
2093Four scenarios:
2094* Client failed, grid is fine
2095* Grid loses nodes
2096* Grid loses partial data
2097* Grid loses all data
2098
2099
2100#### Mutables
2101* Don't do service happiness (ccx's complaint)
2102
2103Can't detect all the restore scenarios. Sometimes all the shares end up on one server :frowning:
2104What is the meaning of Happiness? Happiness is just a number (Meejah)
2105
2106#### Mobile
2107* Need to write up the description in  [Wiki page](https://tahoe-lafs.org/trac/tahoe-lafs/wiki/TahoeLAFSMobile)
2108* We need to describe how much of the functionality
2109* Foolscap requires a node online, [GBS](https://gitlab.com/tahoe-lafs/gbs-downloader) does not
2110* "User defined grid" ? (ccx)
2111* What if we had a gridsync client (b3n)
2112* Deep integration with the OS is not MVP  (hacklschorsch)
2113* Obsidian has something called `backend` which is different.
2114* [Obelisk overrides](https://gitlab.com/tahoe-lafs/tahoe-lafs-mobile/-/blob/main/obelisk/haskell-overrides.nix?ref_type=heads)
2115* Let's have good interface definitions (ccx)
2116* [Gitlab repo](https://gitlab.com/tahoe-lafs/tahoe-great-black-swamp) Code
2117
2118
2119#### File system browser? (ccx)
2120* Can we use the native [mobile libraries](https://emanual.github.io/Android-docs/guide/topics/providers/document-provider.html)?
2121* How much do we need in the GUI?
2122* (https://gitlab.com/tahoe-lafs/tahoe-lafs-mobile/-/blob/main/obelisk/haskell-overrides.nix?ref_type=heads)
2123
2124#### Create project: Investigate FUSE File System Support (ccx)
2125* Read/Only native client
2126* Read/Only magic folder
2127* Read/Write Magic Folder
2128* Built on top of GBS downloader
2129
2130---
2131
2132
2133