Title
#share-your-work
h

heartpunk

11/08/2021, 4:32 PM
https://twitter.com/heartpunkk/status/1457747480301510659 no code shared publicly anywhere yet but i could throw a snapshot up somewhere as soon as folks are interested.
a

Andrew F

11/08/2021, 5:59 PM
What do the queries look like for "what version of the code does what"? Just text matching? You don't sound like you're trying to solve the halting problem but that's where my brain is stuck.
h

heartpunk

11/08/2021, 6:24 PM
there's a ton of options for how you could do that; this doesn't solve that problem directly. referencing a particular snapshot would be the primary means of collaboration. there'd just so happen to be a sophisticated query mechanism available if you wanted to integrate it with other metadata sources.
6:25 PM
tl;dr: you need to explicitly annotate snapshots with metadata about what they do, or have tooling for automating that by way of testing/analysis/review etc.
6:27 PM
i'd heavily bias toward automated annotation myself, but i just don't consider that a primary problem here. i more mean that you can run your tests at a known snapshot and be guaranteed that's exactly the code that was tested, and associate test runs with snapshots, or whatever other analysis you do as part of your workflow
6:27 PM
i kinda worded that part of the tweet confusingly, sorry!
shalabh

shalabh

11/08/2021, 9:37 PM
very interesting. will this auto-sync two working copies on different machines for the same user?
h

heartpunk

11/08/2021, 9:40 PM
could do, haven't thought about defaults for such things, but defs configurable or programmable for such
9:42 PM
no sync built yet, but that can come quite soon, today's just not a dev day for me really
shalabh

shalabh

11/08/2021, 9:45 PM
nice, its something i'd want in a new vc system. often i just have to push/pull from a different machine while syncing just my changes. sounds like we'll be able to attach metadata to snapshots which is great.
h

heartpunk

11/08/2021, 9:45 PM
i guess that could be as simple as having a working copy configured for autocheckout of a particular head
9:45 PM
tbc this isn't git/hg replacement
9:45 PM
it's augmentation for that
9:46 PM
need to explain that much more clearly in the future; this distinction is clearer to those inside google or who have read and really grokked the piper/citc paper
9:48 PM
snapshotting mechanisms are far more primarily for reproducibility, enabling debug workflows, and augmenting collaboration around heavier version control systems that being said, there is absolutely no reason a layer couldn't be built on top of a system designed for snapshotting to allow it to act more like a traditional VCS
9:48 PM
i'd prolly defer to the folks at pijul for doing VCS properly in the current sense of VCS, rather than the more automatic, snapshot oriented sense
shalabh

shalabh

11/08/2021, 9:50 PM
oh i see. so will this require a VCS or will just work on any filesystem?
h

heartpunk

11/08/2021, 9:50 PM
it won't require a vcs, and it would work on any filesystem where watchman works
9:50 PM
which is all the major platforms rn
9:51 PM
it's unexplored territory as to whether it makes sense to merge the functionality and affordances of snapshot based and more traditional VCS systems
9:52 PM
i'd like to explore that with time, but that would also start to get into including undo history persistence from the editor level as an opt in for another layer of version history
9:52 PM
otoh, i also dk how long i'll keep playing with this particular project, but it will be open source, so, others will be able to do something with it if they choose
shalabh

shalabh

11/08/2021, 9:52 PM
so will this sync p2p or require a central file server? (cict works with piper)
h

heartpunk

11/08/2021, 9:53 PM
could do either; fundamentally it must support both for my design goals
9:53 PM
it should be reasonably possible to make either model work if you want
9:54 PM
without terrible usability issues
9:54 PM
like, that is a fundamental design goal for me
9:55 PM
prolly s3, ssh, and webrtc based sync; one purely client server, one that can be used either way, and another that's more fundamentally p2p but does unfort require a public IP for nat traversal
10:00 PM
(at least those to start; other mechanisms could exist nominally later, but those three scratch my itches the most)
shalabh

shalabh

11/08/2021, 10:04 PM
what i'm really looking for is a replacement for syncthing with better history support. not sure if this will fit but will certainly be worth trying out. i wonder if there is a practical limit to the number of snapshots. the main issue for me with hg/git is to remember to pull and then to check-in/push. i dont actually care about commit labels, i just want files to sync across some machines with some history.
h

heartpunk

11/08/2021, 10:07 PM
number of snapshots isn't a really meaningful issue IME, at least for code, and there's easy mitigations that can be added that i've already tested (you WILL have problems if you use this kind of stuff in a media scratch directory however) this could be used like syncthing plausibly, though that is not its most primary goal.
10:09 PM
and the synchronization concerns that syncthing may address are really not a goal for me rn, so you may end up with lost writes because of last write wins sort of stuff
10:09 PM
but that'd prolly only matter if you did fairly simultaneous access across multiple systems, which breaks everything in this space one way or another
10:10 PM
err conflicting writes to be specific
shalabh

shalabh

11/08/2021, 10:11 PM
i see ok. syncthing supposedly identifies conflicting writes. though i've never seen one in my years of using it.
h

heartpunk

11/08/2021, 10:11 PM
so yeah, i'm not presently planning to worry about that kind of correctness concern, because if divergent copies exist, that's just fundamentally fine to me, and requires manual intervention
10:12 PM
this would be entirely resolved if i were ready to commit to a concept like symbolic refs yet, but i'm just not at that stage of the architecture rn so
10:12 PM
i'm worrying about data integrity and io efficiency and query stuff more rn
10:18 PM
yea, ok, i can imagine a mode designed for this fitting in
10:20 PM
at the stage at which trees and symbolic refs or their equivalent are represented, this is definitely doable