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

File MeetingNotes-2025-08-19.md, 79.2 KB (added by blaisep, at 2025-08-19T18:19:22Z)

MeetingNotes?-2025-08-19

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