Two HUGE milestones this release; proper federation between Manyfold instances, AND it's our 100th feature release! 🎂 🎉
First, let's talk about federation. For a while we've had limited federation over ActivityPub; you could follow Manyfold creators from Fediverse platforms like Mastodon and see updates from them, like when they create a new model. But now, Manyfold instances (that enable federation) can connect together to natively share information. If you follow a Creator, Model, or Collection on another Manyfold instance, that thing will now appear in your instance's listings, and you'll see updates in the main page activity feed! For instance, here's a Creator that's on a different instance; you can see it has all the same data, and shows that it's from a different server.
![Screenshot 2025-02-12 at 09 41 39](https://private-user-images.githubusercontent.com/3565/412359522-275e610b-f281-46ed-80b9-0b132b98bdf5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNTYzMzgsIm5iZiI6MTczOTM1NjAzOCwicGF0aCI6Ii8zNTY1LzQxMjM1OTUyMi0yNzVlNjEwYi1mMjgxLTQ2ZWQtODBiOS0wYjEzMmI5OGJkZjUucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxMiUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTJUMTAyNzE4WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ZGIzNTczOTc4OThjOGIzMzAyNjQ0NWYzMDRmN2FkYmY4ZDlhNmQ4MTRiZDBlYjM3YzIzNzIxZTcwMWNhN2EyZCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.f4n7A7TchiGuIEADkidU-ZhzkJxCGVtz-06er_Yfk_0)
This really is the big step towards our goal of building a decentralised alternative to the hosting sites like Thingiverse; you can now host your own content, and link up easily to content that others are also self hosting. It's all very exciting! There's more to come, plenty more features add on, but this is a massive step forward.
Manyfold has been on quite the journey to this, the 100th feature release; it started just over 4 years ago, in January 2021, as a side project to help @Floppy organise his model folder. Since then it grew organically for a few years, but then in January 2024 got a huge boost when we got funding from NLNet and the EU NGI Zero project, enabling full-time work on it. That's taken it from a side project to a proper tool, with thousands of weekly downloads, over 50 known instances running (and that's just the ones reporting in!), translation into five languages, and an informal network of contributors who write code, translate text, provide peer support, and generally keep us going!
We couldn't be more thankful to everyone who's helped us get this far; we literally couldn't have done it without all of you. From here, we're just going to keep building, powered by a second grant just started from NLNet / NGI Zero, with a v1.0 release "soon", and with lots of great new features in the pipeline!
Thank you all ❤️
What's Changed
✨ New Features ✨
- Deliver creator updates to its followers by @Floppy in #3491
- Show requested but pending follows on button by @Floppy in #3501
- ActivityPub federation for Models and Collections by @Floppy in #3507
- Include model license in ActivityPub representation by @Floppy in #3508
- Follow remote models and collections by @Floppy in #3511
- Show user fedi address on settings page by @Floppy in #3516
- Show remote models and collections in lists by @Floppy in #3538
- Added a simple "following" page by @Floppy in #3542
- Automatically update and create remote federated objects by @Floppy in #3559
- Show server for remote objects in activity feed by @Floppy in #3564
🐛 Bug Fixes 🐛
- Only auto accept follows for local objects by @Floppy in #3500
- Fix collection page bug by @Floppy in #3514
- Various Collection page fixes by @Floppy in #3518
- Don't check remote models for problems by @Floppy in #3565
- Overwrite links in remote object deserialization by @Floppy in #3566
- Only use S3 integrity protection when required by @Floppy in #3572
🛠️ Other Improvements 🛠️
- Refactor ActivityPub rendering code into presenters by @Floppy in #3497
- Rename ActivityPub presenters to serializers by @Floppy in #3498
- Move user serialization into its own class by @Floppy in #3499
- Add serializers for Model and Collection, to be used in future by @Floppy in #3502
- Refactor AP->Creator conversion into a deserializer object by @Floppy in #3503
- Add tests for de/serializers by @Floppy in #3509
- Test and parse model tags in activitypub by @Floppy in #3510
- Change collections to federate as a Group actor by @Floppy in #3515
- Add flag for notes generated for compatibility purposes by @Floppy in #3517
- Roll back AWS SDK by @Floppy in #3524
- Don't show permission options for remote objects by @Floppy in #3541
- Link names to profiles on actor table by @Floppy in #3547
- Create remote objects only when follow is accepted by @Floppy in #3543
- Set a valid user-agent string by @Floppy in #3557
- Add note that remote previews aren't available yet by @Floppy in #3567
Full Changelog: v0.99.1...v0.100.0