Ticket #4104: 20241203-Meetingnotes.md

File 20241203-Meetingnotes.md, 40.9 KB (added by blaisep, at 2024-12-03T19:23:29Z)

2024-12-03 meeting notes

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