They are couple of people cut them some slack, but yes you can implement whatever you want, but when something seems like a core logic you want to both reuse across platforms and more importantly test with ease, then you move it to the core.
I did play with it but not enough to stand by it yet, whenever I tried it it didn't seem complex but still clunky, however they don't do anything I wouldn't do myself except with great effort so I can't judge them for not ironing out the interface yet, it is not an easy task.
I'm copying a pattern used by Facebook Messenger where all UI state is stored in SQLite and the UI is a thin, pure function render:
- https://engineering.fb.com/data-infrastructure/messenger/
- https://www.droidcon.com/2019/10/25/the-light-way-2/
In the demo I can kill the app and re-open it in exactly the same place because the router state is stored in SQLite.
Are you aware of Crux? It is a Rust based elm architecture framework, wat you are doing seems similar, so maybe that framework can save you some time.
Pubky app is a social media app / search engine, more concerned with aggregation of data and tagging etc.
I worked on Pubky core, which is the part where you store your data on a hosting provider, and that part is very similar to what I am saying, but it doesn't have private data yet, and it doesn't have a browser that manages keys and permissions and sandbox apps etc.
So yes everything I am talking about is a continuation of what I did on Pubky core, but I left the team. So I am not calling what I am talking about Pubky core because I can't influence Pubky core to do or prioritise any of what I am talking about.
There is already plenty of work done while I was working at Synonym, under the name Pubky, but going forward, if I kept pursuing this, I intend to work at this org https://github.com/mlkut ... if things went well and I felt I can seriously do work there, I might create a newsletter or something
Another thing about Peergos is that it puts so much effort into being p2p friendly with IPFS baggage and complexity that is only needed for people to be able to host random parts of your data in a p2p... I personally think all of that baggage is not helpful... no one uses peergos in a p2p manner nor they ever will.
So the question is how much simpler can we get if we remove all of that Protocol Labs stuff.
Solid is designed by alot of people at once, and as expected it is very underpowered, barely any better than WebDav, it has no sovereign identity and data is not encrypted at use, meaning unless you run your own Pod, your host can see everything.
Peergos is great and honestly so very close to the optimal, but it also didn't start with sovereign identity, relying on a centralised PKI, although they plan to mend that, and I don't like that it runs in web browsers for no reason really, and the only way to build apps for it is to build web apps.
Finally Peergos currently has too much latency for my liking and I suspect I will never know if this is a fundamental price of excessive privacy, or an implemtation detail unless I implement some parts of it in Rust and see how fast i can get it to work.
The Internet is way more free than we like to complain about.
As for github, I don't see a problem with that, global discovery and indexing is an impossible problem to solve in a decentralised way, and I am fine with github winning there.
Anyone who needs a credible exit from Github can have it, and with interoperable identity the friction of jumping into someone's gitlab and contributing would be super simple, so you only lose discoverability and exposure on github main page timeline thing, but no one owes you that.
Urbit and every similar thing is an OS in the same way that browsers are OSs, more like virtual machines or sandboxes or whatever you want to call them, they are specifc ways to isolate programs while still allowing them to mutate a state somewhere.
Arguably Google Drive and the collaborative apps built on them are an operating system.
If you keep the definition tight and conventional; a layer between software and hardware, then that is not what Urbit or anyone similar is trying to do.
Although I know someone actually working on wasm based honest to God OS, but that is not what I am interested in.
I am interested in stuff like Peergos.
My point is, this emergent system will exist regardless, either inside a walled garden like Google or Proton Drive, or hopefully more standardised, and the reason is simple, the web was supposed to be like that and the demand still is here, and if the web doesn't evolve to satisfy that, the cloud providers will remain the AOL of this era.
Yes it was over complicated, at its core Urbit had a good idea though; it is too complex for people to run their own servers because securing Linux is hard, and it is not safe to install applications from untrusted sources, both of which forces centralisation.
So they wanted to make an operating system that is secure and user friendly... but they really over complicated things.
Peergos is much closer to what should have been done.
Protonmail ecosystem but open and sovereign.
What would be the upside of that? The identity? Because Nostr isn't very good at that.
Typical pattern is PWA first, then add native as your userbase and commercials allow the added overhead. Historical examples include Tinder, Uber, Pinterest, Flipcard, Amazon, Starbucks and many more. You can find more examples here:
https://laffaz.com/progressive-web-app-history-examples/
Now it's gotta be said as well that Mobile Safari has become what Internet Explorer used to be; the lowest common denominator that makes it VERY hard to make PWAs almost as polished as native apps.
On purpose. Browsers are just awful for almost all things, on purpose.
And I suspect that building a native app can be done easier and faster than a web app, if they target sideloading instead of app stores approval process.
But I need to build few apps to make that argument with confidence.
What example of PWA that works on IOS and has traction/loved by users, and isn't basically a website pretending to be an app?
Day 0/
Work:
- Opened a PR to update Pkarr to v3 in Iroh and fix wasm issues they were facing because `rand 0.9` https://github.com/n0-computer/iroh/pull/3188
- This included removing `rand` altogether from Pkarr and use `getrandom` directly.
Thoughts:
- I wish I can write this in Obsidian-like app or Obsidian itself and have it both published AND stored long term at the same time. I want to build this.
Day 1/
Work:
- Optimised the random shuffle of endpoints in Pkarr, nice trick lifted from `rand` to avoid making more syscalls than needed.
- Opened a PR for `Reqwest` to detect `error.is_timeout()` in wasm. This should help in retries in browsers after a connection to an http relay timesout.
Thoughts:
- I don't have any more immediate tasks for tomorrow, I think tomorrow I will just setup a boilerplate for the main app I plan to build, and maybe prepare a todo list.
Day 0/
Work:
- Opened a PR to update Pkarr to v3 in Iroh and fix wasm issues they were facing because `rand 0.9` https://github.com/n0-computer/iroh/pull/3188
- This included removing `rand` altogether from Pkarr and use `getrandom` directly.
Thoughts:
- I wish I can write this in Obsidian-like app or Obsidian itself and have it both published AND stored long term at the same time. I want to build this.
I am not a fan of Holepunch stack and not interested in building using JS dependencies. I also think Iroh is a better tech.
Matrix is better than Xmpp because it does encryption well, it does VoIP well and it does group chat well.
My only two issues with Matrix is 1. no sovereign identity and 2. no general purpose storage .. it could have been like Google Drive. I think that much became clear to proton mail for example.
I never cared for public social media and prefer to focus on things like Signal or Matrix but with keys for identities. As well as general purpose private storage and censorship resistant website.
All usecases that are within reach and their success doesn't depend on popularity much, they can have utility on their own.
Most likely my first focus will be on one of these things and all the UX for them.