S3 is one-click to provision a bucket, but good luck actually configuring it if it's not really S3. DigitalOcean, Wasabi, Minio, are all different and would need separate instructions in the install guide for how to configure them. The S3 API itself is an insane overly-complex unmaintainable nightmare, only made better by the various libraries that obfuscate how bad it is.
IPFS looks like it's just one REST endpoint with auth. I think you can just apt-install it and grab a token. But I haven't actually gone through it myself yet, so I might be missing something.
IPFS is more resistant to censorship and resilient, in theory, assuming it will actually resolve your file. S3 is reliable with better scaling capabilities.
I'm going to play with ipfs a bit more and see how much it struggles.
So should I make Ditto upload to an s3 compatible bucket or IPFS? I kind of want one way of doing things for the first release before adding configurable media stuff.
S3 means you need to run Minio or a cloud service. Ipfs means you need to run a local ipfs gateway.
I'm not gonna support local file uploads. Ipfs would be the closest thing.
Whether IPFS is slow or not, I think the CID is a fundamentally good idea.
It's not a gateway yet, I'm just using a CID instead of plain sha256 so it could enable ipfs features later.
Here's what I've been working on the past few days: processing deletions.
https://gitlab.com/soapbox-pub/ditto/-/merge_requests/36
- Add a deleteFilters function to delete events by filter from the database
- Reworked the `tags` database table, renamed `value_1` to `value`, dropped `value_2`, `value_3`, added a foreign key on `event_id`
- Enabled autovacuum on the database.
- Automatically delete events older than 7 days. Fixes #63
- Broadcast deletions from local users to all known relays.
- Process deletion events through the pipeline, delete from our database if authorized.
- Protect against deleted events being resubmitted (not perfect).
- Improved the terminal output for migrations.
- Fix various bugs.
Deleting a deletion would potentially cause deletions to be deleted.
Fun facts about databases:
SQLite's VACUUM is like Postgres' VACUUM FULL.
SQLite's AUTOVACUUM is like Postgres' VACUUM.
Postgres' autovacuum has no SQLite equivalent.
This is what happens you do decentralized coding.
Hey fellas, name one thing
Does Mastodon do it in the background as it runs? Ditto is designed around this idea, it's not even a toggle.
It's better if you run a development copy of ditto, the one on ditto.pub is unusable. Latest dev branch is almost usable.
Prepare to cry. https://youtu.be/494Wr7On6bA?si=ay5mV_7KgArhOCrc
I looked back at the blog post for Revolver. The thing it describes is Nostr. And making it work with the Fediverse is exactly what Ditto is doing.
The insecure manbaby Pete @ FSE, instead of building his failed Revolver backend, is apparently "trolling" Soapbox servers by wrapping all FSE posts in the .inline-quote compatibility class so the message won't be visible on Soapbox. I assumed he had just messed up his server due to incompetence, but apparently it was done on purpose out of jealousy and spite. Major :lose: and self-own.
nostr:note18w588v0wqs4v7244x2d4c4u2z4fpgzvks07dpnnl07s0t2ufl9jsa5rmkg
wha ha ha! 🦇

All it takes is confidence and a little Pikachu cologne.
Men simply don't know how to attract the ladies anymore.
