Mastodon
link  video

My Interview with Craft VP of Engineering on Craft 2, Extensions, the Web App, and More

Posted by Matt Birchler
— 13 min read
My Interview with Craft VP of Engineering on Craft 2, Extensions, the Web App, and More

Craft 2.0 released a few weeks ago, and it had some things I really wanted more details about, so I was really excited when Craft agreed to do an interview with me for A Better Computer to talk about the nitty-gritty details of how some of this stuff is going to work. You can watch the interview in video form, but I also transcribed the conversation (and cleaned it up a bit to be more readable).

Shout out to Drafts for transcribing the whole interview for me, too. I had to make a bunch of edits to get it perfect, but this process would have taken hours longer if I did it manually, or cost way more than it should to get it done through some third-party service. Disclosure, Drafts has sponsored my videos before, but this wasn't sponsored, I just used the feature because it worked well for me.

I’m pretty sure this is my first real interview, so go easy on me, but I think we got to discuss a few things that haven't been covered elsewhere, and I hope you enjoy it!

Matt: Sam, thank you for joining me today. Would you be able to share who you are and what you do at Craft?

Sam Harman, VP of Engineering at Craft: First off thanks for having me on the channel, it's really great. So, I'm VP engineering at Craft, and am here to talk about the 2.0 release, Craft X, and I know you've been playing around with our web beta version, so yeah happy to talk about those things, and I'll share what I can.

Matt: Awesome, yeah I'm super happy to have you on because I think my questions are kind of technical, and you can get into the weeds a little bit with me. A little context as to why we're talking today, Craft had an awesome 2021, I think that's probably fair to say. You guys won Mac App of the Year from Apple, which must've been huge for you guys. A whole bunch of websites just in general have talked about Craft as one of the biggest apps of the year, and everybody seems really excited for you, so congrats on the good year.

Sam: Yeah, thank you, it's been intense. We were really super happy about the award, and, humble as well. We didn't set out to go and win a bunch of awards, we built a product that we wanted to use, and we do use it every day, and we use it for almost everything internally at Craft, and as it turns out, lots of other people also like it, so that's great.

Matt: And so a couple of weeks ago you guys announced Craft 2.0, which is super exciting. About almost exactly a year after 1.0 shipped, but I think it was not quite the like a traditional 2.0 with like, "here's a whole bunch of features and we changed the UI and we did all this stuff." To me, I kinda read you guys' post announcing it more like "here's what we see Craft doing in the future, here is the direction we see it going with things like extensions, the web app, and then some improvements to the core app." Is that generally fair, do you think?

Sam: Yeah, yeah for sure. So one of the things we've always done with Craft is we have this amazing community, so we have like something around 10,000 people who talk to us on Slack and Twitter, and they have done since like the first beta, and they help us build Craft because they tell us what they love, they tell us why they don't love, they tell us what they want next. And we knew we couldn't do all of that stuff in 2.0, but the direction we chose to go with with the extensions is kind of a saying we can build a really, really great core app, and we love it, we think it's good, and I think if a few other people like it too, but with extensions, you can customize it, and you can build it to fit your workflow because everyone has a different workflow, right? We have an amazingly diverse user base of Craft; people use it for all sorts of things. If we set out to build one solution that suited everyone, it would probably be a really terrible app, so yeah, Craft 2.0 with extensions we're kind of setting up a direction, and we're committing to keep working with the community to build those things that they want, so there's a bunch of things that we said we're gonna do, we will do, we've not committed to dates because people's priorities change and our priorities change. Who knows what Apple's going to do at WWDC this year, so we like to keep it really flexible, but yeah, the message is really: we stand behind Craft, we love it, we use it, and you can expect lots more from us going forward.

Matt: Okay, cool, yeah so that's a good kind of lead in to talking about the extensions a bit. When you guys announced Craft X, which is the extension platform, you released like half a dozen or so extensions that you guys made, and so these are kind of focused around getting things into Craft, you have a Hacker News one to pull in the top 10 posts at this moment, you had publishing ones to Ghost and Medium, and that seems to be the focus of getting things into Craft and then exporting your Craft documents or blocks from Craft. Is that kind of the core kind of extension you guys were thinking of, or is it a bigger thing than that, is there more functionality that you think these extensions will let people build?

