"The Economics of Programming Languages" by Evan Czaplicki (Strange Loop 2023)

Evan’s recent talk is now on video! Elm comes in toward the end, but definitely worth watching the whole talk!

Jeremy

40 Likes

I’ll watch the video later but this is interesting from the description:

1 Like

A great talk. Evan at his best.

3 Likes

My understanding of this talk is:

  • Evan wishes to transcend the law of capitalist accumulation getting Jeff’d
  • $400,000,000 would be a good start (kickstarter?)
  • Finally, establish a legal trust (or blockchain smart contract) for the distribution of elm-backend for a price until some other un-jeffable sustainable model is built to fund it as an open source project

Jokes aside, Elm seems to be the victim of two things: its own success, and also Evan’s extremely long-term thinking! It seems like there’s no one-size fits all model, and unfortunately you just have to find creative ways to grow and innovate without getting Jeff’d. The sponsorship from NoRedInk was great, and there seems to be at least one company doing something very similar to what elm-backend aims to do, maybe Evan should speak to them?

P.S. Someone on Slack mentioned Open Collective to sponsor free/libre software work, but I’d like to offer Snowdrift as well!

2 Likes

Linus Torvalds created linux and git and released them for free. He doesn’t seem to be worried about Jeff and yet he’s doing fine :man_shrugging:

3 Likes

You’ve pretty much hit the nail on the head @Kelvin – I think that’s the exact overall tech industry defacto thinking that Evan is discussing.

“Well it worked out for these people, that’s just the way it’s done, so just carry on, make sure you open source everything, and if it turns out bad for you, your career, your family, your ability to compete/commercialise… :man_shrugging: weird dunno [some other project] seems fine”.

The takeaways stem from Evan’s personal experience as an independent language author, not necessarily generic commentary on all open source (even though I think lots of the challenges generalise).

NB: remembered Evan has spoken directly about Linux before in this same context.

6 Likes

Very interesting talk. I just wanted to add that I absolutely love the idea of PostgrELM (just a horrible name I’m calling it) Evan mentions near the end.

I use both Elm and PostgREST often and it’s miles better (after some initial investment) than middleware platforms like rails / phoenix / django / node etc. You can eliminate so much complexity.

1 Like

image

Joke aside (was it a joke?), I seriously hope Elm 0.20 won’t drop encoders/decoders for hard coded calls to Elm Studio services. Version 0.19 already damaged enough businesses without the core team giving a :poop: so everything is possible.

1 Like

It’s always good to see and hear from project leaders in a strange loop talk. In case of Evan, I think it’s time to ask for help from neutral organizations like The Linux Foundation. There are lots of Web & Application Development projects which found their home in such organization. Why can’t Elm be one of them?

P.S: The Linux Foundation has a proven method that works for more than two decades, If it’s a good fit for Linux and Git, it probably is a better incubator for young ecosystems like Elm :wink:

2 Likes

Is there some reason that someone other than Evan could move Elm there? Or would that have to be a hard fork? I guess it seems off to ask to host a “maintainance” version of Elm 0.19 without shifting the whole project over? So probably yes, it would need to be a hard fork.

Previously I suggested Apache for similar reasons, but I think the culture there was going to be a mismatch to Elm. I like your Linux Foundation suggestion better as it seems a bit less ideological than Apache, more emphasis on just making good stuff with a like minded bunch of people.

If you are serious about it, find someone there and ask them there thoughts on it - or if they have a mailing list where you can create a public discussion on the subject? I would be keen to find out a bit more of the culture of The Linux Foundation and thoughts from its members about hosting language/compiler projects, and how that experience has been for them.

2 Likes

I’m not sure about that, but with the existence of Elm Software Foundation the process would be much easier than a single person.

I couldn’t find any programming language or compiler directly but here are some of the closest projects in relation to Elm which are registered there:

Maybe we could ask people from these projects for their experience. Are there any member of Elm community whose familiar with decision makers on mentioned projects? Unfortunately I’m not technically involved with Elm during past 6 month and had difficulties finding another Elm job in my country.

That’s all for now, sorry folks…

I wish @evancz the best and appreciate him sharing so openly.

I don’t have any great solutions, but my experience seems to resonate with what DHH says:

Things sometimes get tough in rails land for DHH:

But he seems to have fairly thick skin and just keeps going. I’m not holding DHH up as the perfect model to follow, but simply one approach that seems to be working for him.

