The Changelog: Software Development, Open Source - Darklang Diaries (Interview)

Episode Date: February 26, 2021

This week Jerod is joined by Paul Biggar the creator of Dark, a new way to build serverless backends. Paul shares all the details about this all-in-one language, editor, and infrastructure, why he dec...ided to make Dark in the first place, his view on programming language design, the advantages Dark has as an integrated solution, and also why it's source available, but NOT open source.

Transcript
Discussion (0)
Starting point is 00:00:00 This week on the ChangeLog, Jared is joined by Paul Bigger, the creator of Dark, a new way to build serverless backends. Paul shares all the details about this all-in-one language, editor, and infrastructure, why he decided to make Dark in the first place, his view on programming language design, the advantages Dark has as an integrated solution, and also why it's source-available but not open-source. Big shout-out to our partners Linode, Fastly, and LaunchDarkly. Linode is our cloud of choice. Check them out at linode.com slash changelog. Our bandwidth is provided by Fastly. Learn more at fastly.com.
Starting point is 00:00:33 And our feature flags are powered by LaunchDarkly. Check them out at launchdarkly.com. Linode is simple, affordable, and accessible cloud computing the developers trust. Linode is our cloud of choice. We trust them, and we think you should build anything you're working on, a fun side project, or that next big info move at work with Linode. The best part, you can get started on Linode with $100 in free credit. Get all the details at linode.com slash changelog,
Starting point is 00:01:04 or text changelog to 474747 and get instant access to that $100 in free credit. Again, leno.com slash changelog. I'm joined by Paul Bigger. You're a founder of CircleCI, and now you're working on Dark, which is a combined language editor and infrastructure to make it easy to build backends. Paul, welcome to the ChangeLog.
Starting point is 00:01:40 Thanks so much for having me. Happy to have you. Well, tell us the story. Start us off from CircleCI to Dark. Yeah. Thanks so much for having me. and how difficult it is to add cloud into them. Looking at how teams build things and looking at how hard it is to build your own internal tools because every internal tool that you build is infrastructure that you now need to support and maintain. All these ideas were fermenting my head
Starting point is 00:02:19 around 2013, 14, 15. Then I left Circle in late 2015 and I was massively burnt out. Startups are hard. And made lots of mistakes as a first-time founder that led to more incredible burnout. So I took 18 months off. And then towards the end of that,
Starting point is 00:02:41 I started thinking, what is it that I'm going to do next? A lot of the things that I thought might be cool to do, a lot of startups that I thought might be fun to build, that kind of thing, they all had this infrastructure component. If I'm going to build a small company, a one-person company, a two-person, five-person company,
Starting point is 00:03:00 I don't want to spend all of my time dealing with AWS. That kind of thing. And so all these ideas just kept pointing me back to this other idea I had, which was Dark. And so it kind of got to the point where I just couldn't stop thinking about it. And so that's what I decided to do next. So you have these three aspects of Dark
Starting point is 00:03:18 that you say in the tagline, right? It's a language, it's an editor, and it's infrastructure as well. So building a language is hard, making editors an editor, and it's infrastructure as well. Building a language is hard, making editors is hard, it's also hard, but even conceptually, what's the win of combining these, usually disconnected aspects of coding?
Starting point is 00:03:39 It's kind of funny, we find it really hard to describe what Dark is. As you say, it's a program language, it's an editor, it's infrastructure. Soon it'll be a package manager as well. A lot of people have the why. And the why is what dark is not. So the thing that dark is not is it's not setting up Kubernetes. It's not setting up serverless.
Starting point is 00:03:59 It's not CICD pipelines. There's in fact a zero second deploy in dark. There's, in fact, a zero-second deploy in dark. There's no waiting for 15 minutes or whatever. There's no AWS. I'm just trying to think of all the other things that we have to do. There's no YAML files. Databases, queues, all that sort of thing.
Starting point is 00:04:20 It's all just built in, and so you don't have to think about, oh, where am I going to spin up this thing? How am I going to get the code from here to here? It's all just handled for you. The way that we're able to do this is by integrating all the things. Because if you say to someone who's using a standard AWS setup, it's like, we would like deploys to be zero seconds.
Starting point is 00:04:42 They're going to say, well, that's not possible. That makes no sense. We have to do tests. Maybe they do staging, or maybe there's an integration test, or there's a QA. There's something in the way to sanity check. You actually have to build in all this additional stuff to make sure that this thing actually works when you deploy it.
Starting point is 00:05:01 You can't do that with languages that aren't designed for it. I don't just mean languages here, but I mean the language, the editor, the infrastructure. It's all sort of designed for this purpose, and other languages and editors and infrastructure are not designed for this purpose, and so they don't have these features. So can you tease it apart? I know it's tightly integrated, but can you use Dark, the language, without using Dark, the editor? No, absolutely not.
Starting point is 00:05:27 It's all the whole kit and caboodle. Yeah, and that's the advantage. To give you a couple of the reasons that people like Dark, one of them is this thing that we call deployless. It's an instant deploy of any code that you write. And obviously that sounds dangerous. We perhaps have memories of writing PHP in 2001, where it just didn't work to edit and Vim
Starting point is 00:05:51 on these shared VPSs that we had at the time. So Dark is designed around this. It's like, okay, well, edits have to have atomic units. It has to be impossible to have syntax errors. And that's where the editor comes in. So the editor is the thing that enables that. But the editor, in most editors, you can have syntax errors. You can type whatever the hell you like.
Starting point is 00:06:14 So Dark's editor is a structured editor, which doesn't allow invalid syntax. And it significantly reduces the amount of times that you can introduce problems by typing. And so that's a place where you have an editor and you have a language and they enable the playlist thing and that just wouldn't be possible without having the editor, the infrastructure,
Starting point is 00:06:37 and the language being all part of the same thing. I was going to say, no syntax errors. You obviously never see me write code because I can find a way. But apparently the editor just says, no, that's just not going to... No syntax errors. You obviously never see me write code, because I can find a way. I can find a way. But apparently the editor just says, no, that's just not going to, well, you just can't hit the key, or how does it work?
Starting point is 00:06:52 It isn't text, right? Most programming languages, they're text files, and then there's a parser that parses it. In Dark, when you type in the editor, everything that you type is a valid part of the program. And so you might think, oh, what happens when, it's sort of easy enough, I put in double quotes and that's a string and then I type in the string and it's fine and you can't type outside the double quotes or whatever.
Starting point is 00:07:15 But when you think about a function call or something like that, what happens if I press backspace on the name of a function or something like that? We have this concept called partials, where while things are invalid, the old behavior remains so that you get an atomic switch from the old behavior to the new behavior. And then the major thing that we have to enable that sort of change is called, well, they're feature flags, so very common things. They're specifically integrated into the language to give you a new place to write new code
Starting point is 00:07:45 without affecting the old code. So basically, just lots of safety rails built into the language itself. So what is Dark's sweet spot? Is it web apps? Is it CLIs? Is it games? What typically would you build with Dark? I think the truth is today that there is no sweet spot. And this is something that I've come to realize over the last year that dark was not quite ready for anyone and
Starting point is 00:08:09 i think that that is still the the case today so really the you know kind of people who are using it today are people who are experimenting or they're building small tools or something where there's you know people often build slack bots um or or they build something that that integrates a couple of services. Where we intend to get to is that you will build everything in Dark. Everything can be built 10x easier with these things, but we still lack a lot of things that you actually need in order to be able to do it, such as things like user management and package managers and that sort of thing being built in the way that the Rails ecosystem has device and OmniAuth and all that sort of thing.
Starting point is 00:08:51 So you began it 2016-ish. It's 2021. It's in private beta. It's a long road and it sounds like you said it's still somewhat experimental. You're still trying to flesh things out. When you started Dark, did you know the long and windy road that was in front of you, or did you think it would be an easier thing to tackle? I didn't.
Starting point is 00:09:13 We officially started in about 2017, late 2017. It's been a little over three years now. We expected it to be much, much quicker. But what Dark was in the early days has changed significantly. In the early days, Dark was sort of a nodes and edges sort of thing, where you dragged things and nodes were functions and the edges were the results of those functions. And we were experimenting with lots of different ways to be able to write code.
Starting point is 00:09:46 And all that got discarded and went to things that looked a lot more like what people expect coding to look like. But we managed to keep the advantages of what we were looking for. That deploylessness, and I'll talk probably later about liveness or live values, which are this other amazing thing that you get from integrating those three things. There's been a couple of major inflection points. When we got our first user really building something,
Starting point is 00:10:12 when we got the first person to build their company on Dark, when we built a new editor and suddenly people were going from, I can't use this thing at all, to, oh yeah, I understand how to build in this. I think that the next major inflection point is when there's a package manager and people can instantly use third-party vendors and Stripe and Twilio and all that sort of thing directly from it.
Starting point is 00:10:39 But yeah, it's been a long road for sure. It's a platform that this journey will never be done, I suppose. Right. Yeah, but think about this concept concept recently because motivation is so perishable. And that old Thomas Edison saw invention is 1% inspiration, 99% perspiration. I just thought about how hard it is to persist and to persevere on an idea over time. The moment of conception is amazing. That's why so many people have domain names that they never use.
Starting point is 00:11:06 We tell our friends that sometimes that is enough to satisfy the idea and we never follow it. Sometimes we go a little further down the road and we hit troubles. Watching somebody persist through on a vision, we were just talking with
Starting point is 00:11:20 the founder of the Open Source Ecology Foundation on the last episode. And I mean, he's got this eight-year vision and he's 10 years into it. So like an 18-year vision. And I wonder with you, it sounds like these inflection points maybe help,
Starting point is 00:11:35 but how do you renew motivation and when it's like days go by, weeks, months, years, and you're still toiling away towards this end. Does it sound like maybe you celebrate some small wins along the way, or what? I think the main thing is that I take the motivation from users. We have about 7,000 people who have tried Dark,
Starting point is 00:11:57 and it's a small community that have stuck around on our Slack. There's 40 or 50 people whose names I know. There's a couple of people I talk to regularly. And there's new people coming in all the time and they have problems and things that they can't get working or ideas that they have. And those are the things that lead to motivating.
Starting point is 00:12:19 And often there's this sort of idea in software development that you should do the most important thing. You should always be doing the most important thing. What I've been finding over the last few months in particular has been that you should do the most motivating thing instead. I have a bunch of Post-it notes on my desk and it says, do work that's exciting
Starting point is 00:12:43 as opposed to necessarily doing work that's the most important thing. When a user tells me, oh, I really need this fix, and I'm like, that's a priority 12 bug that will never get done, sometimes I'll just fix it right there because it brings that sort of, the endorphins of doing a thing for another person, even if it's not the most important thing. I like that. In order to stay motivated, especially on a project like this,
Starting point is 00:13:06 do things that excite you because those by definition are motivating or you already are motivated. Work on what you're motivated about. It's almost like intelligent procrastination. It's like picking the right things in order not to burn out because you've been through the burnout before.
Starting point is 00:13:25 Are you familiar with that structured procrastination manifesto? No, I haven't heard of this. Tell me about it. It's a thing written by some college professor. I'll look it up so you can put it in the show notes. The idea is basically that whenever you have a really important thing, everything else looks a lot more exciting. So you use that most important thing to focus on things that you would not have done if they themselves were the most important thing.
Starting point is 00:13:51 So you have a deadline coming up, that's an excellent time to grade student papers. Or whatever else is. That's a thing that I have used since I was in grad school to actually get things done. It's like, I don't feel like that, but there's 12 other things that actually have value. And if I ignore the value and just sort of look at the excitement, I can probably get through them. friends at LaunchDarkly, feature management for the modern enterprise, power testing in production at any scale. Here's how it works. LaunchDarkly enables development teams and
Starting point is 00:14:29 operation teams to deploy code at any time, even if a feature isn't ready to be released to users. Wrapping code with feature flags gives you the safety to test new features and infrastructure in your production environments without impacting the wrong end users. When you're ready to release more widely, update the flag status and the changes are made instantaneously by the real time streaming architecture, eliminate risk, deliver value. Get started for free today at launch darkly.com again, launch darkly.com. so language design is something that always has fascinated me and here you are designing a language i like the way you said it's like more about what it's not than what it is and i feel
Starting point is 00:15:21 like programmers over time as we experience different languages, we know what we don't want, right? And we know what we don't want to handle and deal with, such as deployments and backups, perhaps, and all these things. But it has to have some paradigms for itself. So how would you describe Dark? Is it like an FP thing?
Starting point is 00:15:37 Is it object-oriented? How does the typing work? Give us the lay of the land, what design choices you made with Dark, the language. Yeah, well, I think the first thing I'll say is that Dark is incomplete. And so lots of what I'm about to describe are not necessarily fully there. Often there's some of it, but not all of it. So I'll describe the aspirational version. But it's an ML. So the specific subset of functioning languages that includes Elm, OCaml, Fsharp. Technically not Haskell, but actually it's similar enough.
Starting point is 00:16:08 And I guess Scala has some influences from that as well. If you're familiar with Elm, it's sort of Elm. And the reason that we chose that is, one, the liveness feature that I alluded to earlier, the idea that you can always see a value for the code that you're editing, works really well in immutable programming languages. So languages where the values are not updatable in the way that they are in object-oriented languages. And this is a common
Starting point is 00:16:36 feature in functional programming languages. And people have taken it other places as well. So there's a lot of frameworks for JavaScript that are immutable for example. And React and functional reactive programming, all sort of related to that world as well. So that was one reason to do it, because it fits in well with this liveness feature that we wanted. But the other reason to do it is that just immutability helps you think about programs. Because things never happen over there. They always have to happen in a place that's very obvious that it's happening. So that kind of is the major thing that I love about Dark.
Starting point is 00:17:11 And in every language that I've really used over the last decade, I used Clojure a lot at CircleCI. Dark is written in OCaml, it was written in Elm, it's now being rewritten in Fsharp. But all of those are immutable functional languages. And it's really, you know, I find it just the easiest way to actually write programs. Go ahead and unpack that live feature for everyone, because I think I'm picturing it, but I'm surely you can describe it with words better than I can. Yeah, how it works in my head. So in your editor, you've got this line that says,
Starting point is 00:17:46 let my variable equal name. When your cursor is over the word name in the text, at the left of the text, it shows you the string Paul. Because that was the request that was made a couple of minutes ago. We call them traces. When a request was made, a trace was recorded, and every value throughout the program is either recalculated or is stored. And so whenever you put your cursor over something, we show you the actual value that was there
Starting point is 00:18:18 recently. So if you ever open a bit of code that you haven't looked at in quite some time, or that someone else wrote or you're unfamiliar with. And you have no idea how it works. It's adding a couple of things, it's concatenating them, it's doing some substrings. It's like, why is it doing this?
Starting point is 00:18:35 And it's like, well, you put your cursor in it, you see a value. It's like, oh, I see exactly what they're doing. This only works on strings that has hyphens and it's removing the first four characters of it because that's what exists before the hyphen. It's like, in all these traces, I can see this. That kind of thing.
Starting point is 00:18:50 So you can think of it as a debugger where you never have to actually turn on a debugger, or you can think of it as printf debugging where you never have to add in the printf. It's just any time, at any point that you want to see a historical value, a current value, a test value, whatever, you can see it anywhere in the program with no instrumentation.
Starting point is 00:19:13 So does that allow a similar to, I think that Redux made popular, kind of the rewind debugging where you can step through different states? Or is it always just like the current? You said at any time. How do you manipulate that time? Well, because it's immutable,
Starting point is 00:19:31 there isn't really a time component. So in Redux and in the Redux debugger, really what they're showing you is the old state and the new state. Yeah, they're modifying the state. Those are actually independent values. It's actually a list of states and it's just showing you where they've been historically
Starting point is 00:19:48 because the new state never changed the old state. Those are different values. And that's the immutability of Redux. And it's exactly the same thing in Dark. If you've got an old value and you update it, I just did air quotes, which you can see in the Zoom, but your listeners won't be able to hear. Yeah, you had to verbalize your air quotes around here, please.
Starting point is 00:20:07 So yeah, if you have an old value and a new value and there's an update in between, you'll be able to see the value of the old value, you'll be able to see the value of the new value, you'll be able to see some intermediate values as well. So yeah, very similar to the Redux thing. If you have used Redux's debuggers and that sort of thing, and you understand why they are awesome, then you will understand why Duck is awesome. Okay, very well said. One thing I caught on
Starting point is 00:20:32 to there is you mentioned that it's had a few rewrites along the way. Elm, OCaml and now Fsharp. Can you share some of the insights into why the language switches over time? Yeah, so in the early days, we wrote it in technologies that made sense at the time.
Starting point is 00:20:51 So for the front end, it made sense to write it in Elm because I was familiar with Elm. And also because a lot of what we were doing in Dark was we were building our own thing. We weren't building a SaaS app. So reusing a lot of existing ecosystems wasn't as valuable as it was to have the Elm-like language. And after a couple of years,
Starting point is 00:21:12 Elm made a couple of changes. They removed some of the things we were using, and we realized that this is a little bit of a dead end. I wrote about that at the time. And I wrote a compiler to switch from Elm to what was then called BuckleScript,
Starting point is 00:21:26 which is now called Rescript. Oh, wow. Talk about working on what's exciting. You must have been like, I'm going to write a compiler today. Oh, yeah. I mean, Ian Connolly, who worked with Dark, you sort of made this joke that, you know,
Starting point is 00:21:36 the answer to everything is not another compiler. But honestly, for me, there's a bunch of... In this case, it was different. We've written so many compilers in... There you go. Stick to what you're was different. We've written so many compilers. There you go. Stick to what you're good at. One or two compilers a year basically.
Starting point is 00:21:50 And that's actually completely true. I just wrote a That's actually completely true. Yeah. Anyway. What was I talking
Starting point is 00:21:56 about? Oh yeah. Switching from Elm to Rescript or Buckle Script which I've never heard of either of these things so please do tell.
Starting point is 00:22:04 Have you heard of ReasonML? Yes I you heard of ReasonML? Yes, I have heard of ReasonML. Okay, so those are all the same thing. And they have a branding problem over there. But they've attempted to solve the branding problem by calling it Rescript. But somehow ReasonML remains a new thing
Starting point is 00:22:21 that is not the same thing as it was. It's very confusing. It's all Rescript now. So that was the front end. A new thing that is not the same thing as it was, it's very confusing. It's all re-script now. So that was the front end. And then the back end was originally written in OCaml. And OCaml, it's a really wonderful language with a lot of bad things in there that people just sort of ignore.
Starting point is 00:22:37 There's an entire object-oriented thing in there that people just don't talk about. Don't use that. Yeah. OCaml, the good parts. Yeah, yeah, for sure. And we've been using OCaml for a couple of years and there's very good reasons for using OCaml at the start. One is that it's super performance,
Starting point is 00:22:54 very high performance. Another is that it's immutable. So instead of having to write all these immutable libraries and so on, we just use the built-in stuff directly in the dark implementation. But the ecosystem isn't very large, and we often struggled with looking for encryption libraries or using vendor SDKs.
Starting point is 00:23:19 They just didn't exist in OCaml. So a couple of months ago, weighing up, what should I be doing next? Where is the focus? And recognizing that the states that Dark is at is not one where we have a lot of resources. And so it made a bit of sense at the time to actually make deep technical investments like that, like doing a rewrite. I thought we were going to switch to Rust. I was sure. We've been talking for years about the Rust rewrite. The tractor beam is strong.
Starting point is 00:23:46 Oh yeah. So I did I wrote a series of blog posts on it that were big on Hacker News for a couple of days. And I experimented with Rust and I did not like it. This does not map to how my brain works.
Starting point is 00:24:02 That's how to go to the front page of Hacker News. Yeah, exactly. And so we didn't pick Rust. Not because anything is wrong with Rust. Rust is very good for what it is good for and it turns out that dark is not in that sweet spot. You know what's an amazing truth that we often ignore is not every language is for every person.
Starting point is 00:24:21 Right, right, yeah, exactly. You were asking me earlier what dark is good for and I said, right. Yeah, exactly. I mean, you were asking me earlier what dark is good for, and I said, oh, people use dark for everything. But you're never going to use dark for embedded systems. You're never going to use it for the high performance, writing a decompressor or something like that. For everything means in the niche of general purpose,
Starting point is 00:24:39 cloud backend sort of things. Yeah, fair enough. And then, yeah, eventually settled on F Sharp. So we're about two months into the F Sharp rewrite and most of it is done. All the difficult questions have been answered. There's just a lot of fleshing out to be done. Did you also write about that choice?
Starting point is 00:24:55 I did write about it. Short version is, F Sharp is OCaml backed by.NET. So a huge ecosystem and the ability to reuse C Sharp things and high quality tooling by Microsoft and so on. But it's the same. If the drawback's for you with OCaml was the ecosystem
Starting point is 00:25:13 and F Sharp solved that problem plus it's a lot like OCaml then it sounds like a win. It's not even a lot like OCaml. These languages are twins. They are pretty much the same thing. Very cool. Well, we'll definitely link up to those deep dives
Starting point is 00:25:27 as I'm sure people who are interested in language choice, as we all are at certain times in our career, like when we're deciding to switch to a language, would love to hear the deep dive on your insights there. But keeping the focus on Darklang and not so much other langs, I think the one seminal moment for many languages is when they're written in themselves.
Starting point is 00:25:47 And it seems like dark isn't quite there yet. Is that a thing that you want to do eventually, dark written in dark? Or do you think it actually doesn't make a fit for itself? I've thought about that over time. What would it mean for dark to be written in dark? There's sort of an obvious one of the bootstrapping where in another language it might be the compiler can finally compile the compiler
Starting point is 00:26:08 and you can stop using the other compiler. And I thought about, okay, so for Dark that would be there's one service and it's hosting this other service and that actually doesn't make that much sense for Dark. It's just sort of like introduces risk and that kind of thing. And dark is fundamentally a hosted platform. And so introducing that sort of infrastructure risk
Starting point is 00:26:30 doesn't make that sense. What we're doing instead, we talked a lot about dark in dark and we do it in quite a lot of places. So the user flow is in dark and emails that are sent out are in dark. A lot of the collaboration stuff is written in dark. Some of the tracing is written in dark. I'm about to rewrite some of our static out are in dark. A lot of the collaboration stuff is written in dark. Some of the tracing is written in dark.
Starting point is 00:26:46 I'm about to rewrite some of our static asset stuff in dark. So anything that's like the core language itself and the core of the system is in dark. And if this breaks, we would not be able to recreate it is not written in dark. Sorry, I think I said this backwards. I think I said the core is written in dark and the core is not written in dark. Sorry, I think I said this backwards. I think I said the core is written in dark and the core is written in not dark.
Starting point is 00:27:08 My brain parsed it the correct way. I'm with you. I think that's wise because any language or ecosystem that wants to be general purpose and relied upon by many people, it has to live in the real world, I think, at a certain point somewhat early on in its life so that it's rooted in reality because we can you know tend towards what the maybe
Starting point is 00:27:33 more critical than myself would call you know architecture astronauts this idea of just like there's a lot of languages that have a purism and an idealism, which is beautiful, but they're not going to be general purpose because the real world is corner cases and yucky and things need to work. And I think having the team working on Dark, using Dark for its purpose, which is like these kinds of projects,
Starting point is 00:28:00 maybe it's not written to write languages, but it's written to do these things and you're actually using it for those things. I think it gives you an insight which you may otherwise lack. I remember at the start, before Dark was really available, a lot of the people who were interested in Dark were the people who were really into programming languages. So I fielded this question of,
Starting point is 00:28:23 can you compile dark? Can you write dark in itself? Why aren't you writing dark in itself? And there's almost dogma. But fundamentally, languages are built for a purpose, and the thing that our language is doing is not building programming languages. Right.
Starting point is 00:28:41 So a complete sidebar, but I'm curious. How did you learn to write programming languages and compilers and these low-level things? Where did you acquire that skill? Third and fourth year compiler class in college. Okay, like straight up university. Straight up, yeah. I went to Trinity College Dublin,
Starting point is 00:28:58 and I did an undergrad in computer science, and then I did a PhD in compilers. Okay. So I kind of joke about this because i hate parsing i think parsing is like the worst thing so the first thing that you that you do when anyone writes uh writes a language is write to parser so i rarely write new languages or anything like that because i hate parsing so now you got me wondering i'm not going to ask this maybe we'll bring you on the founders talk and Adam can talk to you about your CircleCI days. How does a guy who's into compilers and languages
Starting point is 00:29:28 and studies these things ends up founding a CI company? For a different day, let's focus on Dark for now. Another aspect of the language, I guess the integrated aspect of the language, is that it has built-in support for things that normally you go to a community for. Background workers, scheduled jobs, there's data storage and stuff like that. Are these language-level primitives? Are they part of some sort of dark standard library?
Starting point is 00:29:55 Is there such a thing? How does that work? They are fully integrated. I'm not really sure what they are exactly. Certainly databases are language primitives. The important thing is that what you store in a database is actual dark data. There is no ORM,
Starting point is 00:30:13 there's no conversion layer between the runtime representation and conversion into SQL or Postgres types or something along those lines. Now you have me interested because one of the banes of my existence is marshaling and unmarshaling data
Starting point is 00:30:27 in between a data store and my language I'm writing it in. I just want it to be there when I come back. I just want to have this, I just want to keep it, and I just want to know it's going to be there safe. And I actually couldn't be bothered with the details of the ins and outs of the database. And so that's something that's very attractive to me as a developer. Yeah, I mean, it was a goal that it would be fully integrated
Starting point is 00:30:48 into the language, or at least into the dark system, or platform, whatever we call that. And so it had to be that these values could go straight into it. But also, the way that you query things in dark is by writing dark code. You don't write SQL. You write something like a query function where you pass into a Lambda
Starting point is 00:31:10 and then the Lambda is actually compiled into Dark. That was last year's compiler project. So what if you do want to bring your own things to Dark? It sounds like it's probably still too early on. No, you can't use Postgres with Dark. In the future, someone might write a Postgres adapter, driver, whatever. Yeah, so all you would need is some sort of low-level networking
Starting point is 00:31:33 Dark thing, and then you could just write a network adapter. Yeah, and having direct TCP or something is something that will come. But the goal of Dark is not to let you use whatever you're using today. The goal of Dark is, let's assume that that's all legacy tech and we want to get rid of a ton today, unconstrained by legacy.
Starting point is 00:31:58 Is there a day in the future where enterprises will use the Dark consultants to hook up their Redshift to dark to be able to do queries in it. Maybe, but it's never going to be the core of what dark is about and bringing your own stuff to it. It's always going to be about this idea of we can build stuff faster if we have it fully integrated in our system. to sell a global CDN, private networks, and auto-deploys from Git. They handle everything from simple static sites to complex applications with dozens
Starting point is 00:32:49 of microservices. If you're a developer or a founder that's frustrated with AWS's complexity or Heroku's high costs, you owe it to yourself to use the $100 in free credits they're giving our listeners to give Render a try. Render is built for modern applications and offers everything you need out of the box. One-click scaling, zero downtime deploys, built-in SSL, private networking, managed databases, secrets and configuration management,
Starting point is 00:33:14 persistent block storage, and infrastructure as code. The Roku customers running production and staging workloads typically see cost reductions of over 50% after switching to Render. Here's the best part. We work closely with the team at Render to ensure you have zero risk. By giving you $100 in free credits, plus they're going to assign a world-class engineer to your account to offer guidance and answer any questions you have. When you're ready to transition your infrastructure, they'll be there to help you with that too. Automate your cloud hosting with Render at
Starting point is 00:33:42 render.com slash changelog. Get $100 in free credits to try the Render platform, plus a I'll see you next time. so one thing i haven't mentioned yet is that i have you on today paul because a listener requested that we do this show oh cool yeah so shout out to john Stoddle, and he requested that we do a show on Darkling and your open source strategy. Well, thank you so much, John. Yeah, absolutely. We love listener requests, because now that we know we're doing a show that at least one person absolutely wants to hear.
Starting point is 00:34:35 Someone's going to be happy. It's going to be a non-zero happy listener count. And one thing that John said, he says you have an interesting take on an SPA slash PWA with functions as a backend. And then you also have a special take on open source, in the air quotes. Yeah, air quotes are much needed. Because it's source available licensing, yeah, but not open source.
Starting point is 00:34:57 So that kind of opens us up into Darkling's ecosystem. There's a business around it. It's not open source, but you can view the source code. Talk to us about that whole situation. Yeah, so where to start with it? I hate fake open source. I'm really into business models. I love thinking about business models.
Starting point is 00:35:16 And the worst business models are the open source business models. And we're a couple of days after AWS just forked. Yes, Elastic Relicense. That's right, that's right. Elasticsearch, and AWS just forked. Yes, Elastic Relicense. That's right, that's right. Elasticsearch and then AWS forked. Right. Previously, yes. It's a big conversation piece.
Starting point is 00:35:31 There's all these companies that are really struggling with the fact that they built open source businesses. And for a lot of things, especially for databases, you kind of have to be open source. It doesn't make sense to be, and Elasticsearch is a database, really. But you kind of have to be open source. It doesn't make sense to be, and Elasticsearch is a database, really. But you kind of have to be, because people want to run their own data and that sort of thing. And when you think about what is dark, what is the purpose of dark?
Starting point is 00:35:55 The purpose of dark is that you don't have to do anything. And so the first thing that you do with an open source thing is that you install it. You find a system, or maybe you put it on your first computer. And that's not what Dark is. That's not what we're here for. We're kind of in this world where you want a business model that matches to how you want people to use the system. And so for us, open source was not it.
Starting point is 00:36:24 It is not a thing that made direct sense because we have that AWS problem. If Dark manages to succeed, do we want to just be run by AWS? No. But also, we've been talking for 45 minutes now about this integrated ecosystem. And part of that integrated ecosystem is,
Starting point is 00:36:42 yeah, we're the package manager, we're the hosting. It doesn't make sense to have another instance of dark over there. There's a bunch of things I'm planning to build where I wouldn't call it social features, but something along the lines of you want to make a bug report to the package manager, maintainer, whatever. That's a thing that you do in dark and you can take your request and upload that or send or something along those lines. It hasn't been designed yet.
Starting point is 00:37:08 All things that are part of this singular ecosystem. So it doesn't make sense for someone else to have another installation of Dark or having their own installation of Dark. And when we look at people asking us for open source, there's a couple of things that they want. Some people are into open source for status. They want to build their reputation in order to do consulting or something along those lines.
Starting point is 00:37:35 So that's a thing that we wanted to enable. People want to install it themselves to have on-prem and that's not a thing we wanted to enable. We recognize that there are people who cannot use cloud things and that's not a thing we wanted to enable. We recognize that there are people who cannot use cloud things, and that's okay. Not every service is for every person. Then there's people who are worried about business continuity.
Starting point is 00:37:54 What happens if Dark shuts down? That is a thing that we wanted to take care of. Then there's people who just want to be able to extend their programs. They're users of Dark, and they want to be able to make it better. And so of those four things, three of them we wanted to enable. So there's a couple of things that we did. So one is, we've not done this yet, but intend to.
Starting point is 00:38:20 It's sort of like an open source guarantee, where if Dark shuts down, we'll open source it. That's for the business continuity side of things. We have not actually done the legal side of that. What you have today is, well, it's source available. If there's no business left, no one is going to sue you for installing your own thing, but we should do better than that. With the source available, you get the people
Starting point is 00:38:41 who are trying to build up a reputation for being experts in dark, can contribute to the community there. The people who want to extend the ecosystem and who are unable to do a certain thing in dark and so they want to make it so that they're able to do a thing in dark. That is really what we were looking for. And you cannot run your company on this thing,
Starting point is 00:39:06 or on your own instance of this. So we got a lawyer called Heather Meeker, who's a famous open source lawyer, and she wrote the Polyform licenses and a bunch of other things. So we got her to write a license for us, and the license basically says, this is source available, it is not open source, and you can use this for the sole purpose of developing
Starting point is 00:39:26 and contributing back to Dark. And then we have a CLA as well for contributions. I like how clear you are about that and straightforward. And you said you hate fake open source, and you're not trying to be open source, you're source available, you say it right there up front. I think that's admirable. The but is coming. Well, I mean, the but is not a big but.
Starting point is 00:39:48 Do you think that's going to hamper it? Oh yeah, absolutely. Because there's so many people that just see that and they're like, I'm out. I think that the problem with having nuanced opinions about anything is that looking for some middle ground is that a lot of people just aren't interested in the middle ground. I'm not saying that's bad. I think having an open source first philosophy isn't a bad thing.
Starting point is 00:40:11 But people who build stuff in the cloud are not using open source the whole way down. They're relying on AWS, none of which is open source. Even AWS's Elasticsearch, the fork of it. There's AWS proprietary stuff all over that. The people who are looking to build the sort of thing that we want you to build on Dark, I think for the most part are going to be very familiar with this idea that actually they don't have a license to everything
Starting point is 00:40:39 top to bottom. Fair enough. I think in light of that, languages have communities. Languages are not, if you think of a language that's owned by a single person or a single entity, even Microsoft has released the death grip on a lot of their proprietary software and languages.
Starting point is 00:41:01 Fsharp is open source. Right, of Apple famously open sourced Swift and they said they were going to do it the entire time and they just didn't do it right away. I think that's probably true or they wanted to do it the entire time. At least, I can't remember the language designer's name offhand but I know the core team definitely wanted Swift
Starting point is 00:41:19 to be open sourced. As Apple knew they needed to open source it, I'm now, this is my thoughts, because they wanted mass adoption and education and all these places on the server side where it wasn't inside of Xcode. How do you overcome the community problem? Because you have some people hanging out,
Starting point is 00:41:41 you got people extending, but do you have a strategy or are you just hoping that it works out? Just curious your thoughts on, since you are just source available, how do you get the real, I don't want to call them zealots, but the fans, the dark people? Yeah, so the thing that we recognized up front is that we want the dark fans and we don't necessarily want the open source fans. So if dark to you is a cool thing that I can hack on, it's not really that interesting because you're going to hack on the wrong things. We get a lot of feature requests from people on their first day
Starting point is 00:42:17 where they would not make the same feature request a month later once they actually understand the stuff a lot better. The purpose of going this source available thing was for people within the community to contribute back and to be able to contribute back to solve their own problems. It's sort of like a multifaceted approach because there's the dark code base, but there's also going to be a package manager
Starting point is 00:42:45 that people can contribute to. And that's also going to be in a non-open source license. That has a lot of the same sort of available features. For a bunch of reasons, we don't actually want anyone who can't get past the zealotry side of things. I don't mean to, like, zealotry sounds so negative, and I think that there's so many positive things about open source, but there's so many negative things about open source. People are talking about the licensing thing, but there's also like, you know, a bit of a toxic community
Starting point is 00:43:13 that has existed in open source for a while that, you know, people are, you talk about a little bit at the edges, there's that, you know, but you can see on certain GitHub issues where people are demanding things from maintainers and et cetera, et cetera. And so we're a little bit distancing ourselves from that and being like, this is a service. The people in the community abide by a code of conduct and you've got to be, amongst other things, you've got to be nice and inclusive.
Starting point is 00:43:41 And if you're in the community, we're going to have that conversation. You can participate in building Dark and extending it in ways that you want. But we kind of want to be a little bit further away from the things that are happening in open source. What's interesting is that your initial audience, I'm just thinking of the diagram
Starting point is 00:44:00 between language nerds, and I say that in the kindest way, and I consider myself somewhat one of them and then like open source nerds and then like the cross-section of those two and i feel like they're like 80 overlap well our target is not language nerds oh i know i'm saying your initial like you build your community out of your your early adopters right and you said that the people that are coming on early are like, hey, here's a cool new language. I'm interested in this.
Starting point is 00:44:29 There were, but most of our community now is people who build web stuff. The language nerds, they don't use Dark. They're interested in Dark in an abstract sense. Right, like they're watching you build it maybe. Yeah, but the people who use dark are people who build SaaS and web backends and web frontends and don't build backends.
Starting point is 00:44:55 Use dark for that. I'm not going to say that there hasn't been people who have dropped out of contributing because it isn't fully open source. I think that's fine. Everyone makes the trade-offs according to their values and we want to have a sustainable ecosystem. And a sustainable thing is focusing on what dark is
Starting point is 00:45:15 and focusing on the long term where the value of dark gets reinvested into this ecosystem. Yeah. Well, like I said, I applaud you for staking your claim. I'm with you. The only thing that I like open source, I'm also okay with proprietary,
Starting point is 00:45:32 and I just want the lines to be drawn and clear. And what I do not like is when you have people who are trying to ride the coattails of open source and benefit from the great goodwill that the term and the community has. There is some toxicity, but there's a lot of value there. There's tons of marketing value,
Starting point is 00:45:53 just to call yourself that, without actually being that. I think we're on the same page there. Let's talk about what it feels like then. Let's put me in your core user demographic. I'm building my startup on Dark. And I have a SaaS startup that I'm going to build. What should I expect in terms of business model?
Starting point is 00:46:14 How much am I going to pay you? How does it scale? I have no problem paying for things that bring me value. Where I have a problem is usually when their model doesn't scale alongside the way that I use it, for example. GitHub used to famously have this mismatch with agencies where I was a freelancer and I would like add new projects all the time because that's the way that I would move on. Oh yeah, I remember that. But they would charge based on project count and it's like I'm still just a one person company.
Starting point is 00:46:40 It's not scaling with my company. And so I'm curious, I know you're not there yet, you're in private beta, but you love thinking about business models. Surely you have some sort of a game plan, like what does Dark, the business model, look like for its users down the road? Yes, I mean, the belief that I have about developer tools is that people used to not pay for developer tools.
Starting point is 00:46:57 This was a truism up until about 2015 or so. And before that, those of us who monetized developer tools, such as CircleCI, did it by reselling infrastructure. If you think of AWS as a developer tool, it's actually we're selling you computers, and you're paying for the computers. And CircleCI is the same, you're paying for the computer. That makes sense to a certain extent in Dark as well.
Starting point is 00:47:21 You'll pay for the infrastructure that you use. We have described Dark, and Dark isn't there, but conceptually Dark is an infrastructure compiler. It's a thing which takes the code that you write and figures out how to run it. And we will charge you a reasonable upsell on the actual cloud costs of the thing there. However, a thing that I've been thinking about recently
Starting point is 00:47:44 is that the vast, vast majority of our users today and for the next few years are people who are not using it very much. They're not using it an amount that really costs that much money. So if you think about a typical SaaS, a typical SaaS is a workflow engine that has few users and not a lot of data.
Starting point is 00:48:08 And it's not Twitter, it's not Snapchat. And so if you're charging people based on the costs, there's not a lot of money for the size of businesses that Dark is going to be able to support in the next few years. So I think that long term, that is a good business model. And short term, I think we're going to need something else. And the thing that I'm thinking is something like the per user thing for companies.
Starting point is 00:48:35 Because if you're spending $10,000 a month on an engineer, you're not going to balk at $25 a month to make that engineer three times as productive. But we have to actually have that productivity. We have to have people actually using it and we have to have, there will always be a freemium component because if there isn't an open source component
Starting point is 00:48:54 to it, we need people to be able to get in. You've got to be able to try before you buy. Exactly. You can't just be like, hey, by the way, we're going to start or switch on this new language we never used, on a new editor we never used, on an infrastructure we never tested. Where do I put my credit card in?
Starting point is 00:49:10 I think that most people who like TriDark will end up at a free forever sort of thing. They won't be using enough traffic to hit costs. They will be writing in public and in the open and packages and that sort of thing and that will be free for the amount that they're using. And then at some point corporations
Starting point is 00:49:28 are going to pay something. And you said you don't mind paying for tools. Most companies have no problem at all paying for tools and actually prefer to pay for tools so that that will definitely be where the pricing goes. I remember James Lindenbaum,
Starting point is 00:49:43 who's the Heroku founder, has this concept of don't put anything that's developer-facing behind a paywall. So you can put the business-facing things behind a paywall, but not the developer-facing things. And that's an approach that I really like and that I intend to stick to. I like that idea.
Starting point is 00:49:58 So what does success look like for Dark? If you teleport yourself into the indefinite future and I did it, Dark wins or Dark is successful, what does that future look like? That's kind of interesting because sort of at an inflection point now, we haven't mentioned it yet on this show, but there was a layoff in July and Dark is just me right now. And so I'm having a think about what is the future of Dark?
Starting point is 00:50:22 What is the future of this company? And obviously the original thing that we sold to investors was this is going to be a billion dollar company. It's going to be amazing. All cloud will be built in Dark. And when you combine the fact that it's been three years and we're not yet a product market fit with the world that we live in these days,
Starting point is 00:50:44 a lot of what I'm thinking is maybe the billion dollar business is not the most interesting or valuable thing here. And raising the huge round to do the next thing, it's like, eh. I think I don't know what the future looks like. I think I need to sort out my own head for where I want the future to be. But something that I still love the idea, or the main thing that I love is
Starting point is 00:51:11 what you can do with Dark. And whether Dark is going to be a thing where you build apps for tens of thousands of people or for tens of millions of people, I think those are definite choices to be made. But we will definitely be progressing towards this hosted system where you can build small to medium apps at the very least. I have to think about whether I want to support more than that.
Starting point is 00:51:39 There you go. Well, I appreciate the honesty around the size of the team and all that. I didn't realize it was just down to you, but hey, the pandemic hit a lot of us in different ways. And like you said, we are living in difficult times. So happy to see it continue with you. Do you have like a, I know there's a public roadmap,
Starting point is 00:51:57 but like you said, you have some thinking to do, but do you have like a, I'm going to work on it for this long, or like I said, the vision, or how long are you in the game with Dark? My thinking is I might be in it forever. I'm going to work on it for this long, or like I said, the vision, or how long are you in the game with dark? My thinking is, is I might be in it forever. I'm not a hundred percent sure. Yeah.
Starting point is 00:52:10 Because startups, you tend to be in like, you know, I put in, you know, everything I have for four years or 10 years or whatever. Right. And then you like burn out and, you know, have a midlife crisis. You've already played that game though. I've played that game. Yeah. And, and, and that game went well.
Starting point is 00:52:24 And so now I'm in sort of the post game. Yeah. And Dark is my, you know, to a certain extent, my post game. Yeah. So, you know, Dark is a, you know, it's a code base I know very well. I love coding. There's a lot of, you know, there's something in me that's like, you know, I can build Dark forever and that would be wonderful.
Starting point is 00:52:41 Yeah. And, you know, there's another part of me that's like, build big startup success, et cetera. And those two are a little bit in conflict, right? It's like the devil on each shoulder. And that's why I was saying earlier, I don't know which one I'm going to go. Which devil is going to win? Well, let me just sit on one of your shoulders
Starting point is 00:52:59 and just reiterate what you said to me, is work on what's most exciting to you. That's where you are, you're in a good spot, you can do that, you can afford to do that. So if you focus on that versus having to decide go big or go home, it's like, well, wake up each day, work on what's exciting. And that will be at least exciting, at the very least enjoyable. The situation that we're in as a company, the company's separate from the product
Starting point is 00:53:25 or the code. We haven't got to product market fit yet. We have a million in the bank. We spent about four million to get here. And we basically have to get to product market fit on that million. And we're spending nothing at the moment.
Starting point is 00:53:41 It'll last a very long time. So then there's a question of what are we going to do? What is the best way to get to a place where there is optionality, where we can start to think about, when we get to product market fit, does Dark start to take off? Are we excited by that takeoff?
Starting point is 00:54:00 Then that kind of points in one direction. On the other hand, it's possible that when we get to product market fit, Dark will still be a thing for small people to build things with a small team, and that'll be another reality that we have to deal with. And when we have that information, I think it'll be clearer. That sort of information about what options you have
Starting point is 00:54:22 tends to lend a lot of influence to the option that you take. Well, for the tinkers out there, the experimental folk, the ones who do not like to marshal and unmarshall databases, want to try out Dark. It looks like it's in private beta at the moment. It's in public beta at the moment.
Starting point is 00:54:40 It's in public beta now. You can just go to the website, darklang.com, sign up, try it out. Give it a shot, hop in the, it looks like you have a community that you can hop into, ask questions, source available, so you can do your habitual GitHub complaining slash requesting of things, like you would with an open source project. There are GitHub issues, and pull requests accepted.
Starting point is 00:55:03 There you go. Paul, anything else I didn't ask you or you've just been waiting to say this or ask that before we call it a show? Nothing comes to mind. Okay. Thanks again to John for requesting this episode. Yeah, thank you, John.
Starting point is 00:55:15 This was wonderful. This was lots of fun. I'm fascinated. I would love to see you succeed and we'll definitely be keeping our eye on Dark. And we encourage all the listeners to go out there, give it a look it has a lot of
Starting point is 00:55:26 interesting properties and something at the very least you want to try out and see if you like having a fully integrated solution to coding up things
Starting point is 00:55:36 so Paul thanks for coming on the show thanks so much Jared we'll talk to everybody next time it was so cool to finally get Paul Bigger
Starting point is 00:55:43 on a full length episode you may have heard Paul in previous ads we've done for Rollbar love those ads It was so cool to finally get Paul Bigger on a full-length episode. You may have heard Paul in previous ads we've done for Rollbar. Love those ads. Love Rollbar. And that was fun. But a full-length episode with Paul, even better. If you haven't heard yet, we have a membership. It's called ChangeLog++ because, hey, why not increment things?
Starting point is 00:56:01 It is better, as they say. You can subscribe at ChangeLog.com slash plus plus. Get closer to the metal. Make the ads disappear. And, of course, support all of our podcasts. Again, changelog.com slash plus plus. And, of course, huge thanks to our partners, Linode, Fastly, and LaunchDarkly. Also, thanks to Breakmaster Cylinder for making all of our awesome beats.
Starting point is 00:56:24 And, of course, thanks to you for listening. We appreciate your attention. We appreciate you listening. And one more step you could take is to join the community. changelog.com slash community. It's free to join. Come hang with us in Slack. Call this place your home. changelog.com slash community. That's it for this week. We'll see you next week.

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