Ticket #4104: 20241210-Meetingnotes.md

File 20241210-Meetingnotes.md, 42.7 KB (added by blaisep, at 2024-12-10T23:42:36Z)

MeetingNotes?-2024-12-10

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## Dec 10, 2024
15### Attendees
16- Ben
17- Blaise
18- Chris
19- Jeff
20- Meejah
21- Shane
22
23### New Items
24
25#### CI
26- Ben has CI working everywhere
27    - Github
28    - Local
29    - Backport changes to CircleCI
30    - **Except**: Inconsistency specific to Circle CI (even in Least Authority Org), possibly resource related on circle CI's k8s config
31- Trac issues
32    - 3484
33    - 4131
34    - 4135
35    - 4142
36    - 4143 (Updating the CI images)
37    - xxxx (Using the new images)
38    - xxxx (_Plan B_ bypassing the intermediate image build)
39
40Note: Tahoe-lafs github admin group has 6 members.
41
42#### Is building CI images in advance a premature optimization?
43- Circle CI creates "tahoelafsci/debian:11-py3.9" and uses that image to create the build.
44- It requires a periodical "click of the button" for the occasional rebuild of the CI images.
45- It does not actually provide reproducible builds.
46- We are not pinning images nor are we pinning wheels.
47- It *may* provide some faster builds (we have not quantified)
48- Reporoducibility vs (...) Currency (?)
49- @blaise: We should consider a separate repo/pipeline for CI images because their revision cycle is different from Tahoe-lafs
50- @meejah: there is not a lot of project or version specific code added to the docker images.
51- @meejah: I don't want to run ci against a previous frozen version. I want to run CI against the current version.
52- @meejah: useful to pull the latest platform, maybe pin the python.
53- @ben: we can fix what we currently have (the Dockerfile infrastructure) and consider making changes separately.
54- Ben will explore a PR building with the upstream images without the intermediate docker images.
55
56#### Consider pinning Python separately from platform
57
58- cache and pin the platform? (criteria?)
59- cache and pin the Python? (criteria?)
60
61
62
63## Dec 3, 2024
64### Attendees
65- Ben
66- Blaise
67- Flo
68- Shane
69- Meejah
70- Chris
71- Jeff
72
73
74#### We need a release, soon
75@hacklschorsch
76
77#### CI failures
78- @btology happy to migrate CI off CircleCI (we chose Circle for reliability, but that has changed)
79    - 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.
80    - Todo: Update fedora builder to fc41
81- Typecheck fails on `master` https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4115
82- Oracle Linux fails: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4135
83- Master branch does not build
84    - Integration tests do not run on master branch
85- Nix pacakge build does not work
86    - Too Slow:https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4126)
87    - Cachix does not have current images, so dependencies must be built from source.
88    - We need Cachix token [trac](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4134)
89    - We need access to the Cachix org to regnerate the token
90    - Do we care about nix?
91        - If someone needs the flake for Tahoe-lafs, eg (private storage?) they will fail.
92        - Maybe we consider that "downstream" and people can fix it.
93- PyPi: ownership for prod, but only JP has access to test.pypi
94- Ubuntu builder fails https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3949
95- We build wheels for Windows, Mac OS, Debian and PyPI
96- Should we decide which CI are "blockers"?
97    - Debian, Mac OS and Windows MUST be green
98    - If no one complains, then they dont block
99
100
101## Nov 26, 2024
102### Attendees
103
104- Ben
105- Blaise
106- Flo
107- Shane
108- Meejah
109- Chris
110
111### New Items:
112
113#### Tahoe Project open office hours
114- Consider a standing schedule for folks to drop in with questions and pairing.
115- Blaise is available to turn on the lights, start the coffee pot and arrange the chairs.
116- Meejah suggests 15:00 UTC might be a good time for Europe and North America.
117
118#### GridSync
119
120[Standalone magic-folder binaries fail due to missing win32com.shell import](https://github.com/gridsync/gridsync/issues/707)
121[PyInstaller/frozen tahoe executables fail to execute on macOS 13 due to missing libintl](https://github.com/gridsync/gridsync/issues/709)
122
123#### User Stories for Landing  Page: www.tahoe-lafs.com (and related Wiki content)
124- Describe the CRUD lifecycle
125    - Who does the CRUD ?
126    - What privs do they need?
127- Failure Scenarios:
128    - Host outages? (no response from host, page not found, ...)
129    - Content bugs? ()
130@hacklschorsch wants :
131    - static landing page sounds good
132    - enough redirect to preserve the original trac urls https://docs.gitlab.com/ee/user/project/pages/redirects.html
133   
134   
135- Wiki Pages are mostly reproducible
136    - Before:
137        - https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4095
138    - After:
139        - https://forge.lafs.eval.latfa.net/tahoe-lafs/trac/issues/4095
140    - NOT reproducible:
141        - dynamic(ish) content like Roadmap,
142
143
144#### Broken CI updates
145
146- CircleCI keeps asking for an SSH key in some fork or PR!?
147- Flo thinks he has fixed most of CI issue,
148- but there is still a flaky systemtest which fails from time to time
149- Ben is trying to reproduce this flay part with GH actions
150
151- Refactor (big) tests, see https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4078 and then https://github.com/tahoe-lafs/tahoe-lafs/pull/1354
152    - 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) )
153    - @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)
154    - Differing seeds for random number generators can result in strange behaviour so @Chris points out that we can force `PYTHONHASHSEED=1` and force consistency.
155
156#### FOSDEM 2025
157
158- Flo and Ben would like to present some works (e.g.: Mobile, Tracker, Website),
159
160
161## Nov 19, 2024
162### Attendees
163
164- Blaise
165- Rodrigo
166- Meejah
167- Chris
168- Jeff
169- @hacklschorsch
170- Shane
171
172### New Items:
173
174#### User stories for ticketing system
175Meejah 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.)
176
177#### SupaWiki and Tahoe for private content.
178
179- Describe the threat model. Be clear on the expectations resulting from the specific deployment mode.
180For example, with Desktop apps there is "Trust on every use" so it is "less secure" than locally installed code.
181
182@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.
183
184@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?
185- Prefer the term "exposure" over trust. There is no trust in tahoe, just exposure.
186
187@Rodrigoplp: we dont' yet have specific constraints, because we're exploring an example (the private medical facts)
188- The work that needs to be done is to make clear where the exposure begins.
189- If the system requires many nuanced decisions, then it will be used by experts
190- If you need to access simple users, then they need apps that have few dials and levers
191
192@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.
193
194@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.
195
196*Questions*
197- if an app can add a layer of access control, *then* it can facilitate sharing, revocation and recovery?
198- should we add glossary entries for terms like `exposure` vs `trust`
199
200### Todos:
201- Explicit doc for the "security model" (inclusive of:
202    -  https://tahoe-lafs.readthedocs.io/en/latest/architecture.html#security
203    -  https://tahoe-lafs.readthedocs.io/en/latest/about-tahoe.html#what-is-provider-independent-security (ie.  The "provider-independent security" doc)
204- 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")
205- Add Glossary entries:
206    - exposure
207    - trust
208    - sharing
209    - revocation
210    - recovery
211    - membrane
212    - macaroon
213
214
215#### Broken CI
216
217@hacklschorsch : the tests seem to fail around HTTP. Foolscap seems to work but HTTP will pass and then fail.
218https://github.com/tahoe-lafs/tahoe-lafs/pull/1381#issuecomment-2444698978
219(maybe improve setup and teardown? see: allmydata.test.test_system.HTTPSystemTest )
220
221Ben noticed that there are less failures on the PAID circle CI account?!
222Ben will try to verify this using the LA fork:
223https://github.com/LeastAuthority/tahoe-lafs/tree/master, which now fails on CircleCI because of this ghost SSH key issue.
224
225### Beware logging
226There are several log sources and they are joined (manually) using timestamps :frowning:
227- Eliot  (`eliot tree`, `eliot prettyprint`)
228- Twisted
229- Python logger
230
231#### FOSDEM 25 in Bruxelles ?
232- Should we present a talk here?
233
234
235## Nov 12, 2024
236### Attendees
237
238- Ben
239- hacklschorsch
240- Jeff
241- Rodrigo
242- Shane
243- Blaise (late)
244
245### New Items:
246
247#### SupaWiki https://supawiki.com/
248Rodrigo joined and presented the idea to record personal data in a safe/private wiki.
249
250Update from blaise, limited availability during mourning:
251
252Public Repo for the integration app is: https://github.com/blaisep/private_facts
253@rodrigoplp is blasting ahead with integration into supawiki.com
254
255#### Mobile Tahoe-LFS mobile app in Haskell
256Good news, a few PRs have been merged: 11, 14, 15, 17, 19, 20 and 21:
257https://gitlab.com/tahoe-lafs/tahoe-lafs-mobile/-/merge_requests/?scope=all&state=merged
258
259#### User stories for Tahoe-LAFS end-users:
260Jeff and Blaise are working on describing how Tahoe-LAFS works.
261Leading to a sequence diagram (WiP):
262https://github.com/blaisep/private_facts/blob/main/docs/source/upload_content.puml
263
264#### MoveOffTrac
265- Pairing meeting on user stories postponed.
266- Possible licensing issue discussed with Codeberg. In short, if this is dual-licenced project, it should not be an issue.
267- 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)
268- Ben needs more info from Meejah and Pete to try to get a written approval from Codeberg.
269- As a reminder: this is not a blocker, until we decide to move the code from GH to CodeBerg (not in scope so far).
270
271#### CircleCI
272- Ben is working on the SSH ghost key issue
273- More info in [#4098](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4098#comment:17)
274- The problem may be fixed in 2 ways:
275  1. gaining admin access (using a temporary GH user) to add and remove an ssh key (hopefully cleaning the dirt in the pipes)
276  2. forcing https checkout using a custom step (PR in progress)
277- Rodrigo said it may be worthed to consider alternatives to CircleCI, like an independent version of GitHub Actions.
278- As a reminder: the CI is already half GH, half CircleCI. But if GH is doing better, both look vendor locking.
279- 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
280
281
282#### Other links:
283https://yopass.se/   (Maybe uses Tahoe?)
284https://github.com/tahoe-lafs/tahoe-lafs/blob/master/COPYING.TGPPL.rst
285
286
287---
288
289## Nov 05, 2024
290### Attendees
291
292- Ben
293- Blaise
294- Chris
295- hacklschorsch
296- Jeff
297- Meejah
298- Shane
299
300
301### New Items:
302
303#### Project Adoption
304The creator of [SupaWiki](https://supawiki.com) is interested in being able to create and read private objects using Tahoe.
305
306@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.
307
308### Ongoing
309
310#### Trac migration with keywords
311[PR](https://github.com/tahoe-lafs/trac2gitea/pull/31) in progress for trac2gitea to migrate keywords as labels (total = 912 w/ some dupplicates).
312
313Let's meet offline to review https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4095 and memorialize a decision process.
314- summarize the user scenarios ([stories](https://github.com/tahoe-lafs/MoveOffTrac/blob/main/docs/UserStories.md))
315- clarify the constraints and requirements
316- clarify the scope of each milestone (eg. describe structure of an issue, choose. a target pla)
317
318#### CircleCI
319- Making progress in related repositories (e.g.: ZKAPAuthorizer) and learning for Tahoe-LAFS
320- ssh key error seen in many projects, inluding Tahoe-LAFS: WiP to understand/avoid it
321- Too much permissions by default
322
323#### RClone
324- https://forum.rclone.org/t/tahoe-lafs-backend/6625
325- 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.
326
327#### Python packaging
328- Is there a more "standard way" of packaging Python (Ben found it heterogeneous)?
329- Blaise and Jeff are investigation [UV](https://github.com/astral-sh/uv): promessing, but?
330- Tahoe-LAFS still uses [Makefile](https://github.com/tahoe-lafs/magic-folder/blob/main/Makefile)!
331- Note: Tahoe-LAFS packages are not deployed to PyPi from CI
332- BTW: PyPi is about to drop signature w/o alternative
333- Meejah still publishes signatures for other projects
334- See https://github.com/meejah/pypiratzzi/
335
336---
337
338## Oct 29, 2024
339### Attendees
340
341- Ben
342- Blaise
343- Chris
344- hacklschorsch
345- Pete
346- Jeff
347- Meejah
348- Shane
349
350
351### New Items:
352
353#### CodeBerg has some retrictions about the license
354- https://codeberg.org/Codeberg/org/src/branch/main/TermsOfUse.md#2-allowed-content-usage
355- Re-licensing does not look like an option for Tahoe-LAFS (TGPPL)
356- This is a cons, but there are other Forgejo providers
357
358#### Magic-grid installation is fixed (Meejah)
359A simple typo in `pyproject.toml` resulted in ugly traceback. https://paste.ofcode.org/wapHcem8hXBVgigJ8LQUFg
360
361#### Explosion of interest in the Health app
362Front end developers from the Nivenly community (folks behind https://hachyderm.io ) are excited about a health tracker with provider-independent privacy.
363
364#### Jeff working on 1101
365Writing 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.
366    - The Twisted CLI test infrastructure is weak.
367    - The way the Twisted handles cmd args is somewhat magical.
368    - Ideally, we re-write the CLI with `click` ... :santa:
369
370#### Learning to run individual tests:
371
372[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`
373
374#### Help is on the way for CI.
375
376B3n reports that there is approval for applying some of his time to work on CI.
377
378#### something about SEEDS proposal
379??
380
381#### Maybe release a new Magic-Folder
382    - conflict-resolution branch may be messy.
383    - Chris might benefit for grid-sync
384    - The Tahoe client UI for Magic Folder is ... not smooth because it shows the various levels and metadata..
385   
386#### Case Study: Bootstrap WireGuard using magic wormhole
387- One time use of magic wormhole to set up or add a wireGuard node. @meejah
388
389#### trac2gitea keywords
390- https://github.com/tahoe-lafs/trac2gitea/issues/28
391- ticket keywords would generate 1846 new labels
392- Meejah suggested to look at https://github.com/twisted/twisted which had similar concern (e.g: #11563)
393
394### Related links:
395
396[STUN tunneling](https://github.com/magic-wormhole/magic-wormhole/issues/6#issuecomment-147854595)
397
398## Oct 22, 2024
399### Attendees
400
401- Blaise
402- Chris
403- hacklschorsch
404- Meejah
405
406
407### New Items:
408#### Debian build
409Is there a set of tools we can use to validate our Debian builds?
410#### Decision: let's avoid including Debian-specific dependencies in upstream.
411
412
413#### Python 3.13
414Jeff noticed a weird error with 3.13.rc2: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4118#comment:4
415Chris is checking compatiblity. 3.13 deprecated `cgi` module and there are dependencies on it.
416#### Decision: We should move cgi classes to use the Twisted APIs
417
418#### Testing NAT with pytest and libvirt Virtual Networking
419@meejah : testing NAT with pytest is a headache
420@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/)
421@chris : `headscale` is a open source tailscale/wireguard to VPN all-the-things (orthogonal, but interesting)
422https://archive.fosdem.org/2023/schedule/event/goheadscale/
423
424---
425
426## Oct 15, 2024
427### Attendees
428
429- Blaise
430- B3n
431- Meejah
432- Jeff
433- Chris
434
435
436### random notes
437
438- some discussion of security etc around Terraform-managed Gandi DNS
439- some meta-discussion of privacy of data for some use-cases
440- distributed forgejo (etc) PRs mentioned, discussed a bit
441- blocker: CI not working https://github.com/tahoe-lafs/tahoe-lafs/pull/1377
442- Contributor/Developer [step-by-step guide](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4118)
443- 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)
444- Twisted project used https://github.com/chevah/trac-to-github to migrate from trac to github
445
446#### Decisions:
447- convert legacy keywords to static labels
448- link to stored queries that contributors can reuse.
449- Become independent of [CircleCI](https://sr.ht/~meejah/magic-grid/) is an aspiration. Some brave soul should do it.
450- we'll need CircleCI until we can make CI run on the three platforms: Linux, Windows, Mac.
451- Look at using [magic grid](https://sr.ht/~meejah/magic-grid/) to automate the tutorials
452
453### [Issue Tracking](https://github.com/tahoe-lafs/MoveOffTrac/blob/main/docs/UserStories.md)
454@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.
455We learned:
456- There are additional, distinct,  roles with associated privileges and activities.
457- Many issues are associated with each other using the free text `keywords` feature, which is not covered by the current migration.
458- Ticket Discovery: The View Ticket page has many pre-defined queries which have no direct counterpart outside of trac.
459
460### Related links:
461- [Git Federation](https://drewdevault.com/2018/07/23/Git-is-already-distributed.html)
462- [Git over ActivityPub](https://forgefed.org/)
463
464
465
466### Gaps in the [Contributor guides](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4118)
467A new contributor has no clear path to a usable PR. The instructions assume familiarity with the project. For example:
468- A contributor cannot find related tickets (WIP, previous solutions, dependencies, @meejah's tutorial automation ticket)
469- How to collaborate on tickets that relate to each other?
470- CI/CD: Which commands build the project?
471- ...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)
472- When to use the various Tox targets?
473- 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)
474
475### QUESTIONS: current contributor user stories
476- As a current contributor, when you want to find a ticket in Trac, do you:
477    - Use a prepared query on the [View Ticket](https://tahoe-lafs.org/trac/tahoe-lafs/wiki/ViewTickets) page?
478    - Use the Custom query form?
479    - Follow links inside an existing issue?
480
481
482
483---
484
485## Oct 8, 2024
486### Attendees
487
488- Blaise
489- B3n
490- Chris
491- hacklschorsch
492- ccx
493- Jeffhimself
494
495
496### New Items
497
498
499Include tests in the description of an issue.
500- https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2050#comment:7
501
502Proposed Docs config changes
503    - create
504        - docs/test (to store the docs-specific tests)
505        - docs/source (to restrict Sphinx to the the docs content, exclude tests, etc.)
506    - add sys.path to docs/source/conf.py (to find the source directory)
507    - Makefile (run Sphinx against the source directory)
508    - Makefile doc-testing (add target for `make doc-testing`)
509
510
511#### The step-by-step Developer Guide
512A failing test(s) for being ready to
513- build docs (`tox -e docs` ?)
514- run the tests?
515- submit a PR (nothing broken that the author couldnt' check themselves)
516- build a release
517
518#### Trac migration Developer Experience
519- @ccx Search? Associating trac issues to a feature is a PITA (labels, components are migrated)
520- @chris: developers should be able to see CI results; what is the integration of issue/commit/PR
521- @blaisep : reorder commits to match their tests.
522- Codeberg CI https://codeberg.org/Codeberg-CI/woodpecker
523
524### Questions
525- How does tox know about the fixtures?
526- setup.py install returns:
527`error: The 'zope-interface>=5' distribution was not found and is required by Twisted, twisted
528` (and I'm not supposed to run setup.py)
529
530---
531
532## Oct 1, 2024
533### Attendees
534
535- Blaise
536- B3n
537- Chris
538- hacklschorsch
539- Jeffhimself
540- Meejah
541- Pete
542
543### New Items:
544
545- Release Checklist, simple PR edition?
546- Public Grid?
547- Public mailbox server? (MagicFolder)
548- Fowl and Dilation mentioned as unannounced apps related to file transfers
549
550
551#### Trac Migration docs
552- WIP https://github.com/tahoe-lafs/MoveOffTrac/tree/docs-update-24w40/docs
553- Docs tickets will serve as the initial spike to test new user (Blaisep) creation.
554- User Account management has some cases we want to excercise (forgot password, account confirmation, etc)
555- Redirecting legacy URLs to the new issue tracker.
556
557### Prior Items:
558
559- 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)
560- fixed cryptography library issue https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4100#no1
561
562#### Dependency management
563
564- "Tahoe is an app, so we shouldn't pin dependencies" @pete
565
566#### related projects
567- "Git with you": Peer to Peer git colab (not via github) using pairon (?)
568- [Dulwich](https://www.dulwich.io/docs/#getting-started) is a python implementation of git
569- https://meejah.ca/blog/wizard-gardens-vision
570- [Copybin](https://carml.readthedocs.io/en/latest/command-copybin.html), but private
571- https://magic-folder.readthedocs.io/en/latest/invites.html#invites
572- Brian's STUN server (?)
573- @pete mentioned research on [OCAP](https://github.com/ocapn/ocapn)s over [CRDT](https://github.com/alangibson/awesome-crdt)s
574- exposing ssh using [Inlets sshmux](https://inlets.dev/blog/2024/02/05/access-all-your-ssh-servers-with-sshmux.html)
575- https://www.wireguard.com/
576- [ZCAP](https://w3c-ccg.github.io/zcap-spec/) is separate from Tahoe. [Github]()
577
578
579---
580
581
582## Sep 24, 2024
583### Attendees
584
585- Blaise
586- B3n
587- Chris
588- hacklschorsch
589- Jeffhimself
590- Meejah
591- Pete
592
593### New Items:
594
595- The new tutorials and docs will default to systemd in examples for running as a service.
596- We'll start migrating issues. @b3n will provide a summarized plan next week. If necessary, we'll migrate to a self-hosted forgejo instanc.
597
598#### Migration: User Management topics
599- Account creation flow
600    - Auto-registration OFF,
601    - User Creation
602        - Auto create if Github auth'd
603        - Manual
604- Forgotten password flow (eg. Github IdP is down)
605
606#### Tahoe-S3
607- A client which maps the finger tree into S3 numbers (and deal with S3 size limits)
608- Finger tree used to handle failure scenarios
609- Immutables only
610- Doesn't create the shares
611- Doesn't replace the native Tahoe storage server
612- A challenge to implement in Haskell because it requires intimate knowledge of Tahoe internals, REST and Foolscap APIs
613
614#### ADR: Tech stack decisions
615- Whither Haskell?
616    - How much functionality is already implemented?
617    - Haskell is a good high-level language.
618- Whither Rust?
619    - If we build *low-level* components in Rust, there's opportunity for re-use.
620    - Rust has lots of tooling
621
622#### Improving Immutables
623- Single block writers are the problem (@ccx)
624- blockless multi-writer implementation is the answer
625
626Speaking 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.
627
628
629## TILs
630
631- Duplicity has a backend option [`--tahoe`](https://fossies.org/linux/duplicity/duplicity/backends/tahoebackend.py)
632- Python pre-compiled for [iOS](https://github.com/PyO3/maturin/issues/1742#issuecomment-1686219705), courtesy of [maturin](https://www.maturin.rs/tutorial)
633- Room for improvement in describing our goals, roadmap milestones, features, etc. ("implement Tahoe-S3" vs "have a phone app")
634
635
636---
637
638## Sep 17, 2024
639### Attendees
640
641- Blaise
642- B3n
643- Pete
644
645### New Items:
646
647#### Trac migration
648The 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).
649
650#### Provisioning and configuration management
651On 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.
652This is an area with too many choices.
653
654Some of the resources that came up in the discussion may be interesting to others:
655- [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.
656- [Packer](https://www.packer.io/) from HashiCorp, takes the "images as code" approach. Concerns about a terraform-style licensing issue came up.
657- [Distrobox](https://distrobox.it/) to create containers with custom configurations.
658- [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)
659- 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).
660- 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.
661
662---
663
664## Sep 10, 2024
665### Attendees
666
667- Blaise
668- hacklschorsch
669- Chris
670- Ccx
671
672### Step-by-step approach to getting started
673Instead 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
674
675
676### Express modularity using C4 notation for the diagrams
677- layers of abstraction Context, Container, Component, Code
678- [PlantUML includes](https://crashedmind.github.io/PlantUMLHitchhikersGuide/) C4 in the std lib
679- https://crashedmind.github.io/PlantUMLHitchhikersGuide/C4/C4Stdlib.html
680
681### Describing Tahoe to local user groups
682As prep for presenting to larger conferences
683@blaisep offers to do user group talks (later: conference presentations)
684- Historical context (eg. why did they create SDK first? Surveillance capitalism, enshitification, etc.)
685- Use case examples (creating examples relevant to end users)
686    - The "dumb pipe scenario" (provider-independent security), use cloud storage for personal data.
687    - Storage only is low value
688
689#### Challenges
690Either gaps in functionality or gaps in understanding
691- Describing the security boundaries (eg.vs corp walled gardens)
692- Key management, rotattion, revocation
693- The "dumb pipe scenario" (provider-independent security), use cloud storage for personal data.
694- No generic writer( @ccx ) can't write everything to/from everywhere.
695
696#### Comparisons
697Describing Tahoe in terms of something they already know.
698- 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.
699Flo said NIP-104 will be a big improvement for private messaging
700https://github.com/nostr-protocol/nips/pull/1427
701 
702- IPFS: similar layer of abstraction. More client implementations. Scales differently? https://news.ycombinator.com/item?id=37750529
703- Signal: but for storage ( _can Signal self host?_ ) The reference implementation is a useful app, SDKs, Open protocol, ubiquitous.
704- Syncthing: (peer-to-peer) but with decentralization and capabilities (@ccx)
705
706---
707
708## Sep 3, 2024
709### Attendees
710
711- b3n
712- Blaise
713- hacklschorsch
714- Meejah
715- Ccx
716
717
718## Prior Items
719
720- Glossary items
721
722- Debian packaging maybe delayed because `pycddl` has never been packaged for Debian. We might make it in by the end of the year. @hacklschorsch
723    - (we should check if any of our other dependencies have never been packaged for Debian @meejah)
724
725- 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.
726  - @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.
727  - "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
728
729- @hacklschorsch: Can we lower the Tahoe-LAFS merge process turnaround time?
730  - Optimistic Merging / other ideas for the Tahoe-LAFS GitHub repo? to make contributing leaner/more fun
731  - meejah: A PR that is green and has approvals is already merged quickly now.  If not, write on IRC
732  - 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.
733
734
735## New items
736
737- Veilid: is it real, where are the intersections?
738
739@ccx : it's a library which bundles a number of p2p protocols. No existing app yet.
740
741@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.
742
743### Making it easier to develop on Tahoe
744Separation of concerns, breaking tahoe into modules would be a good next move. @ccx (@blaise start a trac issue?)
745
746---
747
748## August 27, 2024
749### Attendees
750
751- b3n
752- Chris
753- hacklschorsch
754- Meejah
755- Pete
756
757### Updates
758
759- Flo
760  - LA wants to hire a senior Haskeller to work on LAFS
761  - iOS: Obsidian is still investigating the "illegal instruction" compiler/linker issue
762  - 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
763  - Works with Blaise on Tahoe-LAFS docs
764  - ... and would like to pair more in general
765 
766- Chris
767  - published a Rust crate for LAFS: https://crates.io/crates/lafs 
768 source repo: https://github.com/crwood/lafs
769  -  Local and much faster than the Python equivalent (.25s instead of 24s on Chris' machine)
770  -  It comes with Python bindings
771
772- b3n
773  - Codeberg importing issue acknowledged by them
774  - Would like to discuss self-host vs. SaaS for the upcoming GitTea with Meejah
775
776- Meejah
777  - Magic Wormhole protocol work
778  - FOWL Policy & Permissions API mostly done, soon to be merged & released.
779  - [Pear-On](https://sr.ht/~meejah/pear-on/) should work ATM - testers welcome
780
781
782## Previous items
783
784@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)
785
786
787## New Items
788
789- 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.
790- 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`).
791- @blaisep has limited availability until Sep 30 2024
792
793
794---
795
796## August 20, 2024
797### Attendees
798
799Blaise
800b3n
801ccx
802Chris
803hacklschorsch
804
805## Previous items
806
807### WTF Circle CI?
808* Is it broken? Maybe drop it?
809* Do we have much logic in the Circle CI?
810* It might be tests failing, rather than a systemic fail (credentials, dependencies, etc)
811* "AMP server"? (twisted RPC framework) @ccx
812* * https://app.circleci.com/pipelines/github/tahoe-lafs/tahoe-lafs/4958/workflows/d16324ae-293d-45c8-ba97-6ac39ef4cfc4
813* https://app.circleci.com/pipelines/github/tahoe-lafs/tahoe-lafs/4958/workflows/d16324ae-293d-45c8-ba97-6ac39ef4cfc4/jobs/86344
814
815
816### Towards a portable CI
817* keep logic in the repo
818* avoid huge Nix dependency (or maybe build a weekly Nix image)
819* https://docs.gitlab.com/ee/ci/ci_cd_for_external_repos/github_integration.html
820
821
822
823### Describe the build process
824* add prose in the dev guide to the files in the repo describing the build (@blaise)
825* update the release checklist: https://tahoe-lafs.readthedocs.io/en/latest/release-checklist.html
826
827### Mutables, Service of Happiness
828* @blaise asked where we were at with mutables...
829* using mutables as single writers (eg. Tahoe backup)
830* It's a big thing, eventually replace with a proper design for a multi-writer primitive
831* For now, stick with readonly or Magic Folder for examples and getting started guide.
832* > 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
833
834### [MoveOffTrac](https://tahoe-lafs.org/trac/tahoe-lafs/wiki/MoveOffTrac) - [#4095](https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4095)
835* 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).
836* 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!
837* New Forgejo instance (copy/paste from Gitea) to be closer to Codeberg: https://forge.lafs.eval.latfa.net/tahoe-lafs/
838* Testing migration to Codeberg with pagination bug (workaround), performance issue (deadlock error) and user mapping (unlikely possible)
839* Keyoxide.org may help us to link all those account!?
840
841## New Items
842
843* Blaisep has trac !!!
844* TIL: Trac use "htdigest" (@meejah "i'll put a note in ~trac")
845
846---
847
848## August 13, 2024
849### Attendees
850
851Blaise
852b3n
853ccx
854Chris
855hacklschorsch
856Pete
857
858## Previous items
859
860- Blaise needs a trac account to CRUD issues, for docs, etc.
861- GitTea self register results in many spam accounts @b3n
862- We have users on Trac and users on GitHub, sometimes the names are different. @b3n
863- Trac Migration Plan [WIP](https://tahoe-lafs.org/trac/tahoe-lafs/wiki/MoveOffTrac)
864- migrated Trac eval instance (https://code.lafs.eval.latfa.net/tahoe-lafs/trac-2024-05-23/issues)
865
866## New
867- 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
868- Consider using Google, GitHub auth for auto register CodeBerg accounts
869- Consider upgrading/self hosting Trac instance (maybe it's not so bad after all)
870- Could we make trac readonly and do new work on the ["demo" instance](https://www.lafs.eval.latfa.net/) instance?
871
872
873### Migrating Issues: Goals and Constraints
874- Anything off of track is better
875- Github Issues are accessible, but there is risk of lock-in, enshitification
876- Gitea/Forgejo/CodeBerg is future-proof (no lock-in)
877- Inconsistent tribal knowledge about decisions made last year @blaisep et al.
878
879---
880
881
882## August 6, 2024
883### Attendees
884
885Blaise
886b3n
887Chris
888ccx
889hacklschorsch
890meejah
891Pete
892
893
894Thought leaders:
895Amber O'Hearn (not so much)
896Larry Lessig
897Brewster Kahle
898Christine_Lemmer-Webber (spritely)
899
900
901New Items:
902
903Pete's foundation doc: https://docs.google.com/document/d/1MpFUUB9sX-SA6rsHpq9ZkIhrnZaG3zwzI6KJ9I0VAgE/edit
904
905## Comparables
906
907* https://spritely.institute/about/
908* https://ocapn.org/
909* https://darkcrystal.pw/ (meejah)
910* ISRG https://www.abetterinternet.org/
911* https://divviup.org/
912* https://sans-io.readthedocs.io/
913
914
915### Mission statements
916
917"Infrastructure for Libre, gratis, private, intentional composability and sharing " @Blaise , @meejah
918
919Device introduction @meejah
920
921"social infrastructure tools (sharing and composability to support differrent social structures and relationships)"
922Bootstrap social relations, dependency maps.
923@Chris
924
925secure sharing with least privilege (zero trust?) @ccx
926(Higher resolution, more ephemeral than app-level privs)
927https://roy.marples.name/blog/posts/capsicum_vs_pledge_final_thoughts
928
929Discoverable, "~~decentralized~~" (Autonomous?) / disconnected in nature (eg. TLS without the PKI) @Pete
930Provider independent
931
932
933### Community Survey
934
935@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.
936eg, decouple wire protocol from the U I.
937https://sans-io.readthedocs.io/ @Pete
938
939Who is the audience? grandmas with photosharing? Political activists? crypto bros?
940
941---
942
943## July 30, 2024
944### Attendees
945
946Blaise
947hacklschorsch
948b3n
949Chris
950Pete
951ccx
952
953## Highlights:
954* Project governance structure
955
956## Agenda
957
958### Previous topics:
959
960* Docs PR in progress
961
962## New Topics:
963* A proposal for a governance structure (Pete)
964
965### An endowment and governance structure
966
967* Align the Tahoe mission with the right institutional structure.
968* Similar cases:
969    * The [Veillid Foundation](https://veilid.org/about-us/) is a very close analog.
970    * https://www.djangoproject.com/foundation/
971    * https://foundation.mozilla.org/en/who-we-are/
972    * https://www.abetterinternet.org/documents/2023-ISRG-Annual-Report.pdf
973    * https://www.abetterinternet.org/about/
974    * https://matrix.org/foundation/about/
975* Fund some dedicated project support
976
977### Who is the community?
978* Board members
979* What are the activities?
980* Intellectual property portfolio (trademarks, copyrights, patents)?
981
982### Who is NOT the community?
983Where has the project stalled and why?
984Why do people drop in, get frustrated, and leave?
985What are the blockers for adoption and how can we overcome them.
986
987### Tahoe public resources; what could we build next?
988* Public test grid ?
989* ZCap servers ?
990
991#### Other options for funding services
992
993* https://docs.opencollective.foundation/how-it-works/fees
994
995#### Dependent projects
996GridSync (golang) ?
997Magic Wormhole ?
998
999#### Dependencies
1000* Twisted
1001* Mutables
1002* Python https://meta.pycqa.org/introduction.html
1003
1004---
1005
1006## July 23, 2024
1007
1008### Attendees
1009
1010Blaise
1011hacklschorsch
1012Meejah
1013b3n
1014Chris
1015ccx
1016
1017
1018## Highlights:
1019* Mutables would be a good thing for the Foundation to fund.
1020* The goal of [GBS](https://gitlab.com/tahoe-lafs/gbs-downloader) is to replace foolscap. Not there yet. (sucks to require a node online)
1021* Create project for client filesystem
1022
1023## Agenda
1024
1025### Previous topics:
1026
1027Meejah:
1028* Trac disk space restored
1029* Granted admin privs
1030
1031hacklschorsch:
1032Mobile LAFS [Wiki page](https://tahoe-lafs.org/trac/tahoe-lafs/wiki/TahoeLAFSMobile) with draft description of Features and Scope.
1033
1034B3n:
1035Next, Trac migration path (DNS, )
1036Codeberg bug
1037
1038
1039### New topics:
1040* B3n: Prepare Trac migration operating instructions (DNS settings, etc)
1041* B3n: Help Meejah create Trac account (for Blaise).
1042* Decision: Let's try to make the single mobile code base work (hacklschorsch)
1043* Deep integration with the OS is not MVP  (hacklschorsch)
1044* [Gitlab milestones](https://gitlab.com/tahoe-lafs/tahoe-lafs-mobile/-/milestones/7#tab-issues) don't have the OS integration yet.(ccx)
1045* Create FUSE module for the dev environment (ccx)
1046
1047## Notes:
1048
1049Chris:
1050* [Porting Tahoe hashlib](https://github.com/crwood/deterministic-keygen/issues/5) to Rust and found an issue:
1051* 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.
1052* Curating a common set of test vectors
1053
1054#### Restore scenarios
1055Todo: write up a description, describing permuted scenarios (Meejah, Chris)
1056(We need better words to describe the operations and events)
1057
1058Four scenarios:
1059* Client failed, grid is fine
1060* Grid loses nodes
1061* Grid loses partial data
1062* Grid loses all data
1063
1064
1065#### Mutables
1066* Don't do service happiness (ccx's complaint)
1067
1068Can't detect all the restore scenarios. Sometimes all the shares end up on one server :frowning:
1069What is the meaning of Happiness? Happiness is just a number (Meejah)
1070
1071#### Mobile
1072* Need to write up the description in  [Wiki page](https://tahoe-lafs.org/trac/tahoe-lafs/wiki/TahoeLAFSMobile)
1073* We need to describe how much of the functionality
1074* Foolscap requires a node online, [GBS](https://gitlab.com/tahoe-lafs/gbs-downloader) does not
1075* "User defined grid" ? (ccx)
1076* What if we had a gridsync client (b3n)
1077* Deep integration with the OS is not MVP  (hacklschorsch)
1078* Obsidian has something called `backend` which is different.
1079* [Obelisk overrides](https://gitlab.com/tahoe-lafs/tahoe-lafs-mobile/-/blob/main/obelisk/haskell-overrides.nix?ref_type=heads)
1080* Let's have good interface definitions (ccx)
1081* [Gitlab repo](https://gitlab.com/tahoe-lafs/tahoe-great-black-swamp) Code
1082
1083
1084#### File system browser? (ccx)
1085* Can we use the native [mobile libraries](https://emanual.github.io/Android-docs/guide/topics/providers/document-provider.html)?
1086* How much do we need in the GUI?
1087* (https://gitlab.com/tahoe-lafs/tahoe-lafs-mobile/-/blob/main/obelisk/haskell-overrides.nix?ref_type=heads)
1088
1089#### Create project: Investigate FUSE File System Support (ccx)
1090* Read/Only native client
1091* Read/Only magic folder
1092* Read/Write Magic Folder
1093* Built on top of GBS downloader
1094
1095---
1096
1097
1098