Jonathan: Hey folks, this week David joins me and we talk with James Smith about Manifold, which is the host your own repository for 3D printing. It's just recently been wired up to talk with the rest of the Fediverse and it's got a lot of really neat features going on you don't want to miss it, so stay tuned.
This is Floss Weekly episode 806, recorded October 22nd. Manifold, the dopamine of open source.
It's time for Floss Weekly. That's the show about free Libre and open source hardware, hardware, software, software today, software about hardware today. I'm your host, Jonathan Bennett, the oftentimes tongue tied, and I've got a co host with me, of course. I've got Mr. David Ruggles. Welcome, sir. And we're, we're talking today about, well, about Activity Pub once again, but not Mastodon, not directly Mastodon this week.
Talking about Activity Pub and 3D printing. David, I, I know, let's see, you're on Mastodon already? Yes. But not, you don't have a 3D printer yet?
David: No, I do not.
Jonathan: Okay. But
David: it's something I'm interested in, it's just one of those things that it's down on the priority list and there's never enough time.
Jonathan: We are going to do our best, I think, to talk you into getting on the 3D print bandwagon today.
For this, I'm sorry, and you're welcome. Um, let's, let's go ahead and bring our guest on as well. It's Mr. James Smith, who is part of the Minifold project, which is all about curating and storing 3D printer models, and then sharing some of that metadata on, on Mastodon, on ActivityPub. It's it maps somewhere in there.
It's something like that. James, welcome to the show.
James: Hello. Thank you very much for having me.
Jonathan: It's great to have you here. Yeah. I was, I was saying before the show got started that I was, I was excited about this because I like Macedon. I like activity pub just like on, on its own. The, the idea of it, I think is really great.
And then I am also something of a 3d printing nerd. And you put the two together and it's, it's just, it's just great. I recently picked up, and we're going to try not to make this all about 3D printing, we're going to talk about the technology too, but I recently picked up a a Bamboo Labs Mini, and it lets me do some really fun stuff like this.
You know, I got it with the multi material, and so, you know, you can do a single print that's got a couple of colors in it, and so I've got a, it's actually a Meshtastic radio I printed out a case for, and I've just been going nuts with stuff like that. Because it's such a huge upgrade over the old printer that I had.
And I was, I was telling, I was telling James before the show I, one of the other things I do is I print out some miniatures for tabletop gaming. And I purchased a I purchased a miniature from HeroForge back several years ago. And I, I printed it on my, as has been called the, my first printer. The, the very cheap model that I started with, and then I forgot about it.
And then I got the new bamboo and it's, Oh, I need to go back and try to print that model out again. Oh, where is it? That was like, Two desktops ago. And so I have on the other side of my desk, right over there on the floor, my old, huge desktop is out and running to be able to pull model files and other files off of it now.
And I was telling James before the show, it's like. Why hasn't somebody come up with a repository you host your own yourself that you can put all your models into And that's what many fold is isn't it?
James: That's it. That's it. I mean you've you've described the journey that That made it happen. I think really which is that I've got too many models lying around.
I don't know where any of them are or what they are so I need some way of organizing them And that that became A little side project and that grew into Manifold.
Jonathan: No, so it is, it is Manifold, not Minifold.
James: It's, it's, it's an interesting one. It's kind of between the two because it's, the name comes from like, Manifold being, you know a property of a 3D If it's got no holes and things like that, it's what's known as manifold.
And it's many because there's lots of instances and things like that. So I, I kind of sort of. Drive straight down the middle between the two, but I think, as I said earlier, it's I, I use it written down a lot more than I say it. So I, I don't, whatever. It's fine. There, there,
Jonathan: there is a long tradition of open source projects having names that are very easy to write out and sort of difficult to pronounce with various takes on how to pronounce them.
James: I think of it as a, it's a wide, it's a wide cluster of how to pronounce it. It's fine.
Jonathan: And, and, and manifold has a tie in with activity pub. Is it activity pub or Macedon in particular?
James: No, it's activity pub. So this, this is really, really new. So manifold's been building for three years or so. I've been building it.
Like I say, initially as a side project and and then managed to get some some open source funding for it. But one of the things that I got a funding for was to add in the activity pub integration so that not only can you have your own sort of collection and and organize it and things like that, but also you can connect it up to others.
So yeah, it's pretty new. We properly, properly joined the Fediverse, I suppose, couple of weeks ago. Which is, which is really cool.
Jonathan: Oh, wow. It's that is very new then. So this was not, this was not an original feature. Okay. Okay. So
James: no, no, no, it was always something I thought like, Oh, it'd be cool if I could make it do that, but yeah, it's, it's taken a while to get here.
But but yeah, it does it does do it now. Yeah. So what is the, what does the
Jonathan: integration look like? It's like, what, what what gets posted out to the Fediverse? Is it like, I printed this, I printed this and here's a picture of it. You know, what, what does that look like?
James: So at the minute. So we're taking a very sort of agile approach to to getting features out at the moment.
We've got the sort of the first things that will that will happen in terms of ActivityPub is that if a creator adds a new model, That will get posted as a as a note across on things like Mastodon and so on. So you can subscribe to creators on public manifold instances. You can subscribe to them from Mastodon or other, any other Fediverse software, and you'll get the notes when they release things.
There's a lot more to be added in there. One of the things that the the instances will be able to do is actually directly sort of follow both creators, but individual models and updates collections, things like that to to follow those on other services more directly. So it's not just like, oh yes in my Macedon feed I saw a nice little post.
It's actually like a link. You know, it's like a single archive almost, so that's what we're building towards.
Jonathan: Yeah. Is all of this opt in or are we sort of putting models out there? It's all okay.
James: Oh, no, no. Very opt in. Okay. The everything above Running it as a single user on a private network is, is opt in and controlled by, by various feature flags and things.
It was originally built as a private archive. So I built it as a, a thing to literally just post on a Raspberry Pi in the corner of the room there and be able to catalog a directory full of files in in my browser. But then we've added in multi user capability Lots of other, lots of lots of other bits and pieces.
The, the federation and, and all these things are all optional features. So no, it's, and it will only happen for public content as well. So we've got very fine grained Google doc style permissions on things. So you can say actually, yes, I want to make this item, this creator, this item public. So if you were to look at the, uh, my own.
Manifold instance, which is publicly available on the internet. You can see my stuff that I've published as if it was thingiverse or one of the other model hosting sites, but you can't see my private archive, which is also on there.
Jonathan: Yeah, I was that that was a question that I had. I was going to ask because not every license for STLs.
Lend itself to sharing publicly like that.
James: No, absolutely. I've, like I say, I'm using it to manage my my models that I've published as Creative Commons and things like that. But also it's, it's stuff that I've bought from creators on Patreon and things like that which are, yeah, which are not for sharing, so.
Yeah, handles both of those situations.
Jonathan: Yeah, now is it Is this simply for STLs or are there other file types? Can we, can we load G code in there? Can you do object files?
James: Yeah, it will. Yeah. So a whole load of of model files are supported STL OBJ, lots of sort of older formats 3MF which is finally a decent format for these things.
And a lot of others, but also images last couple of weeks ago, we added a PDF and text files and video, even because some models come with assembly instructions and you want to have those there alongside it. So but yeah, this yeah, all sorts of things. G code, sCAD, FreeCAD. All sorts of stuff.
Jonathan: Now, I've, I've got to ask, this is something that you see some of the other sites will do does, does Minifold render? Like, if you give it an STL, will it give you a preview of what it looks like?
James: Yeah, so the primary, the primary, the thing I did first, where it started was, I want to point, and this is why I did it in the browser, really, it sort of drove the whole thing, I want to point, A server at that folder.
And I want to see the models that are in it and render them. So it uses three JS. If you, if you go to look at a model it, you get a list of all of the. individual files that are there, it renders them all, you can play with them, zoom around, find exactly which one you want, then grab that file to go and take off to printing, which for, for things with lots and lots of parts in is, is very useful.
Jonathan: In just a second here I'm going to give it to David and I'm going to let him ask the questions that I'm not thinking to ask because I am already a 3D printer nerd. First though, I've gotta, I've gotta This is, this is crazy. And you're going to really, really impress me if you answer yes. Is it also a slicer?
Does it slice as well as dice?
James: No. No, sadly not. No, I mean, the slicer is a massive bit of software. And there's some really good ones out there. So that would be reinventing the wheel. People have asked. There is work that people have done in browser based slicers. I look at that as the sort of thing where it'd be really nice to integrate with some of those things.
So it'd be really nice to be able to have things automatically open up in your slicer of choice. Or to be able, if you do have G code in it, to be able to automatically send that over to OctoPrint or something like that. People have asked about things like the The thingiverse customizer where you could actually do some of the editing of models The scope I think for sort of maybe plugins and things that do that.
Yeah, I I tend to be not a fan of things that grow to encompass every possible feature. It's But if I can make plugins work for stuff then Then that would be that would be interesting
Jonathan: I could, I could even see something like editing of OpenSCAD scripts.
James: Yeah, that's exactly, yeah. Exactly what people were suggesting with the customizer approach.
Jonathan: Yeah, no, that would, that would really be cool. You could also imagine a flow where you've got your, your models saved, and then you open one of them. It moves it to your computer, opens it in, Your slicer, your preferred slicer, Cura or whatever, you render it, you slice it, and then it uploads it back to Minifold.
And then from there, you've got a button to press that'll kick it over to your printer. Like, you can imagine this, this workflow that would be really, really cool. But,
James: it's, it's, I, I've recently switched over to OrcaSlicer, and one of the immediate things that, I loved about it was that when you hit the print button and it sends the file to your printer, it's got a, it's got a tab in the UI for the web interface.
If you're running OctoPrint or if I am, I'm running Mainsail,
The Clipper UI online. So right there in the slicer, it's taken me to The web view of my printer, which is amazing. It's, it's integrated that workflow. So now actually what I want is like, what about the first tab there that actually is pulling in a manifold instance or something like that?
So. Yeah, there's lots of possibilities, I think.
Jonathan: Yeah, exciting, exciting ideas for the future.
James: Too many ideas. That is usually the problem. Yes, that is
Jonathan: usually the problem with open source. David, you want to jump in and ask the, ask some questions that I'm just glossing over?
David: Sure, I can ask the dumb questions, or the any man questions.
So, I've got CAD experience, it's mostly 2D stuff. And, I don't have a 3D printer. It's something that I've looked at many times, and it's just down on my priority list. But, so, Some of the terminology and stuff, I'm familiar with some of it, I'm not. First question I have, and maybe this is for both of you, but you said slicer.
I'm assuming that is something that takes a 3D object and creates like, parts of it so that you can print it out where you might not be able to print the entire 3D object because of its complicatedness, so, so you can basically print parts of it and assemble it after the fact. Is that what a slicer is?
James: Nearly. Nearly. The slicer is actually, so all, all 3D printers, I think all of them at the moment anyway work in layers. So if you've got a a filament printer, you've got a, an extruder and it's, it's, it's drawing a path around like, like there's a lot of 2d CAD stuff like laser cutter or anything like that.
In fact, the the language I think is the same as is used for for things like laser cutters. So it's generating this tool path. And if you've if you've got a resin printer, which is often doing like a it works. whereby you have a screen which is curing some UV resin, and you do that layer by layer and it slowly sort of builds up the model.
And the slicer is what turns that 3D model into a series of Basically,
David: okay. So does your slicer maybe resolution or thickness of each slice? Is that dependent on your printer functionality?
James: Yeah. Yeah, that's right. And different printers will go to different different resolutions. And to be honest, the amount of time that you want to spend as well.
It's I can go down to 0. 04 millimeter. That's a very slow print though. It's a very slow print, yeah. I don't do circle
David: back to what you were talking about before about integrating that slicer functionality are slicers something that is printer dependent or is pretty much any slicer able to work with any printer?
James: The good question. The two, I think, I think on a consumer level, there's two big types of printer. You've got the filament type known as FDM fused deposition model. Sorry. My daughter's knocking on the window. That's
Jonathan: fine. Bye.
James: It's better than a barging through the door, which is what I thought she was going to do. Yeah, you've got the the FDM printers and then you've got the resin and they work in two different ways. One is extruding this big wiggly line of plastic and one is building it up almost like a, you know, like a flip book.
Right. So I think in, in, Until fairly recently, you'd probably have a different bit of software for both. There are now some that are combining those two into one bit of software. But there's lots of different Oh, and all the printers will, will have like, Oh yeah, here's the slicer that we recommend and, and things like that.
There's lots of them out there. There are about Five different forks and minor variants of one, one in particular, which is just confusing to me, but it's but yeah, choosing one that, that works well that you like the UI of things like that. They, but they're all The resin printers are a bit different, but all the filament printers tend to work on on G code, which is this language for, like I said, originally for CNC stuff.
So it's that's a, that's a standard. So they're all creating that kind of kind of thing. So they're pretty cross compatible.
David: Okay, so it does seem like there may be the possibility of somebody developing a plugin at some point that would have that slicer functionality. It's possible, yeah.
James: I think Octoprint had one.
I don't know, I've never actually tried it, but Octoprint did have one, I think at one point. Whether it's still there, I don't know. So, it's been done.
David: So we could go a lot of different directions with this. I read through your bio and the website and you've got just an interesting history. So next time we have a round table and we're missing a guest, I recommend that we see if he's available and we just go into some of these other things.
Come
James: and talk about anything, yeah. Yeah, I've done, I've done, you know what we said about too many ideas, right? That's, yeah. That's, that's me. So yeah, I've done too many different things over the years.
David: You combine the creativeness with the open source and the possibilities are endless. And then you get somebody with the mind for it and you want to try every one of those endless possibilities.
James: Yeah, the difficulty is not starting projects, it's getting them, yeah, remotely finished. I mean, that's been really nice about this one is that it's I have, I'm not going to say I've built a community around it because I don't really think I did anything, but there's a community has appeared. There was one day back in May, I think that someone popped up in the support channel that we have on matrix and somebody else answered the question.
And I was like, Oh my God, that's when you know,
Jonathan: you've made it.
James: Oh, how did that happen? This, this has never happened on any project I've ever done before. So Having, having community to, to keep you engaged and actually get a bit of the dopamine hit from delivering things is really nice. Most of what I do has failed over the years.
So
David: it's, it's not failure. It's it's learning what doesn't necessarily work in the community. Absolutely. Oh, so how large is your community now? Do you have any feel for that?
James: Do you know, I, that's, that's a really good question. I'm in a way, I'm really proud to say, I don't know because knowing too much about them is, is kind of, you know, a bit of an antithesis of the like self hosting kind of control your own information world.
So I'm taking that as a strength. No, but I mean, there's, there's lots of a few, a few sort of proxy measures, I suppose. I mean, that's about. I don't know, 60 people in the support chat. Normally we've got a few hundred followers now on in, in the Fediverse. One of the things I don't know is how many there are, how many instances there are.
No idea. I I've made a I built an anonymous tracking thing so that people could report. How that their thing is running and how many of them there are first of all, it's really difficult to get people to click a button that is completely optional and, and not shoved in their face. And secondly, I made it so privacy enhancing or privacy preserving that actually, whenever I change the code, it forgets everything.
And that just starts from zero again. So it's very much a proxy. The, the. One interesting question, which I don't know if anybody listening knows, if there's any way I can work out from the Docker download stats, the Docker pull numbers, what that actually means. Is it, you know, if I've got like 50 polls, is that going to be one machine pulling it every, you know, 10 minutes?
Cause somebody has got an auto update on or is it 50? I don't know, but I do know that we get Docker pulls within moments of each release. And, you know, we'll have a couple of thousand over a week. So, but I don't know what that means, but it's, it's going up and that's a good thing. So
Jonathan: yeah. I'm pretty sure it's accurate.
Docker pulls are actual downloads, not just checks for version.
James: Yeah,
Jonathan: that seems right. David.
David: Yeah, I've done some, I kind of don't want to assume that and it only pulls it in when it's built. So, I mean, you might have some script that's checking automatically for updates and then pulling it down, but it's still going to be a new download.
James: Yeah, I, it's kind of, I don't, I'm not sure whether I trust GitHub's counting because it's on the GitHub container registry. Do I trust that their number is actually pulls or that it is? People have just asked what the latest version is. I don't know. So if anyone knows that, let me know. I'd love to know.
But no, we've got enough community going on that that it's keeping me going and it's, it's building momentum and we get contributions, code contributions, lots of feature requests. People report bugs really quickly, which is great. That's actually a good
David: sign of it really is right there.
James: Yeah.
Absolutely. Yeah. Yeah, there was one I, I accidentally pushed in the the previous version. And I think within about two minutes, somebody had said, Oh, on this, you know, on the settings page over here, when you go and change something, it crashes. Well, I haven't changed anything in the settings page. So you're just using this.
You're not trying stuff out. Wow. So yeah, it's great. And that, that meant that I could fix it straight away and, and get a release out in the half an hour. Yeah. That's awesome. I'm a,
David: I'm a web developer, so I definitely interested in that side of things. And I'm sure I'll have more questions as we go along.
But you mentioned that You've done audits against the web sustainability guidelines. Yeah. So what does that look like for you? What, what,
Jonathan: what is the web sustainability guidelines first? Yeah. I only dabble at doing web development and I'm not sure what that is.
James: I, I think most people are in the same boat as you.
So You've heard of things like the Web Content Accessibility Guidelines,
WCAG,
and things like that, which is all these good things that we should be doing to make sure sites are accessible and so on. The idea of the Web Sustainability Guidelines, it's now a there is a W3C community group that's put these together.
I think some, some people I used to work with are involved in it. I, I used to be more involved in the sort of sustainability climate side of things. So it's always been like an interest. I used to run a meetup in London around, uh, using the web for sustainability stuff. So but what they've come up with is actually a, a kind of a draft spec of, okay, here's, here's how you.
You know, these are the, these are the guidelines for, for building sustainable science. It's yeah, just, yeah, if you look it up, you'll you'll find the thing, but it's. It's still in draft. It's very early days. It's not that a lot of people are using it, but it's something that I was interested in.
I've been interested in for a long time, like say, so I was like, well, when I had the opportunity to spend some time on it as part of this open source funding, I, I said, right, we need to do an accessibility audit. We need to do a security audit and I want to do a sustainability audit as well. And so I did, there isn't a.
process as such. So I actually sort of rolled my own DIY assessment type process, very much just like a red, amber, green type thing, going through each item on the list and going, yeah, that's, that's okay. And this one, Oh no, I hadn't thought about that, that kind of thing. And then hopefully do it again, maybe in the new year, see how things have moved on, but it's been really useful.
Just in terms of even, even that sort of very rough approach was really useful in into pointing at pointing out where, where the inefficiencies were, where the, you know, what was going to be more impactful about this application. So yeah, it's, it's really good. And obviously one huge thing with this is that It's 3d models and they can be really big and that's by far the probably the biggest impact of the thing.
So you know, that's that's on my sustainability, Roadmap now but it's nice to treat that as a as a sort of primary thing I think alongside accessibility and and security and and things like that to to have it in mind as As a goal so actually in the release nodes now we have like a special section which is Sustainability and performance because those two go hand in hand.
So when those get Improved it it points it out to people. So
Jonathan: So this basically boils down to not wasting cpu cycles I mean put it very very broad strokes at its
James: most at its broadest stroke level. Yeah, network transmission all that kind of thing But it goes into a lot of other stuff as well.
There's a huge overlap with accessibility. Build things that people are able to use and they'll be able to use them more efficiently. There's a big section on product design and things like that, you know, build what people actually want. And then you're not building things that are pointlessly using using power where they don't need to.
No no major current trends mentioned.
That
David: was a very suspicious cough.
James: Yeah. Yeah. I don't know. You'd need something, I don't know, something very clever to analyze what that was.
David: So I
James: used to work in AI and this is, this whole thing is just hilarious to me.
Jonathan: Don't get me started.
David: We'll put that, we'll include that in the red table. That's not for today.
Yeah. So, this, not to go too far down into sustainability, but I assume you can also see it even as a UI UX issue where Absolutely. Think about a web page. If they're having to click through five screens to do one thing, that's five different hits. That's additional. Okay.
James: Yep. And it goes, it's, it goes to that sort of level of pointing out all those all those guidelines of, you know, Around those things and those things that I wouldn't have, you know, I'm a Very much a developer technologist.
So, you know my thinking was like, oh, yeah, where are my data? Where is my server running? Is it, you know powered by renewable energy, etc And that's like one one point is that you know, there's so much else And it goes into all these other things. That really take it and you know a whole team Developing, developing a product can, everyone can do something.
It's really good. Really interesting.
Jonathan: I love the fact that when they made these guidelines, they included a lot of just good hygiene sort of stuff like that in there. So it's useful, you know, it's useful for, for everybody, developers. That, you know, may not have a whole lot of concern about the actual sustainability bit, but it's still useful guidelines.
I think that's really neat.
James: Yeah, absolutely. It's a bit like the universal design thing for accessibility, right? You know, good accessible websites help everybody. Not just, you know, people who need it all the time. It's just good design. So,
Jonathan: yeah. All right, I want to ask about funding because you've, you've talked a little bit about getting some money for things.
And, you know, for some open source projects, that's like the holy grail to be able to get paid for stuff. And it's, it's not quite the panacea that people might think it is, but it is kind of nice to be able to get paid for doing open source work. I believe I also saw that you are a fellow open collective member, which that is cool.
That's where, that's where mish tastics. Open source budget is at and the cool thing about open collective is it's like it's all right there. It's completely open So we can go. Yeah, I love
James: it. We yeah, absolutely. We use that for I also admin, the mastodon. me. uk server which we've got a couple of thousand people on and that's all supported by Donations and through open collective and everybody can see exactly what we're doing where the money is going on the server costs.
So it's great. But yeah, the, the funding is, yeah, it's, it's an interesting thing. I've been very lucky to get some funding from it's, it's basically, it's European union funding through the European union have a research program called next generation internet. NGI and they have various funds within that, like NGI zero I'm never quite sure how it breaks down.
Anyway, that's all administered then by a foundation in the Netherlands called NL net. Who put out calls every, every quarter for it's all. Specifically for open source you know, what you're doing has to be open source in order to to benefit from this, but it can be you know, a theme around bringing control of data back into back into users hands.
It could be a theme around security or, or whatever, but yeah, the funneling, funneling that money into open source Developers is is amazing. So I was lucky enough to get allocated, allocated, get to be awarded some money for that, which has let me spend the last few months full time on this, which is incredible.
I've got another application in, so hopefully it will carry on. But in, in the long run, it ideally needs to build up a, a sort of sustainable base from. From users on, on Open Collective, I'm hoping that's where it goes. We've got now quite a few projects that are sustaining themselves that way.
And it's, it's interesting. People, especially in the, in FedEva seem to be, You know, there, there was always this idea that, Oh, people won't pay for stuff on the internet. It's like, in the early days, I wanted to pay for Twitter. I liked it. I was like, I'll, I'll give you some money, but there was no way of doing so.
So they had some other business model that didn't care about what I wanted. And that, that kind of, no, I am willing to pay for something that I think is good. It's it's, yeah, it's, it's changing, I think. And there's a lot of things doing it.
Jonathan: Have you, have you had reach out or worked with any any of the printer manufacturers?
You can tell us about it. I have no secrets mainly
James: because I have no success on this. I did try. I did try once. I was like, Oh, is anybody interested in sponsoring this thing? And obviously I just went straight in the bin. The one thing that I cannot do is marketing. That's just not, it's, yeah, I don't know how or or whatever.
I mean, that, that would be cool. That would be a really good thing. I think it's, you know I think a natural fit for many of them. It's also a bit of a reaction to what many of the printer manufacturers have done. So. The first sort of big model sharing model publishing site was Thingiverse, which was which is run by Ultimaker.
I think so. I think. And it was, you know, dominant for a long time in sort of the early early days of these things. That's now, well, well, it went through a real. Bad patch where like just search didn't work for like a year and things like that. So people were going to other, other platforms things like that.
It was, it was building up sort of, you know, more more other platforms, but it seems that every printer manufacturer is now bringing out their, their own hosting site. We now have printables, which is. Somebody I can't remember which one is it Prusa. Is it? Yes, it is. It's Prusa. Thank you. And there's there's loads of other I came across another one today, which I think had I don't know if it was Bamboo or whatever, but it was like very much Download the bamboo thing here into bamboo slicer.
Okay, this is this is theirs and None of these things work together, right? So You have creators who will be Publishing on Five, six different platforms now, which is just wild to me. And then you have things like, I can't choose how I use Thingiverse, right? I can't say, Oh, Thingiverse is useful. I can pay for it.
No, I can't do that. Instead I have to watch a whenever I download, there's a 30 second ad that pops up. I mean, it's a static image ad I've seen it in side two seconds and decided that I'm not interested, but then I have to wait. So this, this, they're all trying to find ways to monetize these things, I suppose.
And Corey Corey Doctorow's term which I don't know, family friendly show. I, I won't I won't say I'll let you say it. I is, is definitely a thing, right. And, and. I think we've learned over what we've learned of the sort of the consolidation of the big tech and big social media networks is that these walled gardens aren't great.
So actually publish your own stuff, host it yourself. We make it as easy as possible. And then, you know, syndicate it out from there. So that's very much a kind of a a driving force behind Behind manifold as well. So I think that's something pretty manufacturers should be excited about, but it's also like, I want to stop you all building your own hosting sites.
Although feel free to run one and put your name on it and then join the Fediverse, right? It's that's something they can do by all means. Absolutely. That, that actually brings up, I'd have to see that happen.
Jonathan: Yeah, I would too. It brings up an interesting question though. What, what license is manyfold under?
It's MIT.
James: Okay. So very, very permissive. Very permissive. Yeah. I've long. Got over the the idea of trying to, like I say, nothing I do has ever worked. So, you know, I might as well give it away. No, it's, it's MIT, everything that I've, that I've done with it is, you know, there's other things that we've published as part of that part of the development is MIT as well.
I'm not, you know, looking to make a walled garden and get everyone onto one platform and then, you know. close the gates and and start making money off them. It's just not, it's not a thing. So if I can get people running their own stuff and you know, pay the bills alongside somehow, then that's fine.
Jonathan: Yeah. Yeah. That's the ideal. Do you have any really big instances of Manyfold? Is there anybody out there that's trying to run one as sort of a community instance?
James: I know there are some, I know there are some starting up because a couple of people have asked me in the last couple of weeks about getting things up for community groups.
One of the things that I very quickly put on the roadmap and launched last week was OpenID login, so people can integrate it with their existing authentication systems. And Fortunately, the, the way I'd built it made that very easy, which was nice. So we could get that out. It was a complete surprise feature.
I did not have that in the plan at all. I mean, I don't really have a plan, but you know but yeah, it was really nice to be able to say that actually, yeah, I can do that. There we go. That's the, the dopamine of open source, right. But I know of. I, I thought I had a fair few, I thought I had quite a, quite an archive of models.
I know, One instance that's pointing at 17 terabytes, which is insane.
I've had a few sort of bug reports come in from, from the the person running it. It was like, it gets a bit slow.
I'm surprised it hasn't set your house on fire or whatever. You know, it's, it's a bit slow. Yeah, I, I, I've been impressed actually how well it has coped with, with big instances. I, I'd like to see some, I'm just starting to collect public instances now. I've just put a list on the website of known public instances that people are happy to put there.
Currently, it's the two that I run which is the which is my own one and the demo.
There's a demo instance. You can go and actually play around with all of the features without any authentication or anything. But yeah, it'd be, yeah, I'm looking forward to seeing some, some instances come up, but at some point I'd like to run like a flagship instance so that anyone can just sign up for an account and start publishing stuff.
Yeah. That would be really nice. Yeah, budget is probably the thing at the moment. I've, I've, I've mentioned that as a possible thing in, in the sort of next round of funding as I actually like, it would be great to get a flagship instance up.
Mm hmm.
So,
Jonathan: yeah, is, is there a, is there a way to search across the different public instances of this?
So say I'm looking for a specific model of something and I just want to say, go out and, and, you know, look at all of the many fold instances, all of the things that are public. Is there a way to do that yet?
James: No, not yet. That's a general. So, so there's a few things. One, there's, there's one. main, there's a few main sort of 3D model search engines.
So I think Fangs does a has a search across other sites. And there's one called Yegi as well, which, which does that. I'd like to make it so that manifold instances can be indexed by those. If necessary, so that somebody who is running a search indexer, the stuff will pop up. And then there's a big thing generally about federated search and search of the Fediverse because every instance has this problem, right?
Whether you're on if I search on Mastodon, I'm only seeing what my instance knows about. So how does that work? And I know that there's work happening there, which hopefully I can. I can hook into and build upon in some standards compliant way, that would be ideal. So yeah, at the moment, no, but it's definitely.
Yeah.
Jonathan: And it's something you want to do. I think it would be really cool. I'm looking forward to that. So the the thing that we had to talk about with, with Mastodon, I think it comes up here as well. Maybe, hopefully it does. Hopefully it hasn't come up here, but do you, do you, do you guys ever have any problems with people like uploading inappropriate things or even just straight up trying to spam on Miniverse?
So
James: at the moment. No, because I don't know of any other instances. But it will be a thing, right? That will be a thing.
Jonathan: That's when you know, you've made it
James: Yeah, definitely. So I mean one thing I did last actually the the sort of current One of the current themes of development that I'm doing now that we are in the ActivityBub world is building in the required moderation and admin tools.
We've got things like moderator permissions in there already. I added in a sensitive content flag last week. But building those things so that it will respond to Reports from other instances give you a, you know, report log, things like that. So yeah, that's been in the, in the roadmap from when we started thinking about federation stuff.
It's definitely something we need to support. We need to be able to control federation as well. So which instances we do and don't federate with or, but that's all individual choice, right? That's not, I say we, it's not. It's everybody separately. But yeah, definitely want to build in those controls and learn from what's worked elsewhere in the Fediverse and what's but also what people have missed as well.
David: It does seem like Moderation around 3D objects is a little bit different than moderation around text. Yes.
James: Yeah, but you know, we've got comments and descriptions. So, you know, Comments and comments. There's text as well. And images.
Jonathan: Images is actually one of the ones that's a little scary. Because if you, if you tick somebody off, they can, there are, there are literally illegal images that you have to potentially deal with.
Absolutely.
James: Yeah. Yeah. Yeah. So, so knowing, I mean, it's been really handy having been a, an admin of a, of a Mastodon instance and bringing that experience to building this and actually going, yeah, okay, I need to be able to say for this server, don't, just don't talk to it and never ever accept any images.
from anywhere over there. That's definitely something we need. So I mean, I say that aren't mastered on moderation journey has been very smooth over on our server. It's been, it's been a nice, a nice ride, but I know, I know it's not that way for everybody. So, yeah. Yes.
David: To get So I know that this could be a potentially deep topic because you do have a PhD in it, but the explain it like I, like I'm five overview.
And going back to that massive survey you were talking about the size of those 3d models and everything you've mentioned in your blog post that you're actually looking at developing ways of 3d compression.
James: Hmm.
David: What does that look like?
James: So, yeah, this is this is one of the fun bits of of the project that I've I've got funding for.
I haven't done it yet. It's going to be coming on hopefully sometime in a month or so. I've really got to get this done. 3d models are big. They're, and some of them aren't. really big. I mean, some, some creators will create quite efficient measures. Some will just have millions of points in there that you really don't need.
So Yeah, things like, and this speaks to the sustainability thing as well, right? These things are expensive to send over the internet. They're they take a lot of space. So one of the things Manifold will do is it'll detect old inefficient formats. So you mentioned OBJ Wavefront. That's really inefficient.
It's all ASCII. It's just, it's massive and it doesn't need to be. There's ASCII encodings for STL, things like that. And we can convert those to 3MF. Which is a nice it's a, it's, it's a sort of more modern format, but then it's also zipped up. It's a zip file basically. So there's that, but then that still doesn't help you sending it over the network because you've still got to send the whole thing.
One of the you know And the internet might've got fast enough that we don't really worry too much about this these days, but you know that PNGs can be, and GIFs actually back in the day, could be progressive. So you could, they've got all the information you need to display them at a low resolution and then it refines and refines and refines.
So there are ways of doing that with 3D models. And like you say, I did a PhD in this years and years and years ago. 25 years ago, probably approaching I started. And It was when it was, it was all around animation of very very dense meshes. And the fun thing was while I was doing my PhD they invented graphics processors and suddenly what was a very dense mesh wasn't by the time we could just do it all with a, with a nice graphics card.
So. What I did for my PhD wasn't massively relevant, but some of the things that I, there are algorithms that I read about while I was while I was preparing to do sort of my research that are, there's a thing called progressive meshes written created by a guy called Hugh Hoppe, who I probably pronounced his name terribly wrong.
I'm sorry. Which basically you can imagine you have like, imagine you've got a cube, right? Or a very simple shape, right? You're going to get that really quickly. And then instead of loading the whole thing, you just say, all right, that, that corner there, split that into like that, split that on that, on that, on that, on that, on that, on that.
And then the thing refines. And. This is a really nice, nice thing, you get this sort of stream of progressive enhancement of this model, which means you can see what it is very quickly, but you can wait for the full detail if you, if you want to. So that's a It's a really, it's a really nice algorithm for that.
And, and I was looking around to see if anybody had done anything with this particularly, around transmitting them over the internet. But, you know, I mean, I was playing around in VRML back in the 2000s, but 3D over the internet hasn't really been a, you know, a huge thing. It's, it's all, you know, in games and things like that.
And you're just downloading gigabytes in one go and then you've got it. That sort of continuous transmission hasn't really been an issue. So nobody had done anything with this particularly in terms of that as a sort of, as sort of as a, as a transmission format. So I got in touch with Guy and said do you know if anyone's done this?
And, you know, we should put together a, a spec to do it. And so I've done a draft spec for it actually as a GLTF extension, which is a sort of format designed for, uh, for sending over the network. People have done mesh compression in that, but it's not this sort of progressive transmission thing.
So I've written a spec, I've got to write the code, and, and actually get it working. But the idea is that if you're looking at a, a very complex model on some other server, you'll actually get a low resolution version of it instantly, and then it'll refine over time. One fun thing about that is that it provides an interesting, interesting thing.
possible approach for commercial models in that I could show you a low resolution version of the commercial model and you can see that and you can look at it and flip it around and all that kind of thing. But actually if you, you know, when you've paid for it, you get the whole stream. And you get all that fine detail.
So, it's, yeah, it's a really interesting thing. It's, it's, it's nice to be able to flex the the 3D graphics brain for the first time in a good many years. Yeah. Doing this. Yeah, that progressive,
David: Concept that you just mentioned, and not just looking at it, but I could envision where it could be something where you could, like, print it in low resolution to test if it's what you want before you spend the money and get the full resolution product.
James: Yeah, that's true. Yeah. Yeah. Yeah. Yeah. Test size, you know, yeah. Yeah, yeah, that's a good point. Super interesting. That's a good point. I haven't really worked out what the sort of commercial obviously there's lots of commercial creators out there, right? So I need a solution if anybody's going to use this thing for that.
I don't quite know what that is yet. But I'd like it to be possible in some way. I'm not, not interested in like payment processing and things like that. Somebody else can handle that. But like, how do I, how do I make sure I've got a permission model that works for. for sort of sharing of a preview and then and then full versions of things.
It's kind of what I'm thinking about. But there's a lot of a lot of commercial modelers out there who who I think would benefit from being in control of their, you know, seizing their means of distribution, right?
Jonathan: All right, we have a, we have just a minute before it's time to wrap and I want to say something we didn't get to. Yeah, it's gone fast. Something we didn't get to. It has gone
James: fast.
Jonathan: I wanted to ask you about is what was the experience like adding ActivityPub? How, how big of a pain was that? Or is that something that is actually fairly simple?
James: It's got some sharp edges. It's no, it's all right. It's all right. There's, there's some good, you've definitely got to learn it and understand it and, you know, read the specs and things like that in order to to be able to, to do it. I think it's not, the basics aren't super difficult. A friend of mine did a a great blog post on how to build an activity pub server in 20 minutes in PHP like in a single page of PHP, which is, you know, you can do that.
There are interesting bits like signed requests, which is a little bit tricky and difficult to to work out exactly exactly why it's not working. Some of this stuff can be hard to debug because one of the things is actually it's all needs to be on the internet and talking to other systems. So I mean, while I was doing a bunch of the development, the deploy process was just the debug process was so slow because I had to build a version, deploy it up to my machine, then talk to other things on the internet, et cetera.
So it was it can be a bit like that. But one of the One of the things that I've done as part of this is I wanted to, so I built the the site's built in Rails which has been a, something I've worked in for many, many years. It's very nice for programmer speed, which for me is a good thing to optimize for.
It's just me on my own. And one of the things you can do with that is it's, you can plug in engines that do you know, that bring a bunch of features in one go. Like we have one for authentication and we have things like that. And I wanted to make a reusable component for activity pub. Mastodon is also built in Rails.
Their activity pub is kind of, well, it was the, the site was built before they adopted activity pub. So it's a little bit It's not sort of easily extractable. I don't think I was kind of going in thinking, Oh, what if you could pull out the activity pub call from masters? I've definitely read some of the code.
It's been useful to see what I've been doing wrong. Mainly actually, why is this thing not responding when I send it stuff? It's where, where is it sending it through debugging through other people's code to, to work out what you've done wrong is, is interesting. But . Yeah. The, I wanted to produce this reusable engine and I found that somebody had already had this idea.
And so I've been contributing to that project. There is a rails engine now called Fed Rails. Hmm. Which, when I started looking at it, it supported things like following back and forth and things like that. It's that was it had some of the basics down. I've over the last little while.
Implemented the the signed activities, different activity types multiple actor types. So in our system in, in Macedon, everything that you can follow is a person, right? That's simple in manifold. It's a creator, which is a person, but also it's a model and it's a collection. And there's all these different things.
So getting multi actor support in there Lots of things. So I've done a bunch of code for that which is, so actually all the ActivityPub core of Manifold is in that reusable engine. So, and, and I'll be carrying on with that and building more and more into it as we as we go. So anybody can pick that up and reuse it.
Hopefully fairly easily. Yeah.
Jonathan: Manifold is built in, in Rails, Ruby on Rails? Yeah. Yeah, that's right. That's one of those languages and frameworks people have very strong opinions about one way or the other. They do. They do.
James: I, I won't start a flight war.
Jonathan: I like
James: it. And that's
Jonathan: what matters to me. That's what matters.
Yes. Mash was data from the chat. Opinions are available. Yes. Yes. I can help supply some of those if you'd like. Master tailor from the chat wants to know what about that other federated protocol at, which that's the one blue sky is working on. Any plans to support that?
James: Not at present. No. I don't know anything.
I, I haven't looked at it that much, to be honest. I know that BlueSky does it. Is there more than one BlueSky server yet? Is there, is that even a thing? I don't really know. I'm not there. That's what I think. We, we've we, I did bridge the manifold. Fediverse account over to Blue Sky the other day, and that's about as far as I've gone.
I don't know. Should I? He asks the
Jonathan: audience. I will say this. I went looking for, oh, have any other open source projects picked up AT and started using it? And as far as I could tell with my quick search, the answer is no. And if that ever changes, I would think maybe you should think about it. But until then, I don't see the point of it.
James: Yeah, I think others. Other bigger, more important applications will pick it up first. And that's when I'll notice and think, Oh, maybe I should do something like that. But I'm always willing to be corrected or to learn more. Yeah. There you go.
Jonathan: All right. So I want to make sure and ask what, where do you guys need help?
So if somebody said, Oh, I know, I know how to program in Ruby on Rails, or maybe even if somebody doesn't, but they want to say, I want to roll up my sleeves and help with many fold. Where's a good place to jump in and, and start at? So
James: it's, so I've tried to make it accessible. I don't know whether I've managed it.
We have a bunch of issues on GitHub that are labeled good first issues that are fairly self contained things that don't involve you understanding the entire application. But it's not just Rails. There is, there is Ruby code. There is plenty of JavaScript code. If you want to do 3d JavaScript, I've got some jobs for you.
There's lots of stuff I want to, to add into three JS for instance. So there's, there's things there, there is design. I am not a designer. The whole thing is built with bootstrap. Because I'm incapable of doing anything better. So, you know, design UX one things we do have people we do have a little team of translators who've stepped up.
We're actually translated fully into four, five, four languages five in total. English doesn't count. French, German. Spanish and Polish Polish, because somebody popped up and said, I want to translate it into Polish. So I went, all right, sir. And, and he did, and that was the first one that actually got to a hundred percent translated.
So people want it in their language. Please do. I would love to have Russian. I, then I think after that it's Japanese. I don't know, I think, but things that I can't understand when they're wrong is, it's definitely, yeah, on the horizon. Although I mean, I can, I can read Russian. I just don't know what the words say.
Understood. But I did it at school so I can read the alphabet, but that's about it. And so but yeah, there's that but also things like documentation, I mean, open source really suffers from. From documentation issues, I've tried to do some. I've discovered that I would rather do almost anything else than write some bits of documentation.
But also i'm a really bad person to write it. I know how it works and how not to break it so those kinds of things like What haven't I explained? Is is not something I can see very well. So There's loads of yeah loads of opportunities for people to get involved. We're on we have a Chat space on matrix.
And there's all the codes up on GitHub and there's GitHub discussions there and things as well. So yeah, if it seems like something that, you know, I, I'm very much of the opinion that there's so much more to open source than there is just code. So, you know, there's, there's a lot more that that people could could do.
Jonathan: If somebody wants to run it, is the Docker image the easiest way to go?
James: Yeah. Docker image is pretty much the only way to go. Somebody did ask the other day how to run it on bare metal and a few of us just sort of all chorused in going, just don't,
Jonathan: you don't want it. You don't actually
James: want to do that.
I mean, nobody wants to set up a Ruby runtime and, and all these different bits and pieces. No, the whole point is all of the self hosting stuff I've done has the, the by far the easiest way it's been through, through Docker containers. Yeah. Normally the Linux server containers. I don't know if you guys have come across those.
It's a group that put out a, a set of applications as containers that all work in a standardized way. And I was very pleased when manifold got into that so you can run our own. Container. We have a version that has a separate database is the standard one. We also have a solo container, which is just run one container.
Everything's in there. And there's the Linux server one as well. There's instructions on the website for running it on things like Synology, Unraid All these various Various methods, but yes, it's all Docker. I imagine it's not
Jonathan: doing anything too obscure so you can run it rootless with Podman and all of that.
And it just works.
James: Yeah, we did a I don't know about Podman. I assume it will. We did yeah, one of the big changes to, to get the the Linux, everything was stopping it running as root and letting it run on read only file systems and things like that. So yeah, it can do that.
Jonathan: I will I'll have to give this a try with Podman then I'm my, my Linux usage is mostly on sort of the red hat fedora side of the fence.
And so I tend to go with Podman when possible. So I'll give it a try. I'll give it a try. And we'll let you know
James: what happens. That's, that's all the that's all I can ask. Let me know when it breaks. I mean, yeah, it's still under very active development. This is, you know, last week I put out three feature releases and a patch release for a broken feature.
So yeah, things break, but then I fixed them. So I've never lost anyone's data yet in 86 releases. Yeah, there's, there's not been any data loss. I'm hoping to get to a 1. 0 release maybe early next year, something like that. There's a few a few of these sort of the, the, the various features that I've got funding for, but a few other little bits to get in there that I can then say, okay, yeah, that's, that's a baseline.
And Then, then we go somewhere else, then we go from there, I don't know. But I do want to get to that one point, I hate projects that just perpetually hang on. A zero dot something or other. Yeah, yeah, yeah. Yes,
Jonathan: yes. Okay, so, I've got a, is there anything that we didn't ask you about that you really wanted to let folks know about?
James: Oh, I have absolutely no idea. I completely lost track of the conversation. No, I think just, no, come and come and check it out and come and have a look. If it sounds interesting, come and come and see. Well, I'll, I'll help people get it up and running. Cause like I say, it's early days. You still get very personal support.
Actually that's, it's not just me. There are now a lot of people in the support channel who will, who will help out getting it up and running. Yeah. None, none of whom I actually know. It's amazing. So
Jonathan: what what's the best place? So I see, I see many fold app. Yeah. If somebody wants, that
James: is the best place to
Jonathan: start.
Yeah. If somebody wants to donate, where, what's the link for that?
James: There is a donate link on that website. I think if you go to manifold.app/donate, I think that will probably work. Okay. He says nervously. But yeah, if you, you can click through to the main site. It's, there's a donate link downside.
There's also community links which will take you to the various channels. That are available there's a source code link for GitHub up in the, up in the top and yeah, all the documentation and getting started guides and all that sort of thing. Very cool.
Jonathan: Very cool. All right. So I've got to ask before we let you go I'm required to just about contractually.
What's your favorite text editor and scripting language?
James: Ooh. Ooh. See, how do you, how do you define text editor? So the thing I use day to day at the minute is VS code. I've gone through so many over the years. I was definitely an Emacs user for a long time. At the moment I'm using VS code. It's reasonably nice.
It's, it doesn't. break. And that's about all I need it to do. Actually it does break sometimes. It does break sometimes, but you know, yeah, yeah, yeah. Everything breaks sometimes though. So no, that's what I'm using at the minute. And I mean, favorite scripting language has got to be Ruby because it's just it's fun.
I've been using it for so long now that my favorite scripting language is one that I can get stuff done quickly in and not think about the language. And solve the problem. Yep. Yep. That's the way it goes. I'm not averse to any of the others. They're all great. I know many languages. Most of them are lovely.
Jonathan: Most
James: of them.
Jonathan: Not naming any names. Not naming any names.
James: I have mixed feelings about some that I have to work with. And that's where, that's where we shall leave it. Yes, yes, that is fair.
Jonathan: All right, James, we are, boy, we are beyond out of time. But thank you so much. It's been a blast. Talking with you and about Manifold.
And I literally have a terminal pulled up. I'm trying to get it installed on the machine behind me to let you know where the pod man works or not. So as soon as, as soon as we get close, yeah, I'll finish up with that. Thanks for being here. Thank you very much.
James: Yeah.
Jonathan: All right, Mr. David Ruggles. What do you think?
Have we convinced you?
David: Oh, well it's still a question of time. I never have enough time, but now I want to definitely get a 3d printer and get into the ecosystem. But yeah, that was fun. And and I just, it's always fun to talk to somebody that's just got such a wealth of diversified experience.
So I definitely, he, he, Hey somebody, if he's available, we keep him in for the roundtables. Yeah, that'd be fun. It'd just be fun just to pick his brain about so many different things.
Jonathan: Yeah, yeah, that was a lot of fun. And I'm, I'm real fascinated by this idea of what he's doing with 3D models, trying to compress them in different ways.
I think there's, there's definitely some room for that. And I didn't, I didn't get to ask him, but I actually wonder whether some of that is going to be cleaning them up as well. Because it's one of the things you get when someone's used like Blender or what have you. To produce a model, there'll be a lot of internal geometry that just either never gets printed or maybe never should get printed.
And there are some algorithms out there to try to clean those up, and not all of them are amazing. So, definitely some room for someone to work on that. But it's cool. I am literally working. I have a tab pulled up right here. I am working to try to get this installed and running using Podman. It's pulling right now, so if my internet connection craps out, that's what's going on.
Alright, a lot of fun though. David, do you have anything you want to plug?
David: Not specifically. I would encourage everyone to go check out Twit. That's the other place I like to frequent. So everybody else should like to frequent it too, of course.
Jonathan: Of course. Of course. So next week we are talking with Josh Bressers from Anchor.
Which that is about automated software compliance. And apparently they have quite a few open source projects that are connected to that. And so looking forward to looking forward to that, it's going to be next week. And then we've got some other things in the pipeline coming down the way. The, we've got the The J4Pi project coming up soon, which is about and we talked about scripting with Java.
Well, this is about scripting with Java on the Raspberry Pi. And that's, that's actually going to be pretty interesting because they're doing some fun stuff, exposing all of the different peripherals, SPI and GPIO and all that. So actually quite, quite a bit looking forward to that one as well. As far as plugs, we do want to make sure and thank Hackaday for being the home of FlossWeekly now.
And there is of course my security column, goes live Friday mornings there. And then there is, as we mentioned, the Untitled Linux Show over on TwitNetwork. And make sure and check that out as well for even more Linux y goodness from your host to co host today. We appreciate it. Thank you everyone for watching, those that get us live and on the download.
And we will see you next week on FlossWeekly.