Sam: There's gonna be more I think is the simple answer. I mean we really wanted to release like v0.01 of this, it's developer preview, so we want to release what we've got now, and we wanna work with the community, with the developers out there to to build it. So what you see now is like the real core, and so you know we're super excited to see what developers are going to do with this. I'll tell you, so as part of the development of Craft X, we held an internal hackathon and basically all our engineers stopped working on other things and built the extensions they wanted to see in Craft. And for the most part, the ones that you see on our developer site and the GitHub plug-ins are the ones that they built on that day. So it was really great for me to see. The thing that blew me away was the sheer variety of plug-ins that we built. You know we're a super small team, and we built all of this stuff in like one or two days, so you know there's power tools with find and replace and custom regex support, like you mentioned integrations with like ReadWise, publish to Ghost, etc. And so, you know, I said it before, this is v0.01. We released an update I think today actually, I don't know when this video will go out, but we have released an update today, which gives a whole bunch more functionality in the Craft X API, so yeah, sorry, long way of answering your question. You know we're really excited, hopefully you can tell, but what you see now is the start, and we think we can make it really, really powerful.

Matt: And so you have this gallery page now, with the ones that you built, the 0.01, proofs-of-concept may be a way to put it. Do you plan on that kind of gallery being a thing that will exist once it is actually released and is a stable build? Like is there gonna be like an "App Store”, if you will, for extensions, like you guys are gonna have "these are the ones that we think are good," or are they going to be things you download from GitHub or other websites or is it up in the air, you guys are figuring it out, or don't want to talk about it?

Sam: It's something we're figuring out. I mean we're committed to keep building extensions ourselves, and the ones that we build will keep open-sourcing so people can see how we do things, and then they can copy them or change them or tweak them, so we'll do that. In terms of how you can easily install an extension as an end-user, that's something we haven't solved yet because it's a developer preview, we're just not there yet. There could be many different options, we don't know which ones are going to work out the best, but we'll find it.

Matt: Fair enough, I think your track record would indicate you guys are probably going to come up with a solution that's pretty decent, so that makes total sense.

Sam: One of the things that we do a craft is when we get feedback emails in, every member at Craft is in the community so we see all the posts, like we can't respond to all of them, but we see them all and the developers of Craft read these things. And when you send a feedback email in, it goes to everyone in Craft as well, so we constantly are seeing how people using this, feeling the pain points, looking at the requests, and it gives us a really natural way of triaging and deciding what we do next.

Matt: Just out of curiosity, note-taking apps are kind of a really hot thing right now, there are a lot of apps… I think about Obsidian is getting a lot of buzz in 2021, Roam Research has its niche, Notion is kind of a whole separate thing but it's kind of in the conversation too, and there's a lot of stuff going on in the space. Extensions really feel to me like the thing that is like oh, like Craft isn't just a good UI, Craft is super serious about, I don't know if competing is the right word because you can use all these things together, but Craft kind of got like extra serious to me when I saw extensions because one of the things that's great about Obsidian is that you can…like you see people like Federico Viticci who have just gone crazy with developing their own plugins and everything, and they're doing it, but they're doing it in this Electron app that not everybody loves (I generally think is fine in most cases but not everybody loves), and being able to bring that level of customizability into a native app experience, I think it's different because a lot of these note-taking things are web-based and there's a little bit of jank there sometimes, and I think Craft is kind of the opposite of that so it's kind of cool to see a really refined app bringing this kind of power user feature of extensions.

Sam: Yeah, look it's great to hear you say that. I said it before, we build the app that we wanna use, and we always wanted user experience to be at the core of what we do, right? So we started with iOS and macOS because that's where we felt we could build the best experience. It's kind of a go-to platform for people who care about is sort of thing, right? But that doesn't mean that we can't do these other things like extensions and add functionality and you know, you mentioned MacStories, we're super happy we just got an award from those guys as well, which was voted for by the readers, so that's even better for us. And yeah, you know the market for productivity extensions I think existed before because you have great apps like Drafts and things like that. Obviously Apple's Shortcuts kind of bought it to the mainstream of bit with extensibility, but you know it's great and we had support for Shortcuts from the really early days, and so Craft extensions are not so much the evolution of that, but it was always a natural place for us to go, you know? We don't want to clutter up the main app with all of the super useful workflow stuff that you can do in extensions. I can't remember if this is one we published, but we've got an extension which hooks into GitLab so we can pull all our code commits to Craft and that helps with some of our internal processes. You know we would never ship Craft with that enabled because like the other like 80% of our user base who aren't software developers just wouldn't find it useful. But yeah this is the kind of thing I like we really are so excited to see what the community does.

Matt: So I think that's probably a good time to transition over to the web app, which is in beta right now and basically the intention sounds like it's the full Craft experience just in your web browser.

