So there are Slack-like replacements on ATProto, w...
# administrivia
t
So there are Slack-like replacements on ATProto, which has the benefit (for this community) that everything is public and indexable, and even writable by the author, by any other tool. Was thinking that maybe the Slack feed could be replicated to that
❀️ 6
j
I wouldn't mind experimenting with it as a replacement for Slack, honestly
t
So I think the lowest risk would be to use an existing lexicon https://lexicon.garden/browse/social.colibri that seems to be the most fleshed out approximation to Slack. then try an populate it from Slack webhook. That would only be a one way sync. We could use Colibri app to see what it looks like. Colibri is pretty fresh (but open source), so nice things like a an app and notification do not exist. But it is open source and the data ends up public so even staying on Slack I think the data sync would be useful for a generic sync API. @Mariano Guerra @Kartik Agaram I was trying to find your code for how you sync from FoC to see how you did it, maybe thats an easier route?
πŸ‘€ 1
k
I don't use the API, I'm afraid. Just periodic offline archives. But I believe Mariano does.
m
@Tom Larkworthy latest scripts and dumps are here: https://github.com/marianoguerra/Feeling-of-Computing/
πŸ™ 2
t
That historical data is awesome! We can backfill off that!
I backfilled 7 days into a test community to see what it be like. You are invited! https://colibri.social/invite/ca518b06e5964615
❀️ 2
Seems like we could backfill the whole archives which is cool
m
If you are using the markdown field for the messages the fromData methods in https://github.com/marianoguerra/Feeling-of-Computing/blob/main/conversations/src/components.js parse the json data from the archive and works on the whole archive so it should be complete.
πŸ’‘ 1
t
its cool you can do idempotent inserts with the backfill so change some rendering logic and just rerun to reapply new mapping logic. Now the mentions work properly. Thanks for the pointer's @Mariano Guerra I am slightly disappointed the presentation is more Discord than Slack but as it is public data it doesn't really matter, alternative views could be developed. code is here
🍰 1
So to make this a realtime perma thing we would need: 1. a slack app (or Mariano's creds) forwarding to a webhook. 2. a cloudflare worker + queue + D2 3. an atproto identity to post messages. vibed proposal here. But have a look at the app, and have an explore of the atproto records the bot holds (I am reusing another one I had already). I like that the Colibri app has a debug link that takes you to the atmosphere explorer for most of the concepts. Its transparent with the innards.
k
Proposal seems reasonable πŸ‘πŸ½
t
ok so I can't get a realtime feed without credentials. @Mariano Guerra @Ivan Reese do you have a preference? I think live replicating to ATProto is useful even if we do not want to pursue Colibri just because it unblocks things that need fresh data. If we are not sure it is useful then I could backfill from Mariano's weekly dump. I could reuse Mariano's slack app and creds quickly though. Writing a distinct Slack App is a possibility but it would also need an admin to connect it to all the channels. Given all the data is already replicated and sort of public I think reusing the existing slack app + creds is the simplest thing to do because essentially there is not much of a security risk given we are replicating anyway. Would require the least admin help.
j
Yeah, this proposal looks great! I see we've got hold of Lou on the Colibri side, so there's a maintainer we can share PRs with when it comes to these asks.
Particularly "Per-record author override" to solve the post/reactji attribution UX
πŸ’― 2
i
Let's do live-replicating. I'll DM you some API creds
Also, thanks for taking the initiative to set this up! Warms my lil heart!!
(Also, "Feelingsof" is uncanny valley. Can it be "Feeling of Computing" if it's a name, or
feelingofcomputing
if it's a url / subdomain / username / etc?)
(also
com.feelingof
is fine if you need to use that format, though i kinda hate it lol, but whatever)
(if it helps, we do also own feelingofcomputing.com, and .org and .net)
t
FYI, I am plumbing it in, I deleted the old colibri stuff so I can move it to a better identity going forward
ok the live sync seems to be working now. I deleted what we had an redid it with new setup so its now https://colibri.social/invite/cb27e5ce4f1b4a10 and called FoC. @Mariano Guerra what would be ideal is if you reran your archiver dump so then I could backfill without a gap. So I leave backfilling for now as I think it would look weird.
πŸƒπŸΌ 1
🍰 1
πŸš€ 1
m
@Tom Larkworthy done, how are you handling the attachments? I can give you access (or a dump) of them
t
for attachments under 1MB they are put in blobs on atmosphere. For larger blobs I do not know what to do. I could store them in the service but I think a future ATProto world would never allow >1MB so that seems like we should jsut live with not having large file attachments and insit you upload vids to youtube or something.
πŸ‘πŸΌ 1
πŸ‘ 1
m
for a while I've been thinking on doing some sort of community DHT with https://www.iroh.computer/ or similar, I always seed one node at the foc server but expect others to replicate too
k
I've never gotten into large scale p2p distributed file systems, but I like the idea of a low-cardinality-of-accountable-seeds. Like a forum with a horcrux. Makes gears in my head turn. One other technology I've been playing with lately is the Reticulum protocol, particularly using the NomadNet frontend at the recommendation of @Arcade Wise. https://github.com/markqvist/NomadNet If you install it, add a couple of "network interfaces" (directories like erstwhile Yahoo) from https://directory.rns.recipes I don't yet know how to create a website in this world, only how to browse websites ("nodes")
t
I have backfilled 28 days with overlap, realtime ingestion is on. Some people I could figure out their ATProto identity, some people I could not. So its worth checking the room out now, if you see yourself speaking but your name doesn't point to your profile let me know what your ATProto/Bluesky profile is. As well as filling out Colibri lexicon, I filled out a feelingsofcomputing one called slackRaw which is much closer to a raw dump of slack messages incase we want a different lexicon in the future (mapping to Colibri is slightly destructive) updated wiki docs of what actually got built in the end (PR cc @Ivan Reese).
❀️ 5
🍰 5
i
just wanted to say that i have not forgotten about this, im just waiting for life to slow down a bit before i chew on it. if there's any way to proceed without me, or if there's some way i can unblock this in 5 mins, go for it / lmk. sorry!
t
Its done, our slack feed is first federated to ATProto through our own lexicon in
com.feelingof.bridge.slackRaw
format, and then a copy is mapped to Colibri lexicon so it appears there. Seems to be working, the room is full and updates in realtime, but its slack style which I don't like so much, but the broader point is that the realtime data is out there in an easily digestible format and we could switch to whatever without having to re-plumb Slack. The latest wiki documentation on what was actually built is awaiting your PR review https://github.com/feelingofcomputing/wiki/pull/21
❀️ 2
c
Amazing! Work @Tom Larkworthy
I was talking with the roomy guys from muni.town
But I think I will choose another place.
t
I looked at roomy but the messages were not on atproto at the time. They said they would probably converge toward something like colibri so I went for that with the option of switching
i
When I try to join the room…
t
They moved a bunch of stuff around
πŸ’― 1
🍰 2
I think we should try syncing in the reverse direction next, atproto to slack Similar to the existing slack->atproto, a bot account in Slack posts what is missing from atproto records. Because both directions the message identity switches to a real account to a bot account, we will not replicate bot accounts in either direction and we avoid a self triggering loop 🀞 plan github.com/feelingofcomputing/wiki/pull/25 (does not need to be merged, I will fix it when the code is done). Slack had a webhook to push replication which is quite efficient, in the other direction we will use Jetstream which is a pull mechanism which is a bit less convenient and also ends up sucking in all colibri messages but the traffic is quite manageable presently. Kinda cool in-of-itself that we don't need any Colibri hooks to get this work. sidenote: Colibri changed how it handles emoticons which means our emoticon replication broke so that will be a little side fix while we have the engine open.
🍰 3
πŸ‘† 1
i
oh this would be awesome! thanks for putting in this effort, Tom!
🫑 1
f
Ok I think we are live on the bidirectional sync. I am writing this message from the new Colibri Android app...
πŸ’₯ 1
πŸ’‘ 1
πŸ™ 1
πŸ‘ 1
πŸ‘ 1
🍰 2
O. M. G.
πŸ”₯ 2
i
holy shit
t
ok latest docs for what is actually deployed for the wiki github.com/feelingofcomputing/wiki/pull/25 (plz approve @Ivan Reese)
❀️ 3
i
@Tom Larkworthy merged!
t
Thanks @Kartik Agaram who found some mapping issues, I found a few more after that and have repaired the Colibri replicated messages. The lexicon moved on since first published so, for example, code blocks are a 1st party concept which actually made a few things simpler. I am gonna try to expand the backfill further back in time as I have more confidence in the system.
❀️ 3
🀍 1
πŸ‘ 1
75,867 messages backilled! Nearly all of @Mariano Guerra’s archives The channels were skipped because I did know about them and they seem to be not used so much anymore. Also skipped were all regional channels because it felt intrusive blasting out the local channels on a global platform.
Copy code
#of-end-user-programming (884 messages), #of-graphics (853), #of-music (303), #of-functional-programming (76)
It will not cost much to backfill and live sync those, but do we want to?! LMK Videos are not copied because they are too big for atproto. We could convert them to YouTube on the fly (auto upload to FoC channel)? But do we want to?
πŸ€·β€β™€οΈ 1
c
Would we want to create A time line which shows posts , we could try grouping posts not only by channel but also by - human felt - zeitgeist?
t
We have pages/projects.md and pages/demos.md on the wiki which I feel is under-maintained but important grouping keys and celebratory for the members of this community.
☝🏼 1
c
a wiki can be part of a reflective process, which makes AI generated wikis almost useless, (see the other AI πŸ€– post for details , the heidegger one )
it could be even a community thing : fun 🀩!!! if we take the effort and like every 3 months discuss in digital presence what we think about the things shared an d happened, if we then create a text artefact from thsr it maybe useful for other humans and people could share some fun time together ?
t
Mariano has the weekly newsletter which is well received and appreciated. I think it's very difficult to actually get stuff coordinated with groups so my enthusiasm for long running group projects is muted
head shaking vertically 2
k
Yeah, @curious_reader definitely feel free to try to inspire the rest of us sluggards to collaborate. But if there are no takers I hope you will at least contribute directly to wiki.futureofcoding.org based on what you like seeing here.
βž• 3