spotifyovercastrssapple-podcasts

Funding Open Source with Evan Czaplicki

Evan shares what he's learned about Open Source funding and the tradeoffs of different models.
March 15, 2021
#26

Transcript

[00:00:00]
Hello, Yaron.
[00:00:01]
Hello, Dillon.
[00:00:02]
And, well, today we're talking about something that we haven't directly talked about, which
[00:00:09]
is Elm itself.
[00:00:11]
And we're very happy to have on the show with us today, Evan Ciplicki.
[00:00:15]
Evan, thank you so much for joining us.
[00:00:17]
No problem.
[00:00:18]
Thanks for setting us up.
[00:00:19]
Our pleasure.
[00:00:20]
Well, yeah, so I was hoping to, like, one thing I've been wanting to talk about a lot
[00:00:26]
is the funding stuff.
[00:00:29]
So that was, I actually had a conference talk scheduled for, I think it was like March or
[00:00:35]
April of 2020.
[00:00:37]
And I like ran a version of it in December 2019 around where I live for some compiler
[00:00:45]
students.
[00:00:46]
I don't know if it went over well because they're just learning about like how to generate
[00:00:51]
assembly and I'm like, well, Google has all these ads.
[00:00:55]
Yeah.
[00:00:56]
But yeah, that's something that I think feeds into a lot of the conversations around open
[00:01:00]
source.
[00:01:01]
And like, I think I've been like pretty naive about it for many of the years I worked on
[00:01:05]
the project.
[00:01:06]
So it's something that I think I'd be excited to talk about.
[00:01:09]
I don't know if you guys had thoughts.
[00:01:11]
I know you saw the recent panel discussion with Elixir and Julia perspectives.
[00:01:18]
So yeah, I was curious like how that hit your ears and what you thought of that.
[00:01:23]
I mean, it was awesome to hear about it.
[00:01:25]
I thought that that PL talk panel with Jose and Jeff.
[00:01:29]
Yeah, it was super interesting in particular.
[00:01:32]
I thought it was really cool to hear you talk, Evan, about the pros and cons of the patronage
[00:01:37]
model.
[00:01:39]
And just like one of the points you brought up that I was really interested in was how
[00:01:45]
you've wanted to support other people contributing to Elm more regularly.
[00:01:50]
And you're just kind of like with the patronage model, you were saying it's sort of a limitation
[00:01:56]
that you're like, sorry, I'd love to pay you to contribute, but it's already hard to make
[00:02:04]
a business case for somebody to pay me a full time salary, let alone to pay more people.
[00:02:09]
Yeah.
[00:02:10]
So that's one of the things that's been a I've sort of understood the contours of the
[00:02:16]
bargain better.
[00:02:17]
So like, from my perspective, personally, it's a very easy setup where it's like, it's
[00:02:23]
an under market thing, but I get to work on it full time and everything's under an open
[00:02:28]
source license.
[00:02:29]
So it's can't be like claimed by some company if it gets bought or whatever in the future.
[00:02:35]
So I'm like, wow, that's great.
[00:02:36]
And I mean, 22 year old me was like, wow, that's amazing.
[00:02:40]
But as contributors who have made really cool stuff have followed, you know, the classic
[00:02:49]
arc of open source, which is you start on something on your own, it's very exciting,
[00:02:55]
you get to implement it, there's no deep considerations besides like what you're excited about.
[00:03:01]
And then when a couple people get interested, it's really exciting, because, interestingly,
[00:03:07]
it's like it's similar with YouTubers, it's like the that first content you're making,
[00:03:11]
the people who show up are really there because they want that.
[00:03:15]
And then it gets to a certain point where a broader set of people know about it.
[00:03:19]
And it's not necessarily for everybody.
[00:03:21]
And the sort of conversation online changes.
[00:03:26]
And then it's like harder for the creator, whether it's a, you know, technical or entertainment
[00:03:34]
content, it's like harder for them to participate in those conversations.
[00:03:37]
In the same way, and then that can start taking a toll on their mental health or physical
[00:03:43]
health or relationships outside of it that, you know, they don't necessarily talk about
[00:03:48]
on the internet.
[00:03:49]
And it's like, everyone I talked to who has been an open source, like some number of years
[00:03:54]
can talk about this story to some level, I don't know what how you guys relate to it
[00:04:00]
exactly.
[00:04:01]
So I'm currently in the happy phase, where a lot of people are very interested, not enough
[00:04:08]
to give me a lot of contributors, though.
[00:04:09]
But I'm still in the happy phase.
[00:04:11]
But I've noticed I've been in the later phases in other smaller projects.
[00:04:16]
Yeah.
[00:04:17]
And I mean, the volume is also like a part of it, where it's like when you're getting
[00:04:21]
like one interaction a month or two or three, you're like, Oh, cool, you know, I got a little
[00:04:26]
blue notification dot in my GitHub.
[00:04:28]
Oh, someone found a bug.
[00:04:30]
Okay, let's let's fix it.
[00:04:31]
Let's take the day for that.
[00:04:32]
Yeah, that's and at the end of the day, it's done.
[00:04:36]
Right.
[00:04:37]
I'm still in that happy phase for me.
[00:04:39]
Is it the same for you, Dillon?
[00:04:40]
I mean, I know it's everyone has their own.
[00:04:43]
I've gotten both.
[00:04:44]
I've gotten both sides.
[00:04:45]
But I've definitely gotten I've seen a lot of people express appreciation, which always
[00:04:50]
makes me really happy.
[00:04:51]
I've also had days where I get pulled down by some comment that's like, I expect this
[00:04:58]
thing or like, why isn't it this way? or why did you make this decision?
[00:05:02]
And it really drags you down.
[00:05:04]
I can imagine with like, supporting something is broadly used as a language because like
[00:05:08]
with tools like Elm GraphQL, like the scope is kind of narrow enough that I can say like,
[00:05:15]
this is what this project does for you.
[00:05:18]
And this is like, these are the the goals of the project.
[00:05:22]
And if things are outside of it, I can say like, okay, great, maybe another thing can
[00:05:25]
do that.
[00:05:26]
And you can almost say that it's done at some point.
[00:05:29]
Exactly.
[00:05:30]
Yeah.
[00:05:31]
Whereas with a programming language, you can never get to that point.
[00:05:34]
And I think it's also like being able to draw those boundaries with a language is like,
[00:05:39]
should this feature be in the language?
[00:05:41]
It's like, it's hard to like have a predefined answer to that, right?
[00:05:47]
It's like, I mean, for things you've seen before, it's like, you kind of know the landscape
[00:05:51]
there and know what the problems are.
[00:05:53]
But it can be really complicated to like convey that.
[00:05:56]
So I think another component to the like, arc of open source is like time component.
[00:06:01]
So that's the kind of thing where at a certain point where the kind of thing you're talking
[00:06:07]
about where like, you can really get down for like a day based on, you know, someone
[00:06:13]
who wants something and is like, excited about the project, but like, it was read in a way
[00:06:18]
that was like hard to take in in a positive way.
[00:06:22]
Right, right, right.
[00:06:24]
It takes a toll, right?
[00:06:25]
So it does.
[00:06:26]
I've noticed my threshold for those kinds of interactions is like, it's more painful.
[00:06:33]
Yeah.
[00:06:34]
Over time, like it's not Yeah, I always hoped I did get stronger with it.
[00:06:39]
And it's like, it's not always that way.
[00:06:41]
Yeah, one of the things that I've noticed, I'd be I'd be curious to hear your experience
[00:06:46]
with this, Evan, is like, the things that get me down, probably, probably most often
[00:06:52]
are just like, sometimes people frame things, and I really appreciate it in a way where
[00:06:59]
they're like, hey, these things are awesome.
[00:07:02]
I'm not sure if you've thought about this thing, there are probably challenges.
[00:07:06]
But you know, here's some things to think about if you haven't, do you think you might
[00:07:10]
ever consider supporting something like this, yada, yada, yada.
[00:07:13]
And I'm like, super appreciative when people strike that tone.
[00:07:17]
And sometimes the tone is like, why doesn't it do this thing?
[00:07:20]
Or why does it do this thing this way? or and sometimes the thing about that is just
[00:07:25]
the tone, it can feel like it's, it's not acknowledging all the things that are there
[00:07:31]
that are good about it.
[00:07:33]
And sometimes when you've poured your heart and soul into making these things awesome,
[00:07:36]
they're like, Oh, the docs don't really talk about this thing.
[00:07:39]
Do they?
[00:07:40]
And it's like, yeah, like, it's just I just added this feature.
[00:07:42]
I've been like working for three months on my weekends to build this thing, which I thought
[00:07:47]
was super exciting and all you have to say about it is like, Oh, the docs don't tell
[00:07:52]
me how to do this.
[00:07:53]
Yeah, it feels it takes the wind out of your sails, you know?
[00:07:57]
I know the exact thing.
[00:07:59]
And it's like, in my mind, I have to do the like, it is, you know, technically, it's a
[00:08:04]
constructive comment, and it is a thing that can be better, you know, and it's like, you
[00:08:08]
know, being in a certain kind of position, it's like, I can't, if I'm feeling frustrated,
[00:08:12]
like I need to be really careful about how I'm communicating.
[00:08:15]
Because like, ultimately, my, my goal is to make a cool thing that people like, and they
[00:08:20]
have as good as possible and experience with it.
[00:08:22]
And so like, I don't want to be because I'm feeling bad, or I'm feeling hungry, or, you
[00:08:26]
know, something, you know, my mom's feeling sad about something that like, someone's experiencing
[00:08:32]
that, and they're just trying to make a cool program.
[00:08:35]
But I think one of the things that happens when in the unpaid one, oh, oh, yeah.
[00:08:44]
I think the root of it is like, at least for me, I've become come to think of it more as
[00:08:48]
like, knowing what kinds of sacrifices or choices, not, not sorry, but like choices
[00:08:54]
I've made to work on the language and do the things I'm excited about.
[00:08:58]
So it's like, in my case, walking away from the Google job, I wanted to do that.
[00:09:03]
But it's like, that is a choice that costs a lot of money, if you if that's how you look
[00:09:07]
at the world.
[00:09:08]
And so it's like, okay, like, that's a price I want to pay to pursue this.
[00:09:12]
And that's like, being on the patronage model, you have this sort of like uncertainty, even
[00:09:17]
more so than if you were on your own doing a consultancy or something, because it's like,
[00:09:21]
I don't really have agency over my salary, you're relying on someone else's like good
[00:09:26]
will, and hopefully it fitting into their business model somewhat.
[00:09:31]
Yeah, or like whatever they imagine I do, you know, whatever it is.
[00:09:36]
So like, being in a case where it's like, okay, like, hey, like, you know, I want to
[00:09:41]
have kids with my wife, it's like, when does it make sense to do that such that the Elm
[00:09:46]
work can continue as we want as well.
[00:09:49]
So it's like, that's the kind of conversation I might be having about something not necessarily
[00:09:53]
on an online forum.
[00:09:56]
And so I think when it's like, hey, why isn't there this?
[00:09:59]
Why isn't there more?
[00:10:00]
I can't, you know, have seen that conversation.
[00:10:03]
It's like, you know, there's, there's like physical limits, there's mental limits.
[00:10:07]
And like, it may, it's uncomfortable to talk about that in like a GitHub issue about right,
[00:10:13]
right.
[00:10:14]
Yeah, yeah.
[00:10:15]
String encoding details.
[00:10:17]
Right.
[00:10:18]
Like, like you said, you can have a technically constructive comment that's giving useful
[00:10:23]
information about something, but it can feel there's like this whole emotional context
[00:10:28]
that gets missed.
[00:10:29]
So it can feel like it's shooting down all the other things that are going on.
[00:10:33]
Yeah, and so, I mean, it's been interesting to see how that's played out over like the
[00:10:38]
pandemic where I think tech, Twitter, at least what I saw got a little kinder or less active
[00:10:46]
maybe.
[00:10:47]
And like, since, you know, beginning of this year, it's gotten a little bit more active.
[00:10:52]
So I don't know, I think that all like changed a lot of the dynamics.
[00:10:57]
But in terms of like getting back to the patronage model, which is how we started this, it puts
[00:11:01]
me in this lucky position where it's like, if I'm struggling emotionally with something,
[00:11:06]
it's like, okay, well, I can take a rest and I can come back and it's my job, you know,
[00:11:11]
I need to come back.
[00:11:12]
But for people who aren't in that situation, they say, hey, it's my Saturday, and my spouse
[00:11:17]
would like to see me this weekend.
[00:11:21]
And it's like, what am I gonna do?
[00:11:22]
Or kids, you know, people with kids, that's a tough call to...
[00:11:25]
Yeah, so I think that's another component.
[00:11:27]
So to go back to that point of like, seeing other people struggle with this and not knowing
[00:11:32]
how to help is like, I see other people in open source goes through this.
[00:11:36]
And having to come to a point where they say, hey, I have a kid on the way, like I need
[00:11:39]
to have different interactions with people online.
[00:11:43]
And you know, I hear that and I say, that's great, like that someone's choosing their
[00:11:47]
kids, that someone choosing their family, or their physical health or mental health
[00:11:51]
as the top priority, like, I can only be happy for that.
[00:11:55]
And in a patronage model, you say, hey, like, this was a conversation I had explicitly,
[00:12:00]
it's like, people are getting to limits, you know, and, you know, people who work at the
[00:12:05]
company too, but have open source stuff, what do we do?
[00:12:09]
And it was just like, well, that wasn't how they looked at the support of how they thought
[00:12:15]
of the patronage model.
[00:12:17]
And it's like, you know, that's just one of the things that you have to be aware of.
[00:12:21]
So like, if I could give myself advice, whatever, nine years ago, I think I would have been
[00:12:26]
a lot more aware of trying to do some kind of consulting outside of it, or being much
[00:12:34]
more aware that having full support from the engineering organization isn't good enough,
[00:12:41]
because like, that's not where the decision stops, right?
[00:12:43]
Like everyone in the whole org can be like, this is a mistake, this or that choice.
[00:12:48]
But it's a classic case of the tragedy of the commons, which for anyone who doesn't
[00:12:53]
know what that is, it's just this idea that, sorry, there's a teapot over here.
[00:12:58]
It's all good.
[00:13:00]
You have like, these fields that cattle can openly graze in a community in a village,
[00:13:06]
and you're supposed to limit how much grazing you do to make it sustainable for the whole
[00:13:12]
community, but there's nothing preventing one person from overgrazing, and then actually
[00:13:18]
causing the pastures to go dry and become useless.
[00:13:24]
And since there's nothing preventing, like any person can go and, you know, it doesn't
[00:13:30]
benefit the community, but there's nothing incentivizing you to behave in a way that's
[00:13:36]
going to benefit the long term longevity of the community.
[00:13:39]
And similarly, like with open source work, there's so much value that's being created
[00:13:45]
by it, and if it can be supported even more, there's a clear monetary benefit.
[00:13:49]
But who pays that and what causes you to be incentivized to pay for that?
[00:13:54]
Yeah.
[00:13:55]
And what's interesting is like, depending on the specific project, like the norms about
[00:14:01]
what are acceptable models varies very widely.
[00:14:05]
So like, I have the sense that in programming languages, there's some price to pay for having
[00:14:11]
a consulting firm.
[00:14:12]
I think people are somewhat skeptical of that in a way that they aren't with operating systems,
[00:14:16]
right?
[00:14:17]
It's like Red Hat can be this massive business, and it's like, oh, well, that's an operating
[00:14:21]
system.
[00:14:22]
But when languages do it, it's like the conversation is not quite the same.
[00:14:24]
And then like with databases, it's like, hey, we have this hosting thing, and we have all
[00:14:29]
this open source stuff, and that's fine.
[00:14:32]
And with scientific computing, some of them just have straight up licenses where it's
[00:14:36]
like different universities pay for access to Mathematica or Stata or whatever.
[00:14:42]
And then with like individual packages, it's like, I don't know the extent of people who
[00:14:48]
have figured that one out.
[00:14:49]
So the thing of the patronage model is that like your bounds or whatever are set around
[00:14:55]
you.
[00:14:56]
So I think personally, like one of the things, you know, it was my like December 2019, I
[00:15:01]
was thinking a lot about this topic.
[00:15:03]
And my big thing was like, I want to move away from patronage and explore what other
[00:15:11]
things can work.
[00:15:12]
And this question of like, how do you connect yourself to a system that's going to like
[00:15:16]
be healthy?
[00:15:18]
So like, the ones that the ideas that I had were like, you can have the donations, which
[00:15:24]
I'm very skeptical of, you can have consulting, you can do some kind of like, something kind
[00:15:31]
of like Netlify, where it's just like, hey, really easily get your ELM app online.
[00:15:36]
And each of these has different sort of trade offs and time costs.
[00:15:39]
So it was actually interesting to do the PL talk panel, because like, I hadn't talked
[00:15:44]
to someone who was doing a language that had explored some of these models so explicitly.
[00:15:50]
But one of the things I found interesting was that neither of those two folks from Elixir
[00:15:55]
or Julia were doing donations for engineering work.
[00:16:00]
And that was one thing I noticed is that like, it's very, I don't know of a language that
[00:16:04]
does that.
[00:16:05]
It's common for languages to have like a nonprofit to run the conference.
[00:16:10]
I think that's a somewhat defensible use of nonprofit status.
[00:16:15]
But I would feel really weird like being a software engineer, and like running that through
[00:16:20]
a charity, but the people who benefit from the charity are like, often like companies
[00:16:25]
with the money.
[00:16:27]
It's like, it feels weird.
[00:16:28]
I don't know.
[00:16:29]
I mean, some countries don't do nonprofits in the same way as us.
[00:16:32]
But it's something I personally have like ethical reservations about.
[00:16:35]
It's like, we don't have to get into that.
[00:16:39]
Yeah, it's tricky because with open source, like language or tool or whatever, being open
[00:16:46]
source makes it better.
[00:16:48]
So who would use a language that's not open source?
[00:16:51]
It would feel like very risky.
[00:16:53]
You know, Microsoft learned that lesson at one point and open sourced everything because
[00:16:56]
it created a lot of ill will.
[00:16:58]
And it wasn't working.
[00:17:00]
Like if there's like, you know, you can't look at the code and see what's going on and
[00:17:03]
stuff.
[00:17:04]
But then, you know, it makes it really challenging to have funding models to sustain it, which
[00:17:09]
everybody wants.
[00:17:10]
Everybody wants to be able to sustain this thing.
[00:17:12]
So it's a weird situation.
[00:17:14]
Yeah.
[00:17:15]
So at least for what I'm trying is, so my wife happens to be a very skilled programmer.
[00:17:23]
So we're trying a little family business and the sort of like the ranking of things we're
[00:17:29]
interested in is like trying to do like some sort of easy hosting where like, instead of
[00:17:36]
the Elm Try page, it's like, hey, you can press a button and it's on the internet.
[00:17:41]
Cool.
[00:17:42]
GatsbyJS sort of has that funding model as one of their core things, it seems like.
[00:17:47]
Yeah.
[00:17:48]
And next to that might be some level of consulting where like, I have my particular skills, which
[00:17:54]
like, I don't know if there is broadly useful, you know, it's like, but talking to Jose from
[00:18:02]
the, from Elixir, it was really interesting to hear how their like developer subscription
[00:18:08]
mod thing works, where you have like a direct line to some small set of like people who
[00:18:16]
are working on the compiler and core libraries and stuff.
[00:18:20]
And what's interesting about that is like you then in spreading the information that
[00:18:25]
it's good to spread to the community, it's like that's also supporting the work on the
[00:18:29]
language.
[00:18:30]
I definitely know there's different, I don't know if I'm like the ideal consultant dispositionally,
[00:18:39]
I think I'd need to do a lot of personal work.
[00:18:42]
Just a specific skill set for sure, like the coaching tool chain and yeah.
[00:18:47]
Yeah.
[00:18:48]
So, but I think those two are kind of what we're, we think there's some thing that can
[00:18:52]
work there and it's like, you know, we're not here to make a bunch of money.
[00:18:57]
Like if that was the case, I wouldn't have done any of this, right?
[00:19:00]
This is not a lucrative path for someone who works on compilers, but like hopefully we'll
[00:19:07]
be able to figure something out there.
[00:19:09]
And like, I think this comes back to like, no, like the sacrifices you make and not like
[00:19:14]
choices you make to do the things you want to do is like, Hey, I'm, I have savings to
[00:19:21]
make it happen.
[00:19:22]
Right.
[00:19:23]
And like, I'm confident in our technical skills and our, that we can make that work.
[00:19:28]
But that's like, all this is kind of like a hard conversation to have in a text format,
[00:19:33]
you know?
[00:19:34]
Right.
[00:19:35]
Cause it's like, there's so much personal stuff and it's like, I don't necessarily feel
[00:19:38]
comfortable having that conversation with someone who thinks of Elm as like a technical
[00:19:43]
artifact that you submit issues to and they come out completed in some.
[00:19:49]
Right.
[00:19:50]
Right.
[00:19:51]
Right.
[00:19:52]
So for somebody who's listening to this and wants to support your, you know, your experiments
[00:19:59]
that you're doing with different funding, like, you know, let's say I'm, you know, at
[00:20:05]
an Elm company and I like, who would you want to hear from or how could they support you?
[00:20:11]
Like if that, would it be helpful if they reach out to you with like, Hey, if you're
[00:20:15]
looking to do some consulting stuff, here's something, whatever, like maybe we're doing
[00:20:20]
a parser, maybe we're building like an Elm parser thing and like, can you consult with
[00:20:25]
us on that?
[00:20:26]
Would you want to hear from someone like that or like, what do you, what do you envision
[00:20:29]
for that?
[00:20:30]
I mean, I think with the exploratory work I'm doing personally, it's still just too
[00:20:34]
early.
[00:20:35]
Mm hmm.
[00:20:36]
Mm hmm.
[00:20:37]
And then my wife is doing the hosting experiment and also it's, it's, it's too early.
[00:20:44]
Like I think she'll in her own way, reach out to people and find that when it, when
[00:20:49]
it's ready.
[00:20:50]
I actually, I actually have done a little like consulting on compiler stuff and it's
[00:20:56]
very fun.
[00:20:57]
I'm happy to do that kind of thing.
[00:20:58]
So I think with these kinds of things, it definitely makes sense to reach out directly.
[00:21:03]
If you have a idea or something you're interested in.
[00:21:06]
And I know like with Prezi and Norit Inc and the other company I did a little, little bit
[00:21:12]
of consulting with, it's always been that way of reach out, Hey, I was thinking about
[00:21:17]
this.
[00:21:18]
And I think with a, with compiler work in particular, it's like having that kind of
[00:21:22]
focused conversation is really good because you can have more shared context and have
[00:21:27]
a more focused conversation.
[00:21:29]
But yeah, I would encourage people to like DM about stuff if they're serious about that
[00:21:34]
kind of thing.
[00:21:36]
And also like there's no need for people to worry.
[00:21:39]
Like I, I can take care of myself, you know, and if I need help, I'll ask.
[00:21:45]
So I think part of why, part of why I'm hesitant to talk about these things is like, you know,
[00:21:50]
with a feeling of gratitude, I know that people will be interested to want to help, but sometimes
[00:21:55]
it's like, it's too early to be at that phase yet.
[00:21:58]
Does that make sense?
[00:21:59]
Totally.
[00:22:00]
I don't know if you guys have had that experience with like stuff you're designing where like
[00:22:04]
the thing you have just like isn't good.
[00:22:08]
It's like not worth showing to someone yet.
[00:22:10]
And you'd have a whole discussion about how it's going to be and how this thing is gonna
[00:22:14]
work and right.
[00:22:16]
And yeah, when you're in the exploratory phase and to be clear, you're not talking about
[00:22:22]
Elm as we know it right now.
[00:22:23]
You're talking about some experiments.
[00:22:25]
So, but yeah, I totally can relate to that.
[00:22:28]
Yeah.
[00:22:29]
I want to be clear.
[00:22:30]
Like part of why I'm doing this exploratory work is like, I feel like Elm for browsers
[00:22:35]
is like, I like it.
[00:22:36]
I think it's great.
[00:22:37]
Yeah.
[00:22:38]
I don't really have a lot of cool ideas, right?
[00:22:41]
You know, it's like, I don't want to break it.
[00:22:43]
I want, I like it.
[00:22:45]
The core pieces are mostly in place.
[00:22:47]
Yeah.
[00:22:48]
So I kind of, at least yeah, beginning of this year, I was trying to, I was doing a
[00:22:52]
lot of exploration of like, what's something that is really special that I could do uniquely.
[00:22:58]
And I'd spent, you know, like two straight years doing like cleanup or not cleanup, but
[00:23:03]
like solidifying, you know, like making the parse very fast.
[00:23:06]
Which had amazing results, but probably was tedious for you.
[00:23:12]
It's not necessarily that it's tedious.
[00:23:13]
It's that it's like, I think there's something so exciting about, you know, coming to functional
[00:23:19]
programming for the first time, seeing that and being so excited about it.
[00:23:23]
And I felt like my projects were less and less connected to that feeling.
[00:23:28]
And so, yeah, so I wanted to do something where it's like, Oh, the magic of more side
[00:23:33]
effects, you know?
[00:23:34]
And so, you know, I was exploring, like I mentioned in the little roadmap doc, like
[00:23:38]
the integrating testing or integrating the formatting stuff or fixing the equality thing.
[00:23:45]
I think for my passion for the project, and I know this happens with other open source
[00:23:51]
authors, it's like, I need to prioritize the passionate work in balance with this other
[00:23:57]
kind of work that exists out there.
[00:23:59]
So that's kind of where I was coming from.
[00:24:01]
And so I forget if I said earlier, but like just thinking about how do we communicate
[00:24:07]
with, how does Elm, how do the borders of Elm fit together nicely with a server or database
[00:24:15]
in a way that like, it would be no change to Elm, but it could be really valuable to
[00:24:19]
someone using Elm that, Hey, things got a lot easier over there.
[00:24:23]
So, and I have that feeling of excitement again, but I don't know, it's still so early
[00:24:30]
where it's like, you know, Oh, like if I do this inlining thing and I'm generating,
[00:24:34]
nah, nah, nah, it's like, the question is like, does that work?
[00:24:38]
Right?
[00:24:39]
Regardless of what designs it may produce at some point.
[00:24:42]
So it's still very speculative.
[00:24:43]
Yeah, where does it fall apart if you pull on the thread or does everything come together
[00:24:47]
elegantly?
[00:24:48]
You have to sort of go for a while before you.
[00:24:50]
Yeah.
[00:24:51]
And I guess I can say like, you know, I'm like, one of the things I'm exploring is like
[00:24:55]
very aggressive inlining because there are contexts where that can be helpful.
[00:25:01]
And so I've been following the WebGL work and I'll chat with the people who are pushing
[00:25:06]
that and sometimes it'll be like, Oh, like that kind of inlining could be really interesting
[00:25:11]
in the context of like GLSL, like the shader language for 3D stuff.
[00:25:17]
So like, that's not what I'm working on, but it's like this sort of exploratory compiler
[00:25:21]
work at this stage, the only thing it can produce is like these possibilities.
[00:25:26]
So I think it sort of, you know, I've seen open source projects that like, well, I don't
[00:25:31]
want to, I never want to be talking really big about what I can do later.
[00:25:36]
I want to have done it before I.
[00:25:40]
Before you share the results.
[00:25:41]
Yeah.
[00:25:42]
Yeah.
[00:25:43]
And I know not everyone open source feels the same way, but right.
[00:25:46]
You don't want to make promises that may not be kept.
[00:25:49]
Yeah.
[00:25:50]
And I mean, this ties into like funding stuff as well, where like, if you want to be like
[00:25:56]
crowdfunded, I mean, people who have been in like programming language circles long
[00:26:02]
enough can probably think of examples where they saw like a crowdfunding thing and they
[00:26:07]
had really cool demos and then it turns out those demos are not like possible to implement,
[00:26:12]
but the money went there and you know, that to me is a situation I would never want to
[00:26:18]
be in the center of.
[00:26:19]
So like, that's part of why I think like having a nonprofit for like conferences makes sense,
[00:26:25]
but like tying people's labor, like development work to it.
[00:26:30]
And that's, you know, I've asked around people like, Hey, if we could do like a year contract
[00:26:34]
through crowdfunded stuff, would you be interested?
[00:26:38]
And a surprising number of people will be like, definitely not.
[00:26:41]
Yeah.
[00:26:42]
If you don't have anything to showcase or to promise, then like, what are you selling?
[00:26:47]
Yeah, exactly.
[00:26:49]
So I think it's like, and because I have sort of personally struggled with taking it really
[00:26:54]
hard, not meeting people's expectations, even if those expectations aren't my goals for
[00:27:00]
the language, tying that to my livelihood seems like it for me would be not a viable
[00:27:07]
model.
[00:27:08]
Right.
[00:27:09]
Yeah.
[00:27:10]
I mean, it seems like a key part of like the secret sauce of Elm from my outsider's perspective
[00:27:16]
is like you explore big ideas, which I've got to imagine some of those explorations
[00:27:23]
we haven't heard about because they didn't work out.
[00:27:25]
I mean, just based on the kind of crazy, really like radical in some ways, features of Elm
[00:27:34]
that we now think of as the norm and it's our baseline.
[00:27:38]
I've got to imagine that there were some crazy ideas that didn't pan out too in that process.
[00:27:43]
Yeah.
[00:27:44]
I mean, I have an easier time talking about the ones from before because it's clear I'm
[00:27:48]
not promising that.
[00:27:50]
Also with the commands and subscriptions, that was one where no one was doing it that
[00:27:56]
way.
[00:27:57]
I don't know.
[00:27:58]
I think there's a story around this I don't tend to tell publicly.
[00:28:02]
I'll keep it that way, but it's just like people were curious about how to do that,
[00:28:07]
generally speaking.
[00:28:08]
And I was thinking like, there's a way to design it where it's much more like type heavy.
[00:28:15]
So the designs I had, it was like you have to have open union types and you can express
[00:28:21]
with each kind of effect, it'll show up in the type.
[00:28:25]
So you can give permissions to particular parts of your code to say you have permission
[00:28:31]
to use the HTTP effect and you have the permission to use the logging effects or whatever.
[00:28:36]
And that would be clearly documented.
[00:28:39]
We go through how to do that in the type system and I'm looking into, I guess they call them
[00:28:44]
polymorphic variants in OCaml, but there was a discussion about it in Elm recently, like
[00:28:49]
open custom types where you can just arbitrarily add more variants.
[00:28:54]
And we sort of went to the limit of that.
[00:28:58]
And then we were like, what if we didn't do any of that?
[00:29:02]
And then we were like, oh yeah, that's nice.
[00:29:05]
So I think that's one of the things of like, I know with, I want to say like larger languages,
[00:29:13]
we'll have these discussions more publicly.
[00:29:15]
But I think part of that is because when you're on like a corporate funding model, there are
[00:29:21]
benefits to like, so many of the considerations shift in subtle ways.
[00:29:28]
So like if I'm a VP of engineering at Google and I'm putting some of my budget towards
[00:29:34]
open source project, I'm asking like, well, why am I not putting that towards features
[00:29:38]
on the products in my org?
[00:29:42]
So if they're not getting a certain level of usership, it's like, well, we really should
[00:29:47]
phase this out.
[00:29:49]
What I'm saying is like, the goal is like, you want it to be big.
[00:29:51]
You want it to be as big as possible in those kinds of environments.
[00:29:55]
Like part of why like Apple has their Objective C and Swift is like, they want everyone to
[00:30:01]
be using their stuff and not someone else's app ecosystem.
[00:30:05]
And the reason Google is putting all this money in their JavaScript is they want people
[00:30:09]
to use the web and not apps.
[00:30:11]
And so when you have the full set of people programming online, there's certain avenues
[00:30:17]
that make sense, especially if you have billions of dollars to spend.
[00:30:21]
And so like you can hire the dev rel person to be social media person, to handle the GitHub
[00:30:28]
issues.
[00:30:29]
They can like organize all the issues and add the nice labels and organize, Hey, this
[00:30:35]
would be a patch, but this would be minor and this would be major.
[00:30:38]
And then bring all that information into a meeting with the core developers and try to
[00:30:43]
hash out like what can fit in the capacity.
[00:30:46]
And then the dev rel person goes and has those conversations.
[00:30:50]
And so it's like, you have a more traditional like corporate product kind of structure where
[00:30:56]
it's like, there's a support team, there's developers, there's a CEO who is like the
[00:31:02]
VP.
[00:31:03]
You know, it's like, you don't call them that, we don't think of it that way.
[00:31:05]
And so I think...
[00:31:06]
There's a direct line through the incentives.
[00:31:08]
I've heard you talk about that, how like there are billions of dollars at stake for Google
[00:31:12]
being the default search engine in different browsers and that sort of thing.
[00:31:16]
So they can sort of justify large budgets for ensuring that they're good stewards of
[00:31:23]
the web.
[00:31:24]
The support team, if you want to look at it that way, can be big.
[00:31:30]
So like Chrome, I think is like 60 in Mountain View last I heard.
[00:31:35]
I don't know the actual number.
[00:31:36]
It's been years since I've been in that world.
[00:31:39]
But I think that's one thing that like on a patronage model, it's like super hard to
[00:31:44]
argue for those kinds of roles.
[00:31:46]
It's like not only you're not writing software, you're just talking online.
[00:31:51]
Like what?
[00:31:52]
And so, yeah.
[00:31:53]
So I always viewed patronage as a very nice model, as like the nice spot to be in.
[00:32:00]
And that's kind of what I aimed for previously.
[00:32:04]
So even at this company, they knew I was working on Elm Review and they may have thought they
[00:32:11]
would help me out working on it.
[00:32:14]
But in practice, I don't get the time to do it.
[00:32:17]
So I feel like I'm getting patronage, but I'm not getting anything or much out of it.
[00:32:23]
And I'm not even working, designed to work on it full time where I would have other limitations,
[00:32:30]
I'm sure.
[00:32:31]
So on that PL talk, there was a Jose Valim.
[00:32:37]
Yeah.
[00:32:38]
That with his Alexa support subscription.
[00:32:41]
subscription.
[00:32:42]
Yeah.
[00:32:43]
Yeah.
[00:32:44]
That sounded amazing.
[00:32:46]
Like he gets a lot of feedback from the community and he helps them.
[00:32:51]
And that just sounds awesome for all parties.
[00:32:54]
Yeah.
[00:32:55]
Well, I talked with him a bit more.
[00:32:57]
And one of the things I noticed is like there's personal disposition that fits into that as
[00:33:01]
well.
[00:33:02]
Yeah.
[00:33:03]
So like he's an inbox zero person.
[00:33:08]
I think that's like that it makes sense that that goes with that kind of relationship or
[00:33:14]
running things in that way.
[00:33:16]
And like I have a harder time with that personally, just because like in a deep way, like I surprises
[00:33:24]
me very deeply troubled.
[00:33:27]
I am with you on that page.
[00:33:29]
And Jose, he's consulted to start with, right?
[00:33:34]
Yeah.
[00:33:35]
So I think he I mean, he says, I think like Dillon mentioned earlier, it's like it's a
[00:33:38]
skill that you learn, which I believe, but I also do want to, you know, say like the
[00:33:44]
way both of you guys communicated.
[00:33:47]
I was like, I could hear more than skill.
[00:33:50]
Like it's like you have some like wisdom about that, that I don't I don't see in myself necessarily.
[00:33:56]
But yeah, I'd be happy to talk to you about it more in depth at some point.
[00:34:02]
But my background is in coaching and consulting.
[00:34:05]
And I mean, they're learnable skills.
[00:34:07]
Well, I think this connects to one of the things Jeff was mentioning, which was like,
[00:34:12]
with Julia, they had four people who all had like different, different ways of behaving
[00:34:19]
and different strengths.
[00:34:21]
And so that's something that like, for people who are interested in pursuing some kind of
[00:34:26]
goal with Elm, seeing how those can fit together, right.
[00:34:30]
So like, one thing that was really powerful for Elm reaching more people was like, Richard's
[00:34:36]
enthusiasm.
[00:34:37]
Yeah, definitely.
[00:34:38]
Getting that to in a practical way, like in a way that I can't, I am not deeply in
[00:34:46]
the culture of like, front end development, to be able to do the kinds of things he was
[00:34:52]
able to do.
[00:34:53]
And so that was his, you know, special ability.
[00:34:56]
And so I think that's something even though we don't have as formally as like formal relationships
[00:35:02]
as the Julia people had early on is like, that's kind of how I see it.
[00:35:05]
Richard clearly played a role as a sort of, yeah, and it was not a public face.
[00:35:11]
But it wasn't like I said, you've been selected, Richard, you are the one.
[00:35:16]
Right.
[00:35:17]
Like, he just totally to the point where at one of the Elm conferences, me and Richard
[00:35:24]
were sitting at a table like outside the conference venue.
[00:35:28]
And someone walked up and was like, Oh, Richard Feldman.
[00:35:32]
Wow, I've seen all your talks on Elm.
[00:35:35]
And then I was like, Oh, yeah, it's awesome.
[00:35:39]
Really good ones.
[00:35:41]
Yeah.
[00:35:42]
That's amazing.
[00:35:43]
So I think like, and we see that with like, people doing these ambitious tooling projects,
[00:35:51]
the WebGL stuff that's happening, where Ian's really like finding a way to make it progress.
[00:35:57]
And like, I don't, you know, I don't, I don't know how much he talks about in public, but
[00:36:00]
you know, making choices to make that kind of stuff happen.
[00:36:03]
Yeah.
[00:36:04]
So that's what I'm hopeful about.
[00:36:08]
And like, thing that I, I sort of, I don't know, I want to share is just like, in working
[00:36:15]
in this way for almost a decade now, I've sort of learned my personal limits through
[00:36:21]
like people being disappointed and me wanting to do more and doing more, but then paying
[00:36:27]
the price somewhere else in my life.
[00:36:29]
And sort of like learning how all those things are related.
[00:36:32]
Right.
[00:36:33]
And I think if I get into this debate today, I'm not going to be good when I sit down at
[00:36:40]
dinner.
[00:36:41]
You know, I don't want to bring that energy into, into these other places.
[00:36:44]
And so like, I have to be careful about these things.
[00:36:46]
And so I'm hopeful that in talking about that and like talking about the difficulties in
[00:36:53]
funding, maybe that's helpful to other people in the community who are facing similar issues
[00:36:59]
or I don't know.
[00:37:00]
I wanted to follow up on what you're saying about having the patronage time, but not actually
[00:37:06]
having the time.
[00:37:07]
That's a super common story in open source.
[00:37:09]
I've heard from many people is like, even with 20% time, the, you know, if you're doing
[00:37:15]
static analysis kind of stuff, it's like to load that in to your head.
[00:37:19]
It's like, okay, that was my day.
[00:37:21]
Yeah.
[00:37:22]
Totally.
[00:37:23]
So, and I know with a lot of problems, it can be that way.
[00:37:25]
So it's like certain kinds of work you can do in that way, but I know people struggle
[00:37:29]
to find the balance.
[00:37:30]
And so it's something where I think you have to have really clear boundaries and like expectations
[00:37:37]
with the person supporting the work.
[00:37:40]
But yeah, so I don't know, like, I wonder if having a more like distributed network
[00:37:46]
of people doing consulting setups creates more space for that kind of stuff.
[00:37:51]
I honestly don't know.
[00:37:53]
I think the Julia person was saying, it's like, we all need a Verall.
[00:37:57]
I think, you know, yeah.
[00:38:00]
Yeah.
[00:38:01]
I mean, it's a, it's a challenge to tie the incentives back to the thing itself because
[00:38:07]
ultimately at some point there's a natural push towards doing more of the thing that's
[00:38:12]
incentivized by the business and the business model and all those things.
[00:38:16]
And if, if that thing is like, you're getting paid to ship this product, then even if they
[00:38:21]
say your 20% time work on this open source stuff, that's great.
[00:38:26]
If that's actually not helping with that business goal, then eventually it's, it gets squeezed.
[00:38:34]
That's just the, the, the natural dynamic that's set up there.
[00:38:37]
And it's the same with the patronage model.
[00:38:39]
So like some, I like, I feel like the goal is somehow if you can like relate the value
[00:38:45]
that you're creating and be paid for that, then there's a natural incentive where it's
[00:38:51]
like, Oh, that thing that you're doing, that's creating value for us, do more of that.
[00:38:55]
And like have more money.
[00:38:57]
That's the, that's the dream, right?
[00:38:59]
If you can tie those things more directly together.
[00:39:01]
And so that's, I think why me and my wife are exploring the particular stuff we're exploring.
[00:39:07]
And I think part of the like culture clash is that so many languages are on the like
[00:39:12]
big company model and in that one, like growth and market share, no one necessarily like
[00:39:18]
says it explicitly, but like those are huge factors for people making choices about headcount
[00:39:25]
where it's like, if you are bringing 70% of people, right?
[00:39:31]
So a concrete example, like if the developer tools in Chrome are so much nicer that it
[00:39:38]
drives developers to Chrome, well then the websites work better on Chrome and that will
[00:39:43]
drive users to Chrome and the developers will tell their friends and family to use Chrome
[00:39:48]
cause it's nicer.
[00:39:49]
And Hey, that's default search.
[00:39:51]
That's something that you can look at like the financial filings of Google, how much
[00:39:56]
they spend per order.
[00:39:59]
It's incredible.
[00:40:01]
And it's like, how are there so many ads making, they can spend that just to give to Apple,
[00:40:08]
you know, and that like Apple makes about the same amount of money on default search,
[00:40:13]
selling default search as they do from like app store, the 30% they take on app purchases.
[00:40:19]
It's crazy.
[00:40:20]
So like the quantities we're talking about, but like, so when you have your mindset of
[00:40:24]
like, well, in the context of JavaScript, they would do this.
[00:40:29]
It's like, well, this whole structure that they fit within like 5% market share, 1% market
[00:40:34]
share, all these things are like numbers that when you go to negotiate your traffic acquisition
[00:40:39]
costs like matter millions of dollars.
[00:40:41]
So I think that's part of where there's like a culture clash between, and I do also think
[00:40:47]
like because there's so much more money, if you're willing to do things that way, like
[00:40:53]
I personally have come to feel that like marketing is a big deal.
[00:40:56]
If you want market dominance or growth or that kind of thing.
[00:41:00]
And I don't know if you can have market dominance in programming languages without also having
[00:41:09]
comparable funding.
[00:41:10]
So that's something that like when I started on Elm, I didn't believe that, you know, I
[00:41:14]
had this image that like, if I make a really nice thing and it solves problems, well, people
[00:41:19]
will see that and they'll like, and I never wanted to everyone to use it necessarily.
[00:41:24]
I just, my thing was like, I want people to know about the option, make a more informed
[00:41:28]
choice to use it or not.
[00:41:31]
But the more I've worked on it is like, if you really are doing like a, I don't know,
[00:41:36]
there's just these like nonlinear returns to marketing, especially if it's tied to a
[00:41:42]
money machine, like it is it, Microsoft or Facebook or that kind of stuff.
[00:41:46]
So I don't know, that's a question that I don't have an answer on, but it's something
[00:41:49]
that I'm like more persuaded by over time.
[00:41:52]
Yeah.
[00:41:53]
I also wonder if there's inherently like certain design choices in Elm that are not going to
[00:41:59]
be as, you know, popular.
[00:42:01]
Like if you're saying like, we're constraining what you're doing, a lot of people are going
[00:42:06]
to say like, oh, that sucks.
[00:42:09]
Like why won't you let me do that?
[00:42:11]
People don't want to hear that, but a certain set of people are like, oh my God, that's
[00:42:14]
amazing.
[00:42:15]
You mean I can't do this thing in that context?
[00:42:18]
That's brilliant.
[00:42:19]
Like then I won't get shot in the foot there.
[00:42:21]
But do you think that that's inherently a quality of the like language design that it
[00:42:26]
won't appeal to certain people?
[00:42:29]
Yeah.
[00:42:30]
I think like the more I thought about like if I was designing for growth and market dominance,
[00:42:36]
this the limiting features is a loser strategy.
[00:42:39]
So like the great thing about you can sort of pejoratively say kitchen sink, but in a
[00:42:44]
more friendly way, say like, you know, languages that are eager to add features over time.
[00:42:51]
It means that you can have all these different sub communities of different preferences and
[00:42:57]
dispositions and you see that where like a lot of different companies have their own
[00:43:01]
style guide.
[00:43:03]
So they say, we use these 10 features and we explicitly don't use these 20 features.
[00:43:09]
So that exists in like the C and C++ world where it's like, yeah, we don't check in any
[00:43:14]
code that does this kind of template stuff and we don't do any kind of code that uses
[00:43:19]
like prototype stuff.
[00:43:22]
And so it's a strategy that creates a space for every disposition.
[00:43:28]
But the price is that for any given disposition, you're actively asking questions about where
[00:43:35]
are those boundaries for you and where should they be for people in the company and new
[00:43:39]
people are coming into the company.
[00:43:41]
So I think at least from my perspective and the things I'm interested in, like I like
[00:43:46]
types, I like no side effects.
[00:43:49]
It's like my preferences can't really be well represented in the like super, you know, choose
[00:43:57]
your own adventure way of interacting with a language.
[00:44:00]
So I do think that's like, I mean, could a language exist someday that was statically
[00:44:06]
typed and had managed effects?
[00:44:09]
I mean, I imagine if like Facebook or Microsoft, I mean, Microsoft tried with F sharp, but
[00:44:15]
well in which F sharp you can interact with object oriented and imperative code.
[00:44:22]
And you know, like it's more additive than like creating a sound sandbox where all the
[00:44:28]
types are sound and you don't have, you know, side effects and that sort of thing.
[00:44:33]
I mean, that's a bold position for a language and which is what we love about it.
[00:44:38]
But then in terms of making a popular choice, like TypeScript is the perfect formula for
[00:44:44]
a super popular growth trajectory because you're like, Hey, take this thing, you know,
[00:44:49]
change the extension to dot TS or actually you don't even have to do that.
[00:44:53]
And now it's TypeScript and you've got better intelligence and people are like, Whoa, that's
[00:44:56]
cool.
[00:44:57]
Which it is.
[00:44:58]
TypeScript is brilliantly designed for its goals.
[00:45:00]
And interestingly, I saw this talk from Bjarne Stroustrup, I think I'm saying right, who
[00:45:06]
did C plus plus in the eighties and he was saying like every C program was a C plus plus
[00:45:12]
program like, and you know, that's a massively successful language if you're, if what you
[00:45:18]
consider success is market share and growth, right?
[00:45:22]
And so it's, it's just like, it's a winner of a strategy for those kinds of goals.
[00:45:27]
And so I think that's one of the things that's like when people come in with, you know, everyone,
[00:45:32]
when they're sort of new to programming languages, they have an idea of what languages should
[00:45:35]
be.
[00:45:36]
And so when they come and they see a language that's not doing those kinds of things, it's
[00:45:39]
like, what are you doing?
[00:45:40]
You're totally blowing it over here.
[00:45:42]
It's obvious this would work better.
[00:45:44]
And so I think that's one of the interesting things I've noticed as I've like learned more
[00:45:47]
languages and talk to more language designers is like, once you know what their goals are,
[00:45:53]
the languages always make more sense.
[00:45:55]
And it's like, so I have come to this place where it's like, I want to have respect for
[00:45:59]
every language.
[00:46:03]
And if they want to do it, you know, I have my own opinions, but like, Hey, people have
[00:46:07]
their opinions about what my stuff too.
[00:46:08]
And it's like, it's going to find its audience or it's not, or it's going to fulfill the
[00:46:12]
goals of that person or it's not.
[00:46:14]
So I don't know.
[00:46:15]
So my, my exciting one was like when I became a PHP defender, I was like, you know, people
[00:46:20]
are really not appreciating how easy it was to build what you wanted, you know, and it's
[00:46:26]
like, you can make all these language criticisms and that's fine and true, but like you can't
[00:46:32]
in getting caught up in that.
[00:46:34]
It's like, essentially, I think it's a mistake as a language designer to let your personal
[00:46:38]
preferences blind you to what people find exciting in other languages, right?
[00:46:43]
Like it was a, it's a cool lesson to look at PHP and see the power of ease of getting
[00:46:49]
started.
[00:46:50]
Right.
[00:46:51]
Right.
[00:46:52]
Are you not blinded by your love for static types?
[00:46:53]
I don't think so.
[00:46:54]
I mean, like, I look at like Julia, like if you say, Hey, we're going to do a language
[00:46:58]
for scientific computing.
[00:47:00]
I would say, all right, one of the key issues is like, we want addition to work nicely with
[00:47:07]
floats and in on all these different platforms.
[00:47:10]
And we're, we have scientists who say, Hey, I care about whether not about, you know,
[00:47:15]
Turing, what Turing had to say about anything.
[00:47:18]
So like, and you look at the history of that thing.
[00:47:21]
So it's like, I look at it and I say, is there a way to do like matrix math in a type functional
[00:47:27]
way that's like really feels amazing.
[00:47:29]
And it's like, I don't know, I don't know.
[00:47:31]
So I think when you look at the different domains and you see the choices they make,
[00:47:35]
it's like the way that I find like valuable and enlightening is to see what everyone else
[00:47:42]
is seeing in it, you know, cause it's the same with like, I can appreciate a lisp, you
[00:47:46]
know, and it's all the things that people say about it.
[00:47:50]
Like it's so, it's so concise and you have this beautiful syntax that's rebindable in
[00:47:56]
these cool ways.
[00:47:57]
And it's like, I see that.
[00:47:58]
It's not my preference, but I can enjoy as like an aesthetic point in the design space
[00:48:03]
that coheres.
[00:48:04]
Does that make sense?
[00:48:05]
I don't know.
[00:48:06]
I think it makes sense.
[00:48:07]
Like any, any language or tool or whatever it might be should have a, there's no right
[00:48:13]
or wrong answer, but there are compelling stories or not so compelling stories and a
[00:48:18]
compelling story could look completely different than a different compelling story.
[00:48:23]
They could both be compelling.
[00:48:24]
I honestly, now that I think of it, I have the most trouble with languages that are really
[00:48:29]
focused on lots of ways to say something.
[00:48:33]
I know people really love that.
[00:48:35]
It's hard for me to like fully step into those shoes in the way that I can sort of step into
[00:48:39]
the mind of like someone who just wants to do their weather simulation or run their like
[00:48:44]
employment statistics graph.
[00:48:46]
But yeah, I mean, same like with the dependently type stuff, like those languages are really
[00:48:51]
cool.
[00:48:52]
I personally struggle with them sometimes, but like I can see the beauty there.
[00:48:59]
So I don't know.
[00:49:00]
Yeah.
[00:49:01]
We went to a bit off of funding there.
[00:49:02]
I mean, that was a great, that was a really good conversation.
[00:49:05]
Maybe we can change gears.
[00:49:07]
Maybe this will be our last topic unless there's anything else you want to cover, Evan.
[00:49:11]
So I know that, you know, Yaron and I, as people who are very passionate about tooling
[00:49:17]
are very interested in sort of the Elm tooling ecosystem and you know, I think you made a
[00:49:24]
point about this in a talk, Evan, that like use Elm to do cool things.
[00:49:28]
Like Elm is this language that has these design features that make for really interesting
[00:49:33]
use with tooling.
[00:49:35]
Yeah, for sure.
[00:49:36]
So like maybe let's talk a little bit about like the tooling landscape and how Elm fits
[00:49:43]
into that and what's going on in the ecosystem.
[00:49:47]
For example, you know, we've got some really cool stuff in the IntelliJ plugin for Elm
[00:49:53]
now.
[00:49:54]
We've got the Elm language server doing a lot, you know, adding a lot of features.
[00:49:59]
We've got, you know, Yaron is doing a lot of cool stuff with Elm review these days with
[00:50:04]
static analysis.
[00:50:05]
With great tweets as well.
[00:50:08]
Great work on that.
[00:50:12]
Yours are better apparently.
[00:50:13]
No, no, no.
[00:50:14]
It's like you know the tricks, right?
[00:50:18]
You got to get that GIF, you know, immediate comprehension.
[00:50:22]
His marketing team is on top of it.
[00:50:25]
There's a lot of like cool stuff going on there and like I'm sure the people who are
[00:50:30]
working on those tools appreciate the like joy of having a typed language without side
[00:50:39]
effects.
[00:50:40]
I certainly do.
[00:50:41]
Yeah.
[00:50:42]
So like, like no, no question here.
[00:50:44]
Yes.
[00:50:45]
And I think like as a compiler person, it's like I very deeply know like the price of
[00:50:50]
some something that looks little in terms of like all the optimizations you can never
[00:50:55]
do because of it.
[00:50:58]
So yeah, so I think it's been really interesting to see that develop and especially in cases
[00:51:05]
where like I think a while back we had this question of like, well, the compiler has this
[00:51:11]
information like can the compiler expose it?
[00:51:15]
And my challenge was like, I don't, I'm not a IDE person.
[00:51:20]
I don't necessarily know what people are looking for and what they want from that.
[00:51:25]
So like I couldn't, I just didn't have an intuition of what, how that would work.
[00:51:29]
And like, you know, I have questions like I want your CI compile times to be as fast
[00:51:34]
as possible.
[00:51:35]
How does that match with the goals of an IDE that wants type information in this or that
[00:51:42]
location?
[00:51:43]
So I think there was a point, I don't know what happened, but people sort of decided
[00:51:46]
like we're going to pursue this in the like editor tooling space and have been making
[00:51:52]
really cool progress with type inference and the features that can come from that stuff.
[00:51:58]
And you know, I think I ha it sounds like I have bad intuitions for ID stuff basically,
[00:52:05]
because I'm like, why do we need to keep anything in Ram?
[00:52:07]
Why can't we, you know, and I think for like for compiler stuff, it makes sense to view
[00:52:14]
it that way.
[00:52:15]
Cause it's like, well, I need to save everything to disk between runs no matter what.
[00:52:19]
So if like, if I can make that so fast that it's not an issue to get things under your
[00:52:25]
cursor, Hey, that's cool.
[00:52:27]
But maybe that causes all sorts of problems that I don't appreciate.
[00:52:30]
And so I think over time we sort of found that like that's something that I don't know
[00:52:35]
how to do and they do.
[00:52:38]
And I think that in general has been a cool way for things to work.
[00:52:42]
So like, I know there's little explorations of like, what would it look like to run Elm
[00:52:46]
on what's it called?
[00:52:49]
Electron.
[00:52:50]
Um, and it creates all these questions of like, well, you need to write to files, but
[00:52:55]
files don't work in browsers.
[00:52:57]
And so in the package ecosystem, you'd have to have a way to market, not just as an application,
[00:53:02]
but as like a browser application versus electron application.
[00:53:06]
So before you even start on the project, you're, you're asking these really intense design
[00:53:12]
questions that would have an impact on every person using Elm in the whole ecosystem.
[00:53:17]
And so with those kinds of things, it's sort of, in some ways it makes sense to say, Hey,
[00:53:21]
like try and experiment, call it pine and run it as like a super set that has this.
[00:53:28]
And then once that's like born out in reality, then talk about how to bring it back in and,
[00:53:34]
and in doing, in doing that project, you can start to build a relationship with the people
[00:53:40]
who you'd need to coordinate at some point in the future and say, Hey, you know, like
[00:53:44]
people can see your work, they know what your, what your style is in terms of what you're
[00:53:49]
doing.
[00:53:50]
So what, instead of having that discussion on day one, you have it much later on.
[00:53:55]
And at that point, you yourself might find, Hey, I don't, I do want this to be a separate
[00:54:00]
thing.
[00:54:01]
So that, that, like that kind of mirrors my own story with Elm where I wanted typed functional
[00:54:05]
programming in the browser.
[00:54:07]
And I was like, well, should I make a Haskell compiler?
[00:54:11]
Should I make a OCaml compiler?
[00:54:13]
Yeah.
[00:54:14]
And as I thought about the problems and what my goals are and what was interesting to me,
[00:54:19]
I ultimately was like, well, I do want to make a separate thing, you know, like, and,
[00:54:23]
and it'd be so hard to meet the needs of everyone in Haskell and what I'm looking for and the
[00:54:30]
people who I'm interested in having some sort of interaction with through this work.
[00:54:35]
I have to admit it's a bit embarrassing to think back on this now, but I built a project
[00:54:40]
called Elm TypeScript Interop a few years back.
[00:54:43]
And you know, I mean, it's, you know, it's a handy project.
[00:54:48]
You know, you point it at your Elm code base and it statically analyzes all the ports and
[00:54:53]
it generates a TypeScript declaration file that gives you IntelliSense and types around
[00:54:58]
registering your Elm ports, you know?
[00:55:00]
And I remember thinking like, wow, like that the goal was like, wow, this would be cool
[00:55:06]
if this was integrated into the compiler.
[00:55:08]
And fortunately I never, I never suggested that or, or requested that.
[00:55:15]
But in retrospect, I'm really glad that I just went off and I was building it as an
[00:55:21]
independent thing and got to the point where I realized that wasn't actually my goal before
[00:55:27]
going forward with that.
[00:55:28]
Because in retrospect, it, it, well, it was an experiment that actually now I'm deprecating
[00:55:35]
in favor of a new library that I'm building for, for typed, interrupt with TypeScript that
[00:55:39]
I think is like a far better approach, which hopefully will be announced by the time people
[00:55:45]
hear this episode.
[00:55:46]
Normally this, this, that would have been the previous episode.
[00:55:50]
Yes, that's right.
[00:55:52]
Our previous episode, hopefully we'll, if you listen to our last episode, you'll know
[00:55:56]
what I'm talking about.
[00:55:57]
Yeah.
[00:55:58]
But my point being that that worked really well to really have an experiment that, I
[00:56:03]
mean, I didn't have to get permission for that experiment.
[00:56:06]
I, I just, I built it, people used it.
[00:56:09]
Some people thought it was useful.
[00:56:11]
Some people thought it didn't quite work for their project.
[00:56:13]
And then I later realized that there, there's a way that I think is far better to, to accomplish
[00:56:18]
that goal.
[00:56:19]
And fortunately it wasn't built into the Elm compiler output that it also gives you a TypeScript
[00:56:25]
declaration file, which at the time I thought would have been a good idea, but seems silly
[00:56:29]
in retrospect.
[00:56:30]
Yeah.
[00:56:31]
I think one of the things that's been like a challenge for me conceptually is like, I
[00:56:36]
want everything to fit together just right.
[00:56:39]
And so I think that like suggests that integration is the optimal path in more cases than it
[00:56:46]
necessarily is.
[00:56:48]
It seems like that's something that like, especially in tooling, we're starting to like
[00:56:53]
be aware of the like, Oh, like I'm glad this is separate.
[00:56:56]
Right.
[00:56:57]
It's like that, you know, you don't have to worry about 19.2 verse 0 20 and like what
[00:57:04]
that means to, and it's like, look, I just want to do this patch.
[00:57:07]
Like it's not so serious.
[00:57:08]
So yeah, I think that's something that like we're, we're learning more about like collectively
[00:57:15]
how that balances and fits together.
[00:57:17]
Yeah.
[00:57:18]
Yeah.
[00:57:19]
And it is really interesting, like the fault tolerant parsing and hyper fast parsing are
[00:57:26]
two different goals between the Elm compiler and you know, the Elm language server and
[00:57:30]
all the tooling.
[00:57:31]
I do see for sure that there is like a lot of reinventing the wheel happening when I
[00:57:37]
see people like Yerun and Kolya and Keith and all these people like, and Aaron Vonderhaar
[00:57:43]
with Elm format, like figuring out compilers and getting this stuff, but that doesn't necessarily
[00:57:48]
mean that Elm needs to do it.
[00:57:49]
But I know that I believe Aaron Vonderhaar is working on some format that gives you a
[00:57:55]
JSON format of the Elm syntax tree, which is another great example of sort of, you know,
[00:58:02]
like filling in the gaps in the community in a way where we can rapidly iterate and
[00:58:07]
figure things out without being blocked on core features.
[00:58:13]
But I do think that like there's, there definitely seems to be a need to create some shared things
[00:58:18]
in the tooling ecosystem to prevent reinventing the wheel.
[00:58:21]
But I think that's happening in that group of like people who are passionate about tooling,
[00:58:26]
like, you know, Yerun and Aaron Vonderhaar and these people.
[00:58:29]
Yeah, which isn't to say like, I want to not be a part of it.
[00:58:33]
It's just like, I don't, I'm like, it's always interesting to like sit in the meeting, but
[00:58:40]
not like I can't lead them usually.
[00:58:43]
Yeah.
[00:58:44]
Like with, cause it's like, I'll have a little insights about, you know, oh, like laying
[00:58:48]
out your binary files in this way is going to be slow for this particular kind of user
[00:58:56]
who lays out their pack, like their files in this way.
[00:58:59]
As I know that, but like, I don't have the feeling of what the features need to be.
[00:59:05]
Totally, totally.
[00:59:06]
For instance, like you don't know much about WebGL, so you can't lead it, but you can help
[00:59:13]
people who are actively working on it.
[00:59:16]
You can sit in the same room and follow.
[00:59:18]
Yeah.
[00:59:19]
So that's something I'm very excited to see what happens there as a person sitting in
[00:59:23]
and some of it borders on compiler stuff, like with, you know, it's a, it's a shaders.
[00:59:30]
It's like, wouldn't it be cool if they type checked as well as, it would be very cool,
[00:59:36]
you know, and that's something that's like, oh, you're telling me I can write a type checker,
[00:59:43]
but for a different language that works in a cool different way.
[00:59:46]
So you know, I have to restrain myself with some of them where I do have enough overlap,
[00:59:50]
but yeah, but some it's like, if you want like rendering to a texture and then using
[00:59:56]
the texture back in another, you know, I don't know.
[01:00:00]
I don't know how to, I made a cube, you know, there's limits to what I know.
[01:00:08]
Well this has been an amazing conversation.
[01:00:10]
I've enjoyed it a lot.
[01:00:11]
Yeah.
[01:00:12]
Thank you for saying this.
[01:00:13]
Thank you so much for coming on and chatting with us, Evan.
[01:00:16]
We really appreciate it.
[01:00:17]
Are there any sort of closing thoughts on, I mean, so, so we, we kind of talked a lot
[01:00:23]
about the role that the community can play in sort of furthering Elm without needing
[01:00:30]
to wait for anybody.
[01:00:31]
So like, do you have any, any thoughts on, on what you think people could do to pitch
[01:00:38]
in and further the Elm community in some way?
[01:00:41]
Yeah, sure.
[01:00:42]
I'm, I'm always hesitant to suggest people do stuff because I can, I know, I can, I know
[01:00:48]
it can have a personal price.
[01:00:49]
So I want to be upfront about that.
[01:00:52]
But if you know that and you say, okay, I think like pursuing the thing that you're
[01:00:58]
really passionate about is just the path is like to be able to sustain these kinds of
[01:01:04]
projects on weekends and evenings.
[01:01:06]
It's like, you have to, you have to care.
[01:01:09]
And so like, if you're deeply excited about like sharing how fun it is for you, it's like,
[01:01:15]
is there a way you can share some demos, right?
[01:01:19]
Like tweet, like tweeting about demos and doing a video of it can be really cool and
[01:01:23]
inspiring for people or like demo applications.
[01:01:26]
Or if you're, you have a consulting firm and you want more of your clients to be using
[01:01:31]
Elm.
[01:01:32]
My personal feeling is like, if your client doesn't want to use it, then like just end
[01:01:35]
it there.
[01:01:36]
Like just don't do it.
[01:01:37]
Like, I, like, I don't know.
[01:01:38]
I mean, maybe that would be my approach, but if you're working on making a case so that
[01:01:43]
more of your particular clients are interested, like I think a really cool thing that I would
[01:01:48]
love to see is like, here's the expenses we have on our react projects and here's the
[01:01:53]
expenses we have on Elm projects.
[01:01:55]
And this is the time we spend on bug fixes.
[01:01:57]
And this is the time we spend on, you know, after the project is over revisiting for subsequent
[01:02:03]
fix up.
[01:02:04]
So you can like put it in dollar amounts that a client could really say, Oh, like, I don't
[01:02:08]
know what Hinley Milner type inferences, but like, I would like to the lower price.
[01:02:14]
Yeah.
[01:02:15]
Right.
[01:02:16]
And even just sharing like case studies and success stories can be compelling for people
[01:02:19]
to see.
[01:02:20]
And then from a technical perspective, like, I mean, two of the talks, I was going to do
[01:02:25]
these two talks at Elm Japan and Oslo Elm Day.
[01:02:29]
One was about data visualization.
[01:02:32]
Like the talk was going to be called Elm for science.
[01:02:34]
So it's like, I know if there's someone out there who's like loves statistics or loves
[01:02:40]
data visualization or loves communicating in a visual way, they can do something really
[01:02:45]
special with data visualization.
[01:02:48]
And I looked into that project for a decent amount of time and ultimately kept hitting
[01:02:53]
this barrier.
[01:02:54]
They're like, I don't love statistics.
[01:02:56]
I tolerate statistics.
[01:03:00]
And that was like a fundamental barrier for like the level of passion I'd need to sustain
[01:03:06]
that kind of project and be the person making decisions.
[01:03:09]
Like if someone comes to me and say, Hey, I need this diagram for my like, you know,
[01:03:14]
genome protein production analysis.
[01:03:18]
It's like, I need to be able to have a conversation with that person about key values or whatever.
[01:03:22]
You know, obviously I don't know this stuff.
[01:03:24]
So like finding those passions and finding that niche where the things you're excited
[01:03:31]
about match the things that you are good at or the things you want to be good at and the
[01:03:35]
things you want to be pursuing in your free time.
[01:03:38]
So that'd be kind of my advice there.
[01:03:40]
And like, you know, know that the people who are doing it are doing because they want to
[01:03:47]
do it, you know, like so.
[01:03:49]
Right.
[01:03:50]
Right.
[01:03:51]
Yeah.
[01:03:52]
And I think it's, it feels really nice when people go a little bit out of their way to
[01:03:56]
show a little appreciation when they're reporting something that could be improved.
[01:04:01]
Yeah.
[01:04:02]
So, but yeah, hopefully that's somewhat helpful.
[01:04:05]
That's great, great stuff.
[01:04:06]
And it was a, it was a pleasure just having you on the show and catching up with you.
[01:04:10]
So thank you so much for coming on.
[01:04:12]
Yeah.
[01:04:13]
Thank you so much for organizing everything.
[01:04:14]
Our pleasure.
[01:04:15]
And yeah.
[01:04:16]
All right.
[01:04:17]
Well, until next time you're in, talk to you later.
[01:04:19]
Until next time.