The Changelog: Software Development, Open Source - Bringing beauty to the world of code sharing (Interview)

Episode Date: August 26, 2020

Carbon is an open source web app that helps you create and share beautiful images of your source code. Whether you've used Carbon personally or not, odds are you've seen its dent on the universe of so...cial code sharing. Mike Fix has been maintaining Carbon for a few years and he's embraced the project as an opportunity to experiment and practice working in public. On this Maintainer Spotlight episode, we chat with Mike about building Carbon, growing its community, sustainability models, and why he loves the world of open source.

Transcript
Discussion (0)
Starting point is 00:00:00 I can tell you're having fun with this. And oftentimes, you know, we get to the point where it's a chore or it's too much or you're unsustainable. And like, what are the challenges, all the complaints? And like, those are the things that we tend to talk about because those are real aspects of being in open source as well. Community, culture, all these things that are problematic or challenging. We talk about those things because it's like, how do we figure out these challenges?
Starting point is 00:00:20 But one thing we don't maybe say often enough, you know, why do open source? And a lot of times, like, throw your hands up like, well, why am I doing this? Right? Yeah. If you're doing it to make, I tell people all the time, if you're doing open source to make money, there's a lot more direct lines to money. There's much better use of your skills if you, all you want is money. But let's not forget why we are here in the first place, either as users or maintainers or creators. When you put something out into the world and people find value in it and it's fun and you can make it better, that provides more value to more people,
Starting point is 00:00:49 it's pretty rad. It really is. Bandwidth for Changelog is provided by Fastly. Learn more at fastly.com. We move fast and fix things here at Changelog because of Rollbar. Check them out at rollbar.com and we're hosted on Linode cloud servers. Head to linode.com at changelog because of rollbar check them out at rollbar.com and we're hosted on linode cloud servers head to linode.com slash changelog
Starting point is 00:01:09 welcome to the changelog a podcast featuring the hackers the leaders and the innovators of the software world i'm jared santo managing editor of changelog.com. Carbon is an open source web app that helps you create and share beautiful images of your source code. Whether you've used Carbon personally or not, odds are you've seen its dent on the universe of social code sharing. Mike Fix has been maintaining Carbon for a few years, and he's embraced the project as an opportunity to experiment and practice working in public. On this Maintainer Spotlight episode, we chat with Mike about building carbon,
Starting point is 00:01:51 growing its community, sustainability models, and why he loves the world of open source. This special flavor of the changelog is co-produced in partnership with our friends at Tidelift. Check them out at tidelift.com. Okay, let's do this. Take it away, Adam. I'm not sure, Mike, where I saw this at, but I saw we just had Zeno Rocha on talking about
Starting point is 00:02:15 Dracula Pro, and I saw Dracula Pro on Carbon. I was reminded how cool what you have made is, and I was like, you should talk to Mike. This is cool what he's done. And this is like totally a maintainer spotlight show. And so let's start there. So you've got Carbon out there. Lots of people use it. I mean, lots of people use it. Including us. Including us.
Starting point is 00:02:35 And now you have Dracula Pro. There's two. So cool for supporting Zeno and that theme. But how'd you get started with this? Yeah. So Carbon goes way back to when we were, me and my two partners, friends from college, started a small business. And we were really passionate about open source. And we wanted, like one of my partners was a designer.
Starting point is 00:02:56 And I often would nag him to come up with some like nice background to like tweet something out and share like some open source we were working on or whatever. And I was like, man, well, I don't really want to like tweet something out and share like some open source we were working on or whatever and i was like man well i don't really want to like take designers times and i don't really want other developers to take designers times from their teams so like maybe we can like automate this and during the summer it must have been like three years ago now they moved out and lived in a spare bedroom in my apartment in san Francisco. And we just prototyped it over the course of a week or so and then launch it. And we kind of knew that if anyone would start using it at all, it would kind of be the self-replicating cycle where when people use it, they share it, they use it, they share it. And it's just been that way since the beginning.
Starting point is 00:03:42 But yeah, we'd love to see how it's grown since then. And I know reaching out about Dracula Pro is just kind of the goal from the beginning, right? It's like to share things that developers love, to share this tool that makes it a lot easier for educators, for writers, for teachers, for developer advocates, that sort of thing. So Carbon, to describe it, is a website where you go and you put your code in and it gives you a shiny, very attractive display of that that you can then use on the social networks or take it put it in your read me uh share it with friends yeah very cool create and share beautiful images of your source code
Starting point is 00:04:31 and so yeah it's just when you say it that way i know it sounds like we're just doing it for show but at the same time i like to think about it as making it a lot easier to consume code through these mediums that that make it difficult right now. So through Twitters or through blogs or in a presentation, you still do want these presentation layers because it not only makes it easier on your eyes, it makes it easier to look at, but it actually makes it easier to consume the information when you have the correct syntax highlighting,
Starting point is 00:05:00 when you have a consistent consistency between all your files, that sort of thing. Yeah, it just makes it easier on educators that way and we've seen that to be to be true i mean i was like stoked recently to find out that like nasa has these and the jet propulsion laboratory has standard guidelines for like sharing code presentations when they want to do updates on what they've been working on recently and they explicitly recommend carbon as a way to like present that code in a way that's it's better for consuming on the other end and so stories like that is what really excites me about carbon and how it how it's grown over time um back to the initial goal of producing it on day one,
Starting point is 00:05:45 just in response to wanting to tweet easier. Wanting to tweet easier. So we initially covered this back when it was first launched. And when Adam came to me and said, hey, let's do a show with the Carbon person, I said, isn't that like an agency or something? Maybe I'm just misremembering, but were you and your buddies
Starting point is 00:06:06 presenting this as a business or an open source project from your business? And maybe that has drifted away because I thought it was actually a design agency that put this out there. And now it's not like that anymore. Or am I just misremembering? We put it out when we were working together
Starting point is 00:06:22 as Don Labs, which is a design development studio that we came up with together. And from the beginning, I think we wanted Carbon to be its own community. But while we were running a business, it didn't make as much sense. So when the business split apart and we went on to our next thing, I was really happy in the sense that we would have an easy transition requirement to move into its own community, have its own hub on GitHub, have its own voice on the internet, like have its own Twitter channel and that sort of thing.
Starting point is 00:06:54 And yeah, it really gave it a space to grow in a different way. Yeah, so you're not misremembering that at all. Good, because I thought I was taking crazy pills for a moment. No, not at all. So it's cool when you come across something like this that like you said self replicating because it's a tool for sharing the tool itself gets shared and of course because the results are really nice looking and everyone's used to sharing you know maybe a screen grab from their text editor or whatever we've been doing previously, you see a Carbon screen share and you're like, I want that. It kind of grows like wildfire.
Starting point is 00:07:29 But I'm curious if the contributor side, the community side, has grown alongside the user side. Because lots of times we see this discrepancy where the user growth on an open source project just skyrockets and the team just stays small. Or the one person, or sometimes in your case maybe three have you seen contributor growth alongside the user growth or has there been that mismatch there's we're definitely like a staple mismatch case and if you're reading working in
Starting point is 00:07:57 public by nadia right we're like the stadium case where a lot of people are looking at it but no one's really touching it i think that's totally fine and appropriate. Like an open source application maybe shouldn't have the same number of contributors as something like a library or framework. But yeah, contributor growth is not that high, right? Like, I don't know for how many users we have and how many stars on GitHub or whatever it is. There's only been like 100 contributors.
Starting point is 00:08:24 And when I think about it, like I'm stoked we have 100 contributors, but that's definitely a big mismatch from, you know, hundreds of thousands of users, which is fine. Yeah. Every single contribution that does come in, I get really stoked and revitalize
Starting point is 00:08:38 and like reimagine like the hopes of open source in general. And then we've had, I've had contributions recently that have been among the best contributions ever from just people just coming and discovering Carbon for the first time. And honestly, coming in and fixing bugs
Starting point is 00:08:54 that have existed since three years ago that I've never been able to solve, never been able to have the time or different perspective to take a look at that. And so that just always gives me energy to keep going, for sure. What's the state of the project? Is it still in quite a bit of motion? I'd imagine it started with a fairly simple goal, which is show off beautiful code and images, and that doesn't seem to have changed a ton. What is the trajectory of the project? What is
Starting point is 00:09:23 changing that requires sort of like when we think about projects maybe say kubernetes for example requires tons of complex changes a lot of hands whereas carbon you know to compare they're quite different in terms of projects but they're still open source and when we compare stadiums versus this or that in terms of this and these metaphors to compare projects in open source what's the state of carbon in terms of this these metaphors to compare projects in open source what's the state of carbon in terms of product or what it produces or the end result is it changing a lot or is it sort of static yeah it goes in waves it's a matter of taking a bunch of ideas and ask from users over time and then figuring out how that actually translates into a feature because like we want to be efficient with
Starting point is 00:10:04 how we we build these features out. For example, if people ask, I want to share this on my website, can you make publishing it to image or a thing or publishing it to this platform a thing? But maybe taking a step back, the right solution is to create an API or create a saved snippet feature. And so it goes in waves that way, collecting a ton of feedback from people,
Starting point is 00:10:28 use cases, talking to folks, and then translating that into new lower level systems that scale across more user problems. Because I'm the only developer maintainer on the project now. So I care a lot about sustainability of these features. If I'm going to push it public or create new features, I care a lot about the fact that those features will remain stable, even without much intervention. And so a lot of the contributions
Starting point is 00:10:59 I make in the interim is just cleaning up code, cleaning up bugs, making things, utilizing new technologies to make things even more stable, such that in the future, there's less intervention with these sorts of things. And it's really like a testament to how I, as it's kind of like a case study on creating an open source application that is self-sustaining in every mechanism of what you can imagine right so the code is continually getting compressed and using the right technologies for the right use cases so that it remains stable but also the app itself is hosted on now or which is free and we don't pay for a domain we don't pay for hosting we don't pay for any aspect of that thing which is very huge for the project because we don't necessarily want to have to rely on selling something in order to keep this app afloat we wanted to sustain itself
Starting point is 00:11:58 and let people utilize it as a public good and then the last piece there is like yeah we like in the last wave of what's next for carbon right i built a system of storing snippets so you could save later and then when you share those snippets on twitter or whatever they automatically unfurl and they can point they point back to source which lets you do a lot of things like you can remix uh snippets just like you would like github gists that sort of thing duplicate them edit them reference lines of text in them that and that was something that might have seemed obvious for a while but it was we were hesitant to maybe go that direction because there's a cost associated we need a database we need to store these things and we don't want the cost of that to actually hurt the project in the long run where we're we have to shut down things or roll back features or whatever it may be.
Starting point is 00:12:51 So very careful with our solutions there and make sure the project sustains itself. And so that's why we have a Firebase database and Firebase auth and things that scale for a developer team the size of what we have. So yeah, that has been our approach. So what's next, I guess, is there's definitely longer-term things we could easily do. The main thing that people request a lot is a Carbon API that lets you hit our API and get back an image so that you can use it
Starting point is 00:13:23 in some other way. And it's really funny that people like ask or ask for that. And more recently, in the last couple of months, people have like built their own, like third party APIs that, you know, scrape our website and return the images themselves. And the funny thing about that is like, we've always actually had an API, like the main functionality of the site doesn't work on Safari. So we've had to use an API that spins up headless Chrome in Safari for Safari users, hits the API, returns the image back to them. And so that's always existed. And we could release it pretty much at any time. But the thing about that is like like we're not sure we want to release it because
Starting point is 00:14:07 there's better mechanisms for sharing code than there are an image yeah right there's the save snippet idea which always has the alt text for accessibility it always points back to source so people can copy paste it easier you can use an embed which allows you to do like copy text buttons that sort of thing or like highlight the code which are all more accessible mechanisms than using an api to return just a static image and so that's our our hesitation is not that we don't want to give users what they want but we want to like create a tool that's actually good for the end users right the people that are consuming this code helping educators a way to share their code in a way that the end consumer will be able to consume it easy yeah that's really cool i never thought about all those little concerns of course you thought about this deeply and we've just used it so that's really neat
Starting point is 00:15:00 curious what that safari issue is like why can't Why can't Safari do some of the image creation side or what? Yeah, there's this weird thing where I think it has to do with how they handle foreign objects and SVGs or something like that. And basically the library that we use to translate an HTML chunk to an image, it fails in a low low level event in Safari. And so when we shipped to Carbon, Safari didn't work at all. And for like months, it didn't work. And so like our solution, because we knew this was like a low level browser incompatibility,
Starting point is 00:15:37 was to just like spin up Chrome in the background and fire the data off to a headless Chrome browser and then send back the snippet to Safari. That's how we get around it. Yeah, and that's been there for a long time now. We originally treated it as just like, you know, supporting Safari, but really we had to build like an API to replace the in-browser feature. That's a really cool hack. So in every other browser, it's just generating that image right there in your browser uh carbon isn't doing anything on the back end unless you're using
Starting point is 00:16:08 safari yeah and the goal there is like we want this thing to be completely offline capable yeah less back end the better right yeah you can download it like as a progressive web app use it offline it'll work on airplanes that sort of thing um yeah so that's that's part of the reason for that constraint for sure that's the best place to use carbon because you might be doing a presentation or something like that trying to get ready some code in there yes one of many best places at least but who flies anymore yeah yeah yeah exactly that's true touche it was a good idea at the time. People too, then they're like, write blog posts and that sort of thing on planes
Starting point is 00:16:47 or work on their presentations. So we definitely want to let them take advantage of it if they need. I had no idea you could run an offline like that. That's pretty neat. One of the things the tool does, which we haven't talked about yet, is you can customize the look and feel to the hilt.
Starting point is 00:17:01 You can pick the fonts. You can pick the colors. You can say if you want like the mac os chrome or you don't want that chrome or they're just like you can really trick these out to look exactly the way that you want them and i'm sure if you had like the offline app you could probably set up your config and like just leave it like that all the time if you have like your style and not have to go back is there also session state where you can store your settings maybe like in local storage or yeah are there accounts or anything like that it's grown over time so like at first we did
Starting point is 00:17:29 local storage so right if you're just not logged in and you're editing it it'll save your current state in local storage if you open up the app again it'll be the same and you can like reset it there's a button to reset it if you want to go back to zero. After that, we implemented URL storage. So it saves your current state in the URL for most properties. So if you wanted to create a theme or something or a specific config and then share it with people, you could just copy paste the URL and they'll have your theme instantly. After we had those two pieces in place, then we implemented an ability to export your current config and then import it, so if you wanted to share it as a file instead or something, or save a bunch
Starting point is 00:18:10 of them offline, you can do that. And then finally, late last year, we implemented profiles, basically, where you can sign in with your GitHub ID, create save snippets, which both save the code and the config in a single snippet, and you can always go back a single snippet and you can like always you
Starting point is 00:18:25 could like always go back to that snippet and then duplicate it if you wanted to always have the same theme there so yeah lots of different mechanisms for for saving state there y'all put a lot of work into this thing it's like a well-crafted like expanded over time right like progressively enhanced not in the way of a web app but but just in the way of getting better over time. That's really cool. So much work goes in behind the scenes. You don't even think about all these little features unless you're the one that's like,
Starting point is 00:18:50 I really want to save my config. And lots of us just, I just load up the website and I actually just reconfigure it each time and use it and I'm done. Grab my image and I'll hop out. Yeah, and that's totally fine too. Yeah, it doesn't necessarily have to grow like this over time, but it's been such a fun experience to see new people using it in new, unique ways. You know, back to the NASA story, back to all the other folks that share it and use it in their books or in their presentations or what have you.
Starting point is 00:19:21 That's what's been inspiring to keep moving forward with these features and there's like there's more we can do right we can make make a theme storefront that people can like share their themes public or whatever or all sorts of like that so there's there's more we can do we're not doing everything right right but it has been fun to just to be a maintainer honestly that's what gets me most excited about it it's like to have this thing that's in the public that lets us experiment with all sorts of facets, right? Like maybe unique business models we can experiment with. We can experiment with open collective. We can experiment with the cutting edge Next.js features.
Starting point is 00:19:56 We can experiment with how we maintain a repository. We have our own custom bot that's set up to merge pull requests and respond to issues and label things a certain way. And those are all things that we can work on in public, and that's what's been most exciting, is just to be the maintainer throughout all those
Starting point is 00:20:19 pieces of work. I think that's an aspect of open source that we don't maybe talk about so much, maybe because it's implied here on the change log, especially with Maintainer Spotlight. The freedom? Well, just how fun it is to create a thing and people find value in it,
Starting point is 00:20:35 and it gets better. You work on it, and more people use it, and you can experiment. I can tell you're having fun with this. And oftentimes, you know, we get to the point where it's a chore, or it's too much, or you're unsustainable. And like, what are the challenges, right? And like, all the complaints, and like, those are the things that we tend to talk about, because those are real aspects of being in open source as well,
Starting point is 00:20:59 right? Community, culture, all these things that are problematic or challenging. We talk about those things, because it's like, how do we figure out these challenges? But one thing we don't maybe say often enough, you know, why do open source? And a lot of times it's like, throw your hands up. Like, well, why am I doing this? Right? Yeah. If you're doing it to make, I tell people all the time, if you're doing open source
Starting point is 00:21:16 to make money, there's a lot more direct lines to money, right? There's much better use of your skills if all you want is money. But let's not forget why we are here in the first place either as users or maintainers or creators is like when you put something out into the world and people find value in it and it's fun and you can make it better and that makes that provides more value to more people i mean it's pretty rad it really is. Yeah. And the other piece there is like, I like being a maintainer in it so far is that I can empathize with what being a maintainer is like, because I'm very passionate about figuring out how we can support maintainers that have a much larger burden on themselves than I do. And it feels like it would be difficult for me to form opinions or try to find solutions for those sorts of problems without being a maintainer myself. That's a big impetus for me getting into that space. And yeah, because going back to what Adam said about freedom,
Starting point is 00:22:19 I'm very passionate about the idea that in the future, there are pathways for a career for that young developers to utilize open source as the mechanism for their creation and the way they could work on it full-time and maybe they don't like have a full developer salary and that stuff but they can make a stable living creating through these platforms because i think it does create a lot of aspects of a more equitable world when you're just utilizing open source as a delivery mechanism. And along those lines, in the future, I can imagine companies who have a mission and a mission that resonates with a lot of people. There's a lot of developers that potentially would love to contribute to that mission, but still want to maintain their freedom.
Starting point is 00:23:08 They want to maintain the optionality of not being employed somewhere, having the freedom to take advantage of their own lives and maintain their own schedules, but yet still contribute to these missions at large. And that's something I think open source has a stable foundation to help facilitate. And it is a matter of like figuring out how to fund it in the correct ways where people are appreciated for their work in some way. So what's your goal then with carbon? It started out as a, a way to save time from people essentially like put code
Starting point is 00:23:46 out there in fun ways but save somebody's a designer's time what's the goal now like it's evolved over many years so what's the situation yeah so in terms of like as a product it's kind of doing its job and if it never changed again, I think I would still be happy with it. And the reason I keep wanting to change it and maintaining it and pushing it forward is to act as like a public staple of open source. Like the fact that is that like, there's not too many products that are fully open source. And I wanted to act as that figure, that symbol for people that want to like operate their business or their product in a different way and still show that it can have reach, that it can have impact, that maybe in the future that
Starting point is 00:24:40 it can like make money, right? We're not like making money with carbon, not because it's open source, right? We're making, we're not making money because there's not really like potentially the right business model yet or something like that. But that's kind of always the goal with carbon is to like show a different way of doing, of making progress on something while being transparent, while utilizing these mechanisms
Starting point is 00:25:03 that don't really translate well in a closed source business. People can see all of our thought processes in public. They can see all the mistakes we've made. They can see the trade-offs that we're making explicitly in the code. And those sorts of things just don't come about when you have a closed source thing. And we want to be a staple that people can point to when they're considering, Hey, like I'm building a service, like maybe my front end should be open source so that people can understand
Starting point is 00:25:32 how it's being used, that sort of thing. Lots of different goals wrapped up. And a lot of it is just evangelizing open source as the right mechanism for getting things done. You mentioned open collective as one means you mentioned, you know, I guess details around business models you may or may not pursue or not being available now. Sometimes the problem or just the challenges is there's not an obviously
Starting point is 00:26:00 natural business model to use. And I haven't put a ton of thought into it because I, it's not my job to do so, I suppose, for Carbon, but maybe you have in terms of like, what are some of the naturally just obvious business models that could work and not change, I suppose, the potential icky factor between its users just so it can sustain? And I would say dovetail that with the fact that you have a full-time gig. You're not trying to make carbon your full-time thing. At least that's the aim of my original question was like, what's the goal?
Starting point is 00:26:31 So maybe you can kind of wrap a lot of that up with, I guess, less of a question, but more of an observation. I'm super glad you brought that up. There's lots of different business models you could imagine, right? You could have like a paid subscription for premium features. You could have like a paid subscription for premium features you could have advertising and like people have reached out about like advertising and carbon many times you could just do like a donation based model of some sorts through like open collective that sort of thing or you could have like an affiliate program and that's what we're
Starting point is 00:26:59 doing right now in a sense is like we have some affiliate links with some custom font creators some custom theme creators like xeno and i'm very excited about that option to start with right now right it's just like a few links and it links off to these people to to give people an option to buy themes fonts that sort of thing but if i was going to turn that into an actual business model i'm most excited about the idea that carbon as a page that developers or developers that love design or designers that love development come to a carbon money or anything, but it's going to help a lot of small creators, a lot of small creators that are creating beautiful themes, beautiful fonts, and maybe don't have, you know, a hundred thousand eyeballs every month. They can just put it up on carbon and, and have that sort of connection point. That's the business model I see
Starting point is 00:28:05 as the most mutually beneficial. Because right, we could toss up ads and make some money, but it's not going to make enough money to viscerally change my happiness and definitely won't improve the user's lives when using Carbon. And so this other thing I think
Starting point is 00:28:21 would be kind of like a better translation because one, I think it actually would kind of add value to Carbon. People could come to Carbon and see what's new. It's not so static. It's not just always the same screen every time. And two, I think that it would parallel well with helping small creators just like we were when we started Carbon out. We had no audience and we wanted to share this thing we made. That seems like the best business model for us to take it in a direction for, but still
Starting point is 00:28:55 figuring out how to do that, that fits well with the community. And like I said before, sustain that program going forward in a more self-serve way. That's what drew me to do this show because I saw that Dracula Pro was on Carbon. I'm like, that's cool. I can imagine its distribution for an indie creator like Zeno. And I see what you see, which is this could be a moving billboard, not so much that in terms of make money billboard, but more like an easy way because it's got a lot of interest and eyeballs using it on the daily.
Starting point is 00:29:28 Many engineers all over the world using Carbon. And why not show off Fira code and show off Zeno's work with Dracula Pro? And I don't know what else is beneath the surface because I haven't dove in and discovered, but I imagine it's an open opportunity now for, say, the designer behind, I believe it's Inter is the font. That's someone else we want to talk to around maintainer spotlights, like making this really awesome open source font that a lot of people are using. It's amazing. A lot of work, I'm sure, has gone into it. I'm assuming the story we'll hear from that.
Starting point is 00:30:00 But you get people like that behind there, and you got sort of a distribution channel for indie creators basically. Yeah, and right now it's kind of just like embedded in the product itself, right? We have affiliate links for Dracula Pro, for Mono Lisa, and for Dank Mono. A lot of monos. Never heard of that. What's Dank?
Starting point is 00:30:22 Yeah, that one's a font by phil out of formidable uh really fun font it's it's definitely unique and i i have that as like my default font on my editor still on my personal computer and so yeah it's like embedded in carbon right now and probably hard to find and i'm not sure many people even see it coming across like using carbon in their day-to-day but the next step then obviously is to like make a more centralized home for these links like make it like a marketplace where people can actually scroll through it and i would love to do that and i would easily put time into creating that It's just a matter of finding enough tools to showcase. I mean, right now we have three, right?
Starting point is 00:31:09 Like that doesn't make much of a marketplace. But if there was like a few dozen small creators that wanted to showcase fonts, their themes, their developer-focused tools, yeah, I would love to help them out. The Tidelift subscription is a managed open source subscription backed by project maintainers. If you're building applications with open source, Tidelift helps you ensure you have components that just work.
Starting point is 00:31:51 That includes comprehensive security updates, active maintenance, and accurate licensing. Tidelift helps you speed up your development, save money, and reduce risk when building apps with open source. And the best part of all, with the Tidelift subscription, you help open source maintainers like Nikita get paid for their work. Learn more and get a demo today at Tidelift.com. Well, we've been talking about business models, but each time you bring up a business model, you say, well, this one might not make money,
Starting point is 00:32:37 but it's exciting. And are there any moneymakers? Like advertising, you named a few, but do you feel like, is there a money maker in here? And if not, could this just be a thing supported by the community through GitHub sponsors, through Open Collective? I mean, you could go that traditional, non-traditional route. Yeah, absolutely.
Starting point is 00:32:56 I mean, like advertising wouldn't make money. It wouldn't make money on day one. Advertisers have reached out. Right now, that's a trade-off in the sense of it wouldn't make enough money to where it would change the trajectory of my life or give me more freedom or anything like that. And would maybe hurt the community a little bit or people's perspective on carbon. And so that's the trade-off that I'm making there. Right. Other systems, like creating a
Starting point is 00:33:27 premium version of it, I'm sure that would make some money, but has eng overhead trade-offs. And essentially that's going in the direction of not being able to sustain carbon long-term. And so that's why this sort of developer marketplace idea is the one that is the great middle ground for me i think it's sustainable i think it is in line with the people that use carbon helping like these small developers and designers that are self-starters that sort of thing and it's sustainable in a way where every dollar it does make is just additional. Like it's not something that I'm relying on. It's not something that, you know,
Starting point is 00:34:08 is eating up my developer time or anything like that. That's what makes the most sense in terms of a sustainability aspect. What about the donations route? You have open collective, you have other things going on. You have some backers, you have a sponsor. It seems like you have all the,
Starting point is 00:34:22 all the widgets turned on. Cause like you said, you're experimenting, which is, that's a great place to do it right what have you found through your experimentations on the donation front yeah uh the donation front is is cool like people have given not as much as or like not enough to make it like a truly like self-sustaining product or anything like that and so that was part of the experiment, right? It was like figuring that out. And we haven't like pushed on this that much. We haven't like shared publicly that we're like asking for donations much.
Starting point is 00:34:52 It's kind of just like, we've pushed it out a few times in newsletters and tweets, that sort of thing, reference it in the read me, all that sort of stuff. But I think, yeah, I think this comes down to like
Starting point is 00:35:02 the whole stadium aspect of Carbon. Like there's just way more users than there are people that feel like they're a part of the community or part of like the contributors. Even though we have 120 contributors, right. It's not, there's definitely a big discrepancy there in those things. And that,
Starting point is 00:35:17 and I think that was like a good insight for me to learn too. It's like, I've seen open collective make repos hundreds of thousands of dollars, but that's a very specific type of repo with a specific audience. They're more infrastructure projects. Exactly. Yeah. And I'm glad they make it because they actually do need dedicated engineers with salaries to maintain these projects. And I'm not sure Carbon is that sort of project that should have enough money to sustain a full-time maintainer. So I'm happy to have those dollars coming in
Starting point is 00:35:52 so that I can give it back to the community. I'm not doing anything with it besides using it for community-led things. Eventually, if we need to pay for any issues, we'll use that fund. If we want to create stickers issues we'll use that fund if we want to create stickers we'll use that fund if we want to create some other stuff we'll create that fund and then oh yeah we just crossed 25k stars today yesterday was 24k congratulations so we're gonna be sending out sending out stickers uh yeah thank you i just looked over right now i didn't
Starting point is 00:36:23 even like realize it um but yeah we're we going to be sending out stickers like to the community hopefully and so we'll use it for that well here's a crazy idea for you maybe you've thought of this one yeah I'll start with a metaphor an old old story in the olden days you go to the library you know and you maybe want to take a page of a book home. And so you go over to the copy machine, and you plop in 10 cents, and you make a scan, and it makes a carbon copy, and you take that home.
Starting point is 00:36:53 Curious if you thought about microtransactions. I mean, what if you just like pitch me a penny per image, or I don't know, maybe that's like antithetical to your goals, but have you thought about that? I mean, microtransactions could be a thing. I've thought about it, especially for the API. Because for one, like I mentioned before, not 100% convinced the API is a net positive thing
Starting point is 00:37:16 for consumers. And so if people want to pay to do something, to do that for some reason, maybe that's a more acceptable trade-off not really sure though yeah so i've definitely we definitely thought about it i mean we have like uh if you go into carbon some i think there's like a page buried somewhere that describes a premium version which is like something like that. They would get embeddable saved snippets, API access,
Starting point is 00:37:48 saved, offline saved custom themes and presets and then Twitter unfurls and we could extend the API further that way and that would be a premium feature. Maybe not microtransaction necessarily, although I do like what you're thinking there.
Starting point is 00:38:04 That would be a very cool system to have um but yeah some sort of like subscription model for getting access to that and yeah i mean building a subscription sas product nowadays it's like getting easier and easier with like you know all sorts of different platforms sasify like the stripes new billing portal like all like all sorts of stuff like that makes it easier. So that's definitely something I should revisit. See if I can use more of a self-service system in place. If you're taking feedback from the user base, is there any demand that gives you an indication
Starting point is 00:38:41 that that idea might make sense? Yeah. I mean, we've gotten a lot of people like asking for it but it's not something that it's like i need this so strong yeah it's not so strong that like like they ask it in a you know a get up issue or whatever or post it on twitter but it's it's not strong enough where you're like, hey, I need to build this platform out and put X more time into building the system. Especially when that time can be going into other things that don't make money and still help the community. I'm trying to be very cognizant of how we shape the platform going forward.
Starting point is 00:39:21 So that it always helps users. It always stays afloat. And it always has a it always stays afloat right yeah and it always has a home in the open yeah on the feel-good front i really enjoy this being distribution for indie makers i noticed as you mentioned affiliates you mentioned that as a business model earlier in regards to dracula pro there's a button next to that says purchase um is there a list anywhere where like i see you've got night owl in here from sarah drasner love that theme and it's super popular on vs code i saw something recently there was
Starting point is 00:39:52 some sort of fundraiser around i don't know what the details are but like there is no outbound link for night owl for example to like go visit it on the visual studio codes website where you can view it and see its source and maybe its home or any blog post that Sarah wrote about it, et cetera. It's like, how do you see the resources from a visitor discovery standpoint on CarbonNow? Yeah, that's a great point you called on. I guess that's what's solidifying my answer here is like, for all the links that we've posted there, it's been the third party led they've all reached out to me saying hey can we get this affiliated link on carbon like that will help me out that will help
Starting point is 00:40:34 my tool out and like yeah i would love to link to sarah's like fundraiser around night owl for sure i don't know maybe it just never came across my plate for for me to to lead that decision but if if someone wanted to put it up there i'm sure we'd be able to find a good home that fits well within the application for causes that we want to encourage right for tools we want to help out for for cause we want to encourage i mean we have like in the footer of carbon we have an offsets link that is maybe like a tongue-in-cheek play on the words of carbon offsets but it links to like project ren that lets people you know offset their carbon production through a monthly subscription And so that's like something where you're like, well, that's only tangentially related to Carbon, the tool.
Starting point is 00:41:29 But it was a cause that we saw, we had some opportunity to do something about and wanted to take advantage of that. And so like Carbon has that link there that has encouraged hundreds of people to go visit Project REN and hopefully start their own subscription. But Carbon also offsets its own yearly Carbon production through Project Ren as well.
Starting point is 00:41:54 That's part of what we use our open collective budget for, actually. In terms of distribution for indie creators, I wonder if you'll eventually run out of themes and need to promote themes too, or even font faces. I mean, what other creations could go into here that you point out to? As a marketplace, I wonder if that just has a certain threshold where it'll end.
Starting point is 00:42:17 Maybe it might promote a new language potentially because like, hey, you support a language and the dropdown in terms of formatting, maybe it's around things like that. But there's obvious growth there, but not like, you know. Yeah. It's cool that you say that. I'm like, I mean, the way developer tools are going these days that you build a developer tool,
Starting point is 00:42:35 you like raise VC funding, you create a new language, you, you have a whole, you know, round of venture capital funding in order to get your team off the ground. And so maybe that is a future where Darkling could have a little affiliate link in Carbon and we add it to that dropdown. Yeah, I can see there being a definite threshold. But the interesting part about these sorts of shapes of tools is that they're very temporal right like if it meets the threshold now a year from now nobody will want to
Starting point is 00:43:13 use dank mono anymore or people will be on to the new hotness or whatever and we can like shift it up there which is kind of what i like about the marketplace idea is that it's fresher. It gives people something to come and check out what's new. And yeah, I mean, I can see pointing to other things that maybe aren't so digital too. If there's other things that just developers and designers like, I could easily see pointing Carbon to that. As long as there's the right way to fit it within the product so it's not too distracting yeah i mean well you have a a core promise right like every product has a core promise and deliver that first so yeah i always say sell the need plant the seed
Starting point is 00:43:57 plant the seed is like how can i check out dracula pro in the behind the scenes core product and selling need is how can I get my code image to use Dracula Pro? You know what I mean? So don't distract. That's what I do like about this system too is that sure we're not giving, we might not make much money
Starting point is 00:44:17 on affiliate links, but by putting them on there, we get to enhance our own product with better themes. We get to use Dracula Pro. Dracula Pro is being used on Carbon. And we get to use these Pro fonts for free. And then we get to extend it to more people as well.
Starting point is 00:44:38 So that's another reason I like that sort of model. Even if it doesn't make money, which we're obviously not hurting for money right now as a product, at least we continually improve the platform. And affiliates like that are things that I'm definitely eager to try out. Would love to get some operator mono on there or other sorts of things that I know developers love,
Starting point is 00:45:03 but we can't put on carbon without having the creator sanction it. So those are some ways that you can extend the product to capture some value, but what about extending the product to create more value? So you said you want to enable creators and teachers to share code in ways that are more valuable and more accessible in all these different ways.
Starting point is 00:45:24 Have you considered moving images? Oh yeah, absolutely. We would love to do that. And it's one of the open issues right now. The cool part about that is someone actually created a prototype of it on Carbon on their own branch and it's up there right now linking to the issue. That's cool. And it says that you can record it and then you type and it creates this gif and they said that they were going to try to like integrate it back into the platform and i was like great we'd love that yeah like go for it and
Starting point is 00:45:55 that's where we've left it now and i'm like that's amazing like if if they don't get to it eventually maybe i'll get to it and like try to integrate their code back in seamlessly. But if it is going to be a contributor-led effort, I would love to have that be a thing, especially for such an amazing feature like that. It's something that I couldn't have imagined myself doing at first. And then someone just comes in and says, hey, I did this. Yeah. And they were an educator. I mean, they shared stuff to teach people on Twitter, and they wanted to use these GIFs. So yeah, it's a really fascinating idea.
Starting point is 00:46:28 Well, I see the need for sure. I mean, it's a really cool idea, especially refactoring. There's lots of reasons you'd want to show the code moving around, right before and after, maybe showing a type, or maybe showing an execute. You could probably fake that. Now, there is also like Ascii Cinema. I don't know how you say that.
Starting point is 00:46:46 Ascinima.org, which is like record your terminal and we'll turn it into a is that a movie i don't know exactly how they implement it but it's pretty cool yeah that's really cool we would love to make it so that it you know has not too many options we probably don't want to turn it into like a full-blown studio but like yeah definitely like click record and start typing and change your themes or whatever highlight some stuff like that'd be fantastic and people love to do that for like uh you know tech conferences and stuff so we'd love to help support them in that way too and that's an issue that you know at first glance i thought like hey like we're not going to support this. It's too much maintenance overhead. And then a contributor came in and built a prototype. And I was like, okay, maybe we should support this.
Starting point is 00:47:32 And I guess going back to why I love Open Source, that sort of transaction or exchange would never happen. It just wouldn't happen in a closed source company, which is really cool to see. It's way cool. Yeah, it's spectacular that like a you didn't maybe you didn't think about it sometimes like i didn't even think about that and then b or i thought about it but i didn't think i could pull it off and like here's the path to pulling it off now whether you can just merge that into your product or not or if you have to rewrite it with that as inspiration either way it served its purpose right and that's like amazing it is it's truly amazing and yeah if you go back to the issue
Starting point is 00:48:06 thread i think my initial response was just like yeah we're not going to do this like it would take too much time on my end complicated like i don't know if i can do it but then you know a contributor is like no i got it like step aside i can totally take care of this myself and i'm like that's fascinating in terms of you know know, distributed software development. But it's also just like a really cool thing that someone's willing to contribute that. Let's use this as an exercise then to maybe real-time vet how that feature ties into sustainability and the way you mentioned like works on a plane, you know side not back end like real-time vet that feature and like how that would change the sustainability trajectory of carbon right here live yeah so that's why i was saying we would want to keep it like pretty not featureful in a sense that like we wouldn't like
Starting point is 00:48:58 want to create a ton of different movie files or something and then like you have to have like an encoding server in the background and maintain all this infrastructure just to create a ton of different movie files or something. And then like, you have to have like an encoding server in the background and maintain all this infrastructure just to create a moving image. But there are things that you can do in the browser. Like you can create a GIF in the browser without having an internet connection. And so like, that seems like a perfect MVP for us to create,
Starting point is 00:49:19 get the feature out the door, let people start exporting GIFs or whatever, and still fits the rest of the platform, let people start exporting GIFs or whatever, and still fits the rest of the platform without too much overhead. Yeah, if we can keep it on the front end, we can keep it open source. We can fit it in with the rest of the code that's on GitHub, and people can run the bugs and then post the bugs themselves, fix the bugs themselves. And that helps a lot with the sustainability of of these sorts of features to post a gif of the bug on the gif
Starting point is 00:49:52 feature yeah exactly like ran into this export and using the tool itself to to post the bug about the tool yeah it might work might have maybe. Might work. Might be too buggy. That's an awesome open source success story there with that PR. In terms of other issues or user contributions or reactions, have you had any rough scenarios? Have you had any horror stories on the end? That's like the happy story,
Starting point is 00:50:21 but has there been any horror stories? Well, thankfully not, actually. That's good. happy story, but has there been any horror stories? Well, thankfully not actually. That's good. And it's interesting because I know that that happens a lot in other communities. And I do think about that a lot in terms of like helping sustain open source. I think it would be helpful for me to be a good example for what a maintainer should do in these sorts of situations. But I've never had to run into them. So maybe I'm not the right example yet. We have had some like amazing contributions recently that, yeah, like I said, like fixing a bug that's been there since day one,
Starting point is 00:50:57 like this contributor came in, first time contributor, fixed the bug that I had been staring at or like tuning and tweaking and fixing issues around it and just creating this mess of code forever. And he just comes in and fix it with a one line change and creates a pull request, like confirms that all of everything's still working. All these tests goes back through all the past issues that we were looking through, make sure those still all work. And then just like goes about his day.
Starting point is 00:51:24 And I'm just like, this is like a really incredible thing that really like reinvigorated what I think about in terms of open source. And another story there is just like, sure, they might be out of date at this point, but like Carbon's ReadMe has gotten translated to 12 languages. I can't even like feel how much value that's like actually giving because I don't speak those languages, but I'm happy that someone wanted to do that and potentially gave at least a description of what carbon is to so many different readers. I mean, it has done something because you can look at the map of wherever people are accessing carbon from, and it's global, right? It's people across the world.
Starting point is 00:52:04 That's awesome. Those are the contributions that are's like people across the world so that's awesome those are the contributions that are really fun to see yeah that's great not too many horror stories though thankfully yes hey that's a good thing what about uh tools and techniques so as a maintainer of a stadium style project you're one to many kind of guy do you have any tools of the trade like things bots that you've written or things that you say i couldn't live without this service uh when it comes to maintaining carbon yeah so i mean the two main things that like had just kept carbon like a free platform is like using like now which has like a free tier that just like lets people like me create stuff i'm totally happy
Starting point is 00:52:43 with that being a thing i mean it's it's like carbon.now.sh. So like it's a total, it's a fine trade off there. And then Firebase is another thing that like, really, I don't think we could have like this stored infrastructure in place without that because it's very pluggable. But yeah, beyond like for maintaining stuff, tools and that sort of thing
Starting point is 00:53:05 i built a bot called repo ranger repo ranger.com and that's like a bot dedicated to helping alleviate some of the burden of being a maintainer it's very much stems off of my needs but i'm building it with maintainers in mind and I would love to like add features to that bot if other maintainers had them. But it helps do tons of common interactions, right? Like it merges a pull request for you as soon as the build's done. So you don't have to watch it. It closes like a duplicate issue if you add a duplicate label, but only after a certain time so that like it does this like sort of like manual interaction that a lot of people don't like when it comes to bots. But the way we do it is like,
Starting point is 00:53:49 we don't close it in your face. We just say like, Hey, we are going to close this in the future and give people a chance to respond and say, Hey, I don't think this is actually a duplicate. I don't think this is actually the sort of thing you're, you're seeing it as. And we see that as an acceptable trade-off between keeping a friendly attitude towards our contributors, which we appreciate, and also automating some of the maintainer burden away. It does a few other things too that we automated comments
Starting point is 00:54:14 just to keep things consistent for some of the issues that we don't want to fix or can't fix at the moment. That's one of the main custom I guess, custom tools we use. Besides that, we use the all contributors bot to add contributors to our readme. And the fun thing about that is those bots actually talk to each other.
Starting point is 00:54:35 So all I do is I add a label, I go away. It merges the pull requests, then it'll add the contributor as a contributor to the product, which the all contributors bot opens a pr and then that pr is automatically merged by the other bot once the build passes and it's all like pushed into the same thread without having me having to look at it and we have a couple pieces in there that is like kind of hooked together with GitHub Actions. So that's the last piece that kind of fills in the infrastructure. That's super cool.
Starting point is 00:55:09 We use all contributors bot, but I always have to tell it what to do. And then it emails me telling me that it did what I was supposed to do. And then I get the email about the PR that it opened. So basically every time I add someone to our list, I get three emails. And I would rather just apply a label. So I'm going to have to look into that. Yeah. And take a look at carbon's, I guess, get up actions workflows because we have workflow in there that says, Hey, if you add a contributor label, it'll automatically add, uh,
Starting point is 00:55:39 the comment for you. It says like, add this author as this person or whatever. And then it adds the contributor label to the new pr and everything just kind of works together that way um still would probably get emails but haven't solved that one yet but uh everything else is pretty streamlined and even if sometimes it doesn't necessarily save me time it feels fun to see it all working together yeah you're so happy that you got robots talking to robots yeah i mean it's just like a fun yeah it's a fun thing to see happen in the background to fully appreciate that you have to have done it manually for a while though
Starting point is 00:56:16 yeah because i mean getting boss to talk together is pretty fun but like pushing one thing or making one comment or updating one label and orchestrating what you had once done manually is like that's a feeling yeah for sure it's cool because like i mean by using labels that's the reason why repo ranger works around labels for the most part and and uh other text-based things like well it lets you configure it but it also like creates this paper trail of like and the system that's like visible about how people coming into the project expect the product to operate like new maintainers to carbon eventually or something could like look at my labels and the descriptions of them and see
Starting point is 00:56:55 like, Oh, this is kind of like how this repo is governed. This is like a tangible thing to point to, but how maintainers should operate in carbon. And it also lets people like, you know, This is like a tangible thing to point to, but how maintainers should operate in Carbon. And it also lets people, like, you know, they can open a pull request from their command line and add a label with the same tool in the command line and never even open up GitHub. Just like have it all completely automated, but still have the paper trail that is GitHub. In the pre-call, you mentioned being halfway through Nadia's book, Working in Public, which we just put out an episode with Nadia on, episode 408. And in regards to that, you mentioned you're halfway through that episode too.
Starting point is 00:57:35 So maybe less micro, more macro on open source. What's changed for you? I guess reading that book and listening to half that podcast, you'd mentioned some big shifts in your mind in terms of open source, big ideas. What were those? Yeah. The thing I'm most excited about in terms of open source big ideas what were those yeah the thing i'm most excited about in terms of nadia's book is well for one it's reaffirming a lot of the thoughts that i've had for a while which is that open source doesn't necessarily have a contributor problem that there's a lot of other problems in terms of funding and attention and that sort of thing that is still definitely not the public opinion there's still many people building out platforms that help projects find contributors and that's not the main problem of open source so that's the main thing i'm i'm excited to be affirmed by by the book but as a book i'm most excited is about her like anthropological approach to writing it to taking
Starting point is 00:58:29 ideas and putting labels on them categorizing things giving reference points and for things to have further discussions on it yeah this is what i was telling adam is that like that's why i'm excited there's the podcast coming out Cause that's another data point that referenced back to this book that references all of these stories. Uh, and we had this like linkage now for us to build upon a common narrative that will help, I think, set the course for like what we need from an open source industry, right? We need to have the main problems be the problems people are aware of. And that book does a fantastic job at categorizing them and figuring out, hey, stadiums suffer from this issue where federations don't.
Starting point is 00:59:12 And clubs maybe have this other sort of things that we can pour a different sort of resourcing into. So yeah, that's been the main thing that I've been excited about in response to the book. You mentioned in the pre-show also to bring some of that into this actual show, being a fan of request for commits which episodes have you listened to which ones are your favorites so far oh man i would have to go back and look it's been a while uh i can't remember off the top of my head to be honest i'll put him on the spot well he'd mentioned
Starting point is 00:59:38 uh listen to a few and i mentioned the finale and that there was a 20-episode series. And I shared, Jared, that I had some, I guess, mourning, so to speak, that that show has an end. Would love to see it come back someday. He talked about that. I'm like, well, it's actually done. But it's still getting plenty of listens. And if you haven't heard of that yet, request for commits is at changelog.com slash RFC.
Starting point is 01:00:01 Link in the show notes. And episode 20 was the finale. Yeah, I remember listening to the one with Henry, but I don't remember which other ones off the top of my head. But yeah, love hearing ideas from the both of them, actually. Henry's a fantastic model for what it is to be a maintainer. And honestly, I'm glad he can serve as an example for what I hope people can aspire to in the future,
Starting point is 01:00:27 which is making a career, creating open source, not sacrificing a salary for building this thing that everyone relies on. So I'm glad he can be there to be one example of that. And I hope we tell stories and share narratives in a way where in the future, that's more of a commonplace thing and not something that is just lucky or by chance. Actual kids going through college can be like, yo, I want to be an open source developer as my career. And there's these steps to do it.
Starting point is 01:01:01 I get into these systems and I learn these skills so that they can, you know, build software in a different approach. Because open source is sometimes the right way to do it. You shouldn't have to trade value, trade money to do it in the right way. Well, Mike, thanks so much for sharing your time today and sharing your story most of all. And I appreciate you being an awesome open source maintainer and someone that people can look to for advice wisdom and uh how to do things right man thanks so much for your time it's been awesome oh thanks so much for having me this is a lot of fun feel free to have people reach out anytime love to help yeah thanks for chatting y'all this is awesome thank you for listening to this maintainer spotlight episode co-produced with our friends at tide lift you
Starting point is 01:01:44 heard mike singing the praises of nadia Ekbal's new book, Working in Public. It just so happens that we have three autographed copies of the book, and we're giving them away to lucky ChangeLog++ members. What's ChangeLog++? Hey, I'm glad you asked. It's our new membership program that we soft-launched this month. Support our work, get closer to the metal, make the ads disappear, and get in on cool giveaways like this one at chainjaw.com slash plus plus. We're picking winners for the Working in Public giveaway on September 1st, so act now. Special thanks to Mike Fix for coming on the show, to The Beat Freak, Breakmaster Cylinder for our excellent music, and to our longtime sponsors,
Starting point is 01:02:22 Fastly, Linode, and Rollbar for helping us do what we do. That's all for now. We'll talk to you again next time. Bye.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.