thanks. i'll aim to do that. i'll see if i can figure out who to reach out to from github and etc to ask.
xoron
feel free to reach out. im reluctant to waste your time on reading through all that draft. its fairly unique and more going against the grain... not typically a good sign.
my project is far from finished including all the spec and docs.
That's right. Git as an offline cache. When you read a peers message, you can also update you own git repo to say you read it, and so when the peer comes online they can update their side to delete the messages (keeping the size small)... Going further against the grain, the app doesn't care about the history of messages deleted, so I expect to add things for purging history.
I considered the Blockchain, but i think the git approach is better. It's hard to describe what I'm imagining. I'd like to put together a demo when I get time.
I have a full-ish description of the protocol.
https://positive-intentions.com/docs/technical/whitepaper/complete-protocol-spec
Instead of reading that, if you really want to know more, I would suggest you ask me for clarity. (Nothing about this git approach is mentioned there.)
In my app I'm aiming for minimal steps to get started. The frontend is a pwa which works out the box as a webapp.
There is a focus on local-first storage. When connected over webrtc, no backend storage is needed.
This approach with git would be optional. Users have frequently asked about the ability to send messages offline (a completely normal expectation for messaging app). It seemed like a hard limit until this idea with git. My app works without this feature, but with nuanced tradeoffs.
If I host a git-sever myself, but that would be centralising my project.
In any case it wouldn't be on my account. It would be great for users to self-host. Things like GitHub would only make it easier to get started to test things out.
Why would they ban my account? That would be unsettling. I'm a developer. The code itself is fairly basic git stuff.
My project is hardly popular, but if it gets there, I'm sure it would impact githubs performance. Would the concern be that my app ddos GitHub? I can explicitly prevent remotes like GitHub if necessary.
I'm happy to advise people to self-host a git server. That would be ideal. The ability to do it on GitHub or codeberg would only make it easier to get started. I can put logic there to prevent using a remote with from GitHub if necessary.
In any case, it wouldn't be on my git account.
This is all ultimately for my project which is a fairly unique approach to secure messaging. I'm trying things out.
i understand how it must sound but ive thought about it for a while, and it seems ideal for my particular architecture.
github isnt decentralized, but git can have multiple remotes for redundency. you could use multiple providers including selfhosted options.
that "can" is all i need to know/confirm. im not using git in a conventional way at all.
it'll be unfortunate if github pulls the plug on my app. a key detail about git is that its decentralised. users can use different providers like gitlab (many have a free offering). git itself can have multiple remotes for redundency.
in my project there is a focus on client-side storage. i hope it doesnt ever get to 10GB. as messages are published/read, the git DB is cleared as appropriate. i dont need the git history so i'll do what is needed to reduce the data consumed. i dont expect it to get to that 10GB capacity, that isnt its purpose and thats a bridge i dont exprect to cross any time soon.
your absolute right about there being alternative ways to do this. i specifically want some thing a user can manage. my app right now doesnt have offline-capabilities and this is an approach to introducing that capability. using a http server would be centralizing an otherwise decentralised architecture.
i have given it some thought and i think this is the only way it makes sense for me to introduce offline messaging without centralizing.
the project is pretty complicated and its difficult to describe how it would work without an exampler so id like to share the initial idea here before i try things out to demo.
How to install the library?
it isnt published to npm or anything else. there are a lot of details in the project that i dont think are refined enough to publish.
Readme says Zero Dependencies, but also says: Built on top of Lit.
some context on the approach: i originally wanted to create this as vanilla webcomponents. it turned out to be more difficult than i expected... in particular handling the rendering. so i used the render function from lit-html. instead of importing the render function from lit-html (a common practice), i decided to "pluck out" the render function and add it into my repo( because i only needed the render function)... and that way i can avoid lit as a dependency in the typical sense (in package.json). the render function is straight-up copied from lit and so its important to mention in the readme that its used (credit where due). i did it that way because my intention is still to work towards creating my own render function... its only going to take longer than i anticipated.
there is no "keep up with patches", this is far from finished and not stable enough for me to confidently advise anyone else to use. its open source, but not something i advise people actively use.
existing real-world apps
im integrating details like encryption-at-rest and bottom-up state-management into other projects like https://enkrypted.chat/ ... that project can be a whole separate conversation. its largely React. that is the project i would like to use dim to replace react. the project there is pretty complicated and i wont be able to replace react there any time soon.
SSR
my apps dont use SSR. there is emphesis in my project for them to use client-side functionality. i have thought about SSR, but its way at the bottom of my todo list.
Thats cool! I haven't seen that before.
My approach is because I specifically wanted the react DX... This would then make it easier to refactor my existing projects.
With AI, "easier" is a relative term. I wanted something that remains intuitive to work with.

Ideally I can advise people to self-host. I'm hoping to make something generic so it it can work with any git backend lit gitlab, codeberg, etc.