Sam: Yeah for sure and like I say we use it internally all the time and one of the things that our web develops love is that we accidentally use the web app and we don't realize we're in it. Because that's the standard we want to set, so we will open a link, and we open Craft and we're just in Craft. Maybe five minutes later we notice, oh we're actually in Safari or Chrome or whatever. But yeah, the intention there is one of the loudest messages we had from the community was data portability, accessibility, I wanna use Craft wherever I am. Often people who have an iPhone or an iPad or a Mac also have a corporate Windows machine that's looked down and they can't install software on it. And those people were like, "we use Craft for all of this great stuff here, it would be so cool if I could use it for work as well." So the web just makes a really natural next step for us.

Matt: Okay yeah that makes sense. One of my pet peeves with apps is when they do their syncing and sign in exclusively through the Apple ID of the device you're on because I have my personal device and then my work computer is a Mac, but there are some apps I just can't use because I can't sync things over between the devices. But yeah the web app totally makes sense, the vast majority, I forget what the number is but like 70 or 80% of iPhone users have a Windows PC. Right, like the average iPhone user is a Windows user, which is a weird thing to think about when you are all in the Apple ecosystem, but it's just the way it is with the number of people out there. I did want to ask what that process was why, you kinda explained it a little bit with of portability, just people needing to use it on different devices, but one of the things that I think people really love about Craft was they love that it's a native app that utilizes all these native features. You guys do split-screen really nicely, you support Shortcuts, like all the iOS and Mac features you could support you guys have it because you're a native app, and some of it you get for free and you build it and you care about that stuff and that's awesome. How much work was for you guys to bring Craft over to the web, and was it like starting from scratch, or was there stuff you were able to port over? I'm kind of curious just how you guys did that.

Sam: Yeah, it's a great question actually. One of the great advantages with Craft is that we built it in a native app first and we built it to be offline first, so you don't need an internet connection to use Craft. Right, sure you need it to sync, but it'll work perfectly offline. You can edit your notes, you can do whatever you want, and it’s just magic. That's not typically the way that new products like this are built, right? Normally they go web-first and then it's online and then there's a real big challenge going the other way, so we had some challenges but they're kind of the inverse of what may be typical. But you know, I'll give you an example then. One of the early principles for us was that all content on a document is of equal importance. So we put loads of effort into making sure that the URLs look amazing and lists and images and that that they all look really great. When you add those things in the app, we have a lot of freedom to fetch them and parse them and do a load of processing on-device you know, we can make them look really beautiful. On the web, we're operating inside more of a kind of sandbox, so you can't make those requests on assets hosted elsewhere as easily, so we have to do that kind of thing in a different way, but really we care about quality and about user experience and so we will use whatever tools we can in the platforms that we decide to go after to build the best thing. I don't really want to get into debating back-and-forth about Electron or whatever because that's probably like a whole different video, and you know people have feelings and that's fine, but we have a native iOS app, macOS app, and you know we're going after the web, maybe after that, we go for Android, who knows.

Matt: On a similar note, but kind of the opposite direction, I think if I'm not mistaken the Mac app is a Catalyst app. One of the things that impress me is most Catalyst apps are not that great. Apple's Music app I think is a Catalyst app still and is maybe the worst app on the Mac. But Craft is really good, and I was wondering if there's anything you could share with kind of what you guys do to make sure the Mac experience is great and feels like it's not just an iPad app blown up. If it's just "we care a lot and put in a lot of time to add on the stuff" that totally makes sense.

Sam: It kind of is that yeah. There's no one answer to "just do this and then you can make a great Catalyst app." We had to learn a lot as we were doing it, which we always do, but when we were building this, Catalyst was quite a new thing and we had to learn a lot. There was a lot that was finished, and we do a lot of custom stuff, actually. Things that look native we've actually gone a layer down and rewritten them so the experience is good enough for what we want on the Mac and on iOS. That stuff is catching up so it's getting easier and easier to do that natively. If someone is setting out to do this, we actually wrote a kind of comprehensive guide, the unofficial guide to Mac Catalyst apps. I'll share a link with you, it's on our site, but you can link it down below, but yeah we went into a lot of detail there about what we did to make the Catalyst app so good. It's a great point actually, maybe the answer I should've given you is we tend not to think about it per se as iOS versus macOS, rather like the form factor that you're using, because an iPad now can have touch, you can have keyboard input, you can have a mouse and a cursor now, so all of a sudden that looks very similar than to a Mac. So there are certain interactions that we designed specifically for touch on iPads, but also so we have an interaction for keyboard and mouse. So we tend to think when we're building feature by future how much the users interact with this, rather than "oh this is the Mac app so we do it like this." And maybe that's a secret weapon, I don't know.

Matt: I mean you got the web experience, which I think is gonna be awesome, you got the extensions, which are just infinite possibilities with what could come from that, and you guys don't even know it's gonna come from that, but definitely plenty to be excited about.