Ticket #4104: TahoeLAFS-Meetings-2025.md

File TahoeLAFS-Meetings-2025.md, 83.3 KB (added by blaisep, at 2026-01-20T18:16:01Z)

TahoeLAFS Nuts&Bolts Meetings-2025.md

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