I have put considerable effort into two OSS projects with no direct commercial payback, other than the satisfaction of learning a lot, becoming a better engineer, becoming part of great communities, and serving my customers better. Most of us do better work in public. I have discovered things I would have never discovered if I had only done what my paying engagements required. Will I ever cash out? Likely not – it seems OSS success, especially commercial success, is partly a matter of luck and perhaps personal charisma (DHH has plenty of that). It is probably best to focus on some commercial endeavor (your OSS project can help enable that) and do OSS on the side until something opens up, and if it does not, that is fine too. You can still get a lot done on the side. And sometimes the constraints of not having a lot of time or resources actually produce a better result.

4 Likes

I think you hit the nail on the head with: “bad for you, … your ability to compete/commercialize.”

If we’re talking competition, then we’re talking positioning, market, customers, competitors. Forget books about landlords, read Porter’s “Competitive Advantage.”

While the positioning is kinda-explicit (“A delightful language for reliable web applications”), it gets diluted with the “helping beginners” thing. This search for funding in public doesn’t help, either. I mean, it’s okay, great conversations, friendly, etc. But from the “…ability to compete/commercialize” perspective, I don’t have the feeling discussing these things at conferences works. It never ended well for me to talk to a client about not being sure about my strategy, no matter how friendly we might have been on a personal level.

As for your retort @supermario, there are many viable strategies in which giving everything away as open source does not endanger your career or ability to feed your family. Even as an indie language designer. Especially as a language designer, for language is power, and those who control it, control thought.

In the very post you linked, both @rupert and @GaryBozek provided solid business advice. Surprised to see Evan stuck to his misleading “TAC theory” after their comments. (Hope that doesn’t count as criticism or slamming).


Here’s one example of a “give it all away” strategy:

If I were operating under the “TAC Theory,” I’d align myself with those that challenge the big TAC players: SMBs and startups.

Then I’d execute that strategy:

I’d adjust my product to their needs and aggressively communicate my value proposition through features and roadmap that speaks to a CTO’s concrete concerns. I’d position myself as a specialist for the niche, the underdog with a focused product.

I’d re-position the competition as generalists and link them to lower productivity, slower execution, longer ttm, bloat, technical debt, loss of control, mediocrity. (This can be done with a positive spin, as with the famous “We try harder”). Heck, I’d even invent features just to punish larger competitors; I’d out-Jeff Jeff.

Then I’d find ways to prove my product saves 50% of engineering staff costs yearly, and also filters out beginners. I’d go up-skill to focus on the 10x enablers. And then I’d ask those CTO’s to chip in, raking in enough to hire sales/marketing, release maintenance, etc. and let me focus 100% on the product.

NB: This, of course is straight out of “Crossing the Chasm” playbook, recommended by @GaryBozek in that other thread.


From the sales/marketing person perspective: If I were hired to do that sales/marketing, I’d easily convince people to give large donations without ever committing to any strings. There are ways to lead with ideas and make the donations feel like better-than-fair value that it is. Most business people prefer to invest over leeching a good thing dry.


From a customer perspective, I used Elm in production since 0.17. I learned 0.16 out of curiosity and would have never considered it if it were for pay or “open core” or some shit like that.

Once I committed to it, hired and trained a developer, as a small business relying on Elm strategically I wouldn’t have had a problem donating 10-15k/year to Elm Software Foundation with no strings attached, if asked. While I never quantified it, I feel it saved me much more in reduced headcount. I’m convinced many SMBs and startups would find that level of yearly donation a great investment.

Sadly, the mission to help beginners by funding trips for them to meetups and “linking to academia” didn’t talk to me then, nor does now. I could rationalize that my donation would be a good investment regardless, but still, emotionally it just doesn’t feel right. Especially since the focus on beginners attracts all these types slamming Evan publicly. “Let me give some cash so that some rando can ‘heal’ himself by traveling on my dime” just doesn’t sound right.

If the Elm Foundation homepage said “Your donations go for Evan’s fat salary, no strings attached,” that would have clearly communicated a sustainability strategy in the language I understand.

The current value proposition simply doesn’t talk to me. And again, I’m fairly certain it doesn’t talk to a startup CTO that has on his mind his execution, staffing, customers demanding new product features, etc.

The focus on beginners repels investment. Sorry to have to say that. While I respect the altruism and all, beginners are not the customer that pays the bills.

As I type, the last comment is:

Unfortunately I’m not technically involved with Elm during past 6 month and had difficulties finding another Elm job in my country.

This comment is confirming what comes first: employers have to commit strategically first in order to hire for Elm expertise. Once the demand is there, beginners will learn by themselves.

(@novid not a criticism of you or what you said; that’s a valuable contribution to this discussion).


I’d also like to point out Andrew Kelley of Zig language as an example to study. He deliberately charted the sustainability and growth path at the outset, and is executing it well. Evan has a different temperament so this is not the kind of “look at this other thing and do the same” advice; the point is that business thinking and clear positioning can work in the niche.

4 Likes

Great recommendations, especially the first essay contributes one important element of the solution space.

I understand Evan’s preoccupation is “How to make a living solely by creating an open source language on my own terms, without any strings attached” which is a different problem space.

To be clear, it’s a valid problem to solve; nothing to dislike about that intent, nor to judge. I’m sure many of us thought about it at some point. Very generous of Evan to seek advice publicly.

1 Like

I think Elm is good for beginners, but not in a way that makes it bad for experts. So its not really the case that there is a focus on beginners, just that the decisions that make it appealing to experienced coders happen to overlap to some degree with what creates a good experience for beginners.

2 Likes

Of course.

This statement should be taken in the context of this thread’s topic, the linked thread, and the business problem space.

The other thread contains this statement:

The main point is that I really think that people underestimate the role of funding/headcount in supporting good working relationships in open source languages.

That comment is about aligning with people that do not underestimate that; or, narrowing down the solution space.

There was an earlier talk about it with plenty of speculation here:

Evan’s discusses corporate alliances around ~21mins into the talk, and then around ~30mins in discusses the different design incentives that come with that, so there are legitimate reasons to not dive head first into one. Linus never gave up control of the kernel, so Evan will probably use the Elm Foundation to do something similar.

That being said, there’s mixed-model approaches like Mozilla which has a nonprofit as well as a for-profit company. Evan could additionally continue to have his own work sponsored (in addition to the upcoming Elm Studio) by one company or another as NoRedInk had done, while having the Elm Foundation partner with some other organizations on infrastructure, organization, community management, etc.? Mayyyyyybe…this has been the plan and the ending note on “I don’t know what to do” was because there is no perfect solution despite the best-for-Elm plan already being in motion.

Anyways, I don’t think there is actually a complete scramble for funding so much as a very intentional and considered evaluation of how various paths impact design incentives. The whole thing for Elm is ergonomics. A lot of the conversation here blows past that.

4 Likes

Elm compiling to native code and SQL… an epic evolutionary step!

I can’t wait to check out this huge open source present from Even!

2 Likes

Although this is a general overview of the state of funding of languages, I think there’s a piece missing: how much funding does a language need? A related question is: what’s the future goal of the language?

And for Elm, it’s not actually clear to me what trajectory Elm should be on. If we look at the home page, Elm is “a delightful language for reliable web applications”, and there’s a nice list of features that it has. But is that also the goal of Elm? Because if so, Elm could be considered done.

The reason I bring this up is because this talk gives me the feeling that Evan has built the upcoming features of Elm because he believes there is a business case for them, and less because Elm needs them. And I don’t mean this in any kind of negative way, but if Elm may as well be done as it is (a bit of maintenance notwithstanding), then Evan would also be freed to do something else. Potentially building something with Elm, and then coming back in a year’s time with fresh eyes and a better idea of what problems Elm might have. Or potentially just finding a job related to languages and compilers elsewhere (which would both help pay the bills and give professional sparing, etc.).

Having said that, I do believe there are solid business cases to be made around a language like Elm. I wouldn’t personally go the route of hosting though, because that’s a very different domain from creating a programming language (and hosting other people’s data is a big can of worms in general).

Instead, I would maybe investigate if there could be premium features in the language, libraries, or tooling. For example, if 0.20 is released with PostgreSQL compatibility, made you need to pay for other database drivers. Or the binary format is reserved for paying users, and free users need a less efficient clear text format.

The important part for me is that, in my experience, companies are fine with paying for tools that actually help the business. And if something like a binary format would reduce hosting costs, then e.g. a one time payment of $5,000 wouldn’t be a big deal against that. A binary format also has other uses potentially (I’ve personally been wanting one to make it easier to ship Elm-native data in byte arrays between web workers, to make it easier to make better performing web apps).

2 Likes