Ticket #4104: 20241126-MeetingNotes.md

File 20241126-MeetingNotes.md, 39.4 KB (added by blaisep, at 2024-11-26T18:10:16Z)

MeetingNotes?-2024-11-26

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