Ticket #4104: 20241217-meetingnotes.md

File 20241217-meetingnotes.md, 43.9 KB (added by blaisep, at 2024-12-17T18:28:38Z)

20241217-meetingnotes

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