peer-base / peer-pad

📝 Online editor providing collaborative editing in really real-time using CRDTs and IPFS.
https://peerpad.net
MIT License
678 stars 57 forks source link

Update peerpad.net #288

Open parkan opened 5 years ago

parkan commented 5 years ago

We've done a fair amount of work on peerpad master, and dev.peerpad.net has served us (mostly) well. We also haven't seen much evidence that the explanatory landing page etc on the main site bring a lot of value, given our developer focus.

Let's update peerpad.net to the current peer-pad version so visitors are met with a more stable, better-performing version.

This may be blocked until #287 is in, depending on Jenkins health

parkan commented 5 years ago

(once this is done, we can also periodically update prod -- probably a good topic for the bi-weekly meeting)

jimpick commented 5 years ago

I'm all for this.

The biggest blocker is ensuring that the pinner properly persists the data with a reasonable guarantee. Right now, for dev.peerpad.net, we are deploying the pinner to Heroku, which has an ephemeral disk, so the pinned data is likely lost every deploy.

I do like the ephemeral disk approach, as it is really flexible when it's time to move things around or re-provision ... if we made the pinner so it would work with the data persisted elsewhere (a database, S3, or IPFS cluster), that's really nice for devops - no need for backups, etc. I did an experiment a few months ago that did something like that with the persister code that Dirk built.

I recall that @victorb was talking about using S3 from the pinner, which would work as well ... but I'm not sure what came of that.

The "no code" solution would be to deploy the pinner to a dedicated VM with a persistent disk, but then somebody has to manage the storage (backups, etc.).

parkan commented 5 years ago

I'm currently waiting to get a key for the community IPFS cluster, I think that direction is probably the most promising

pgte commented 5 years ago

@parkan Yes, I think that's the best approach for persistence: to delegate to a pinner cluster. There's still one problem: where can the pinner store the HEAD of the collaboration in non-ephemeral memory? IPNS would be a good candidate, once we get it usable on js-ipfs...

parkan commented 5 years ago

looks like 0.34.x has IPNS: https://github.com/ipfs/js-ipfs/releases/tag/v0.34.0