Next up, we have James Smith from the Manifold Project.
Hello, it's just, yeah, it's like, I don't envy whoever has to follow the previous
talk that was amazing.
I'm James, and I'm going to talk about a thing that I'm building called Manifold, or many
fold, or nobody knows quite how to pronounce it, just.
What is it?
It is an application I've been building for about four years that is about organising
3D print models.
So I've got a 3D printer, I've got a huge pile of model files sitting in a folder somewhere,
and I don't know what they are.
So I built the thing, the lights, he browse them, preview them, organise them, tidy them up,
rename them, tag them, all that good stuff, troubleshoot them, convert them.
And it renders them in the browser.
These are all, you can subtly tell that there are different angles.
All of those will move in the browser, you can view it live.
So that's cool.
That's the thing I've been building.
It's a bit like having your own thing of us, but without the horrible download for
the second advert banner, which on my home network, the ads block.
So it's just a blank screen, it's just annoying.
We don't want that.
Instead, it's self-hosted container.
It's a Docker container.
It's built in Ruby on Rails.
And you can install it in a bunch of different places, but you just run up a Docker container.
And you can run it in a bunch of different modes.
You can run it as a private single user thing, just for yourself.
Just to look after the files that you have.
But then you can also put it in multi user mode, share things with your friends.
If you want legally allowed to do so.
Of course.
And then it can be federated.
And that's what I'm going to talk a little bit about.
Now, it's about how I'm doing that.
How I've made up how I'm doing that.
And this is like a big feedback session where I want you to tell me whether what
I've done is terrible or completely wrong.
But actually, hearing the talk so far, I think I'm not too far off.
So there's a write up.
There's a description of it on the website.
I'm about to release this.
It'll probably come out next week.
I didn't quite get it done in time for foster.
So the first thing that I need to do is have a few extra properties.
So I've defined a name space, which I realize I've also given an unpronounceable name.
So I'm no kidding at naming.
But it was things that I needed to be able to express in activity public without.
And anyone who's done massive on interoperability knows about two namespace and things like that.
So it just adds a couple of bits.
I'll explain what they are.
We have a bunch of actors.
Much like the other platform to talk about.
There are actors aren't necessarily just people there.
I want to follow a particular content creator.
And that could be a bunch of people.
But there's a profile for that.
I want to follow a particular model.
I don't care about what the rest of what this person's made.
I just want to know if that one changes.
Can you feed back?
No.
I just have a metal neck.
I don't know.
Or I want to subscribe to a collection.
So all those things anything that you would want to follow is
an actor.
The actual login users are also actors.
They don't create them quite the same way.
And because of the well-stated issue that interoperability with masters on requires certain
sorts of actors are ignored.
It would be great if these were if a 3D model was a 3D model.
Object that actors are acting.
But that will be ignored by lots of things.
So we use some of the standard types.
And the standard types of that mastered on the stands.
And the first little bit of extra data that we put in there is this concrete type,
which actually when that activity public message comes to another manifold instance,
it can go, ah, now I know what that is.
It's not just a person.
It's a content creator.
Um, we support a whole bunch of activities.
Uh, on those things.
Models dressed in collections.
You can, you've got bidirectional federation between
uh, manifold instances.
Um, they can, you can follow any of them, etc.
Uh, users, you don't really, you wouldn't really follow a user on a manifold instance.
Yet, I haven't worked out whether that's useful or not.
So it's not what I'm currently doing it.
Um, but the other thing they will see is notes.
Because, um, yeah, sorry.
So this will mean nothing to you.
But that there, if you follow, uh, create it on another manifold server,
it will pop up in your list of creators on your server,
just like a profile would do on, uh, on master.
Uh, and the only way you can tell that is that it's got the address there.
But anyway, live demos are not a thing.
So, um, right.
So all these actors are getting updated.
So creator releases a new model.
They will, but it will send out an activity for, yes, a new model has been created by its person.
So it's a new actor creation.
But that doesn't really work in the micro block world.
So what I'm doing is also sending out a note at the same time
to the same set of followers to say,
which is a better text description of,
hey, look, I just published a new thing.
Literally saying the same thing, but in a note form.
And the other, uh, a little bit of extra metadata is that I'm calling this
for my own purposes a compatibility note,
so that when I do build commenting in,
and we can get replies back, I can just ignore it.
That's one of them.
I think that was the first one that probably worked back in October.
Uh, so that's a Macedon account following a creator on a manful instance.
Um, now all this is, I was saying this is Ruby on Rails.
Uh, and all of the activity pub core of all of that,
there's the manifold code and then the core of it is in this thing called Federals.
Uh, which I didn't start though I've done a bunch of work on.
Uh, as part of this.
Um, and it is a Rails engine for activity pub.
So you can add the gem.
Uh, you can mount the engine.
Say, right, okay, I have Federation here now.
Uh, set, do some flat up.
And then you can map it to the objects that are in your application.
So, uh, this is my use of model in my normal application.
Um, and I can just say, oh, and this is a Federals actor.
And there's a bit of configuration.
Uh, it can react to following Federals handles all of that stuff underneath.
Um, and, uh, you can create activities and so on.
And all of that is sort of handled, uh, lower down.
You can also have data entities that are just objects.
Things that no have to turn themselves into objects.
Uh, and we've also, uh, as part of this produced a add-on gem for, uh, moderation.
Uh, because before I did any activity pub stuff,
I wanted to be able to block it.
I'm a master on admin as well.
I know this and things that I want to block straight away.
So, uh, so we've got to put in there for flag activities to main blocks.
Uh, stuff already.
And all of those, all that gems you can just, if you're building in Riga and Rails,
you can just go pop it in.
And hopefully fairly quickly, you should have,
Rails out, but Fed writes.
And that's my time.
Take care of that.
Thank you.