Costs/Funding in Open-Source Languages

I was scheduled to talk about some of this at Deconstruct Conf in April, but all that got cancelled.

I was also scheduled to talk about “Elm for Science” and “Elm for Beginners” to share some of the experiments that I worked on late last year and ask for help. I think those still work best as a talk, but it may be worthwhile to convert them into blog posts instead.

Anyway, I was motivated to share this by a recent conversation. Perhaps it’s valuable to share that as well:

evancz
One thing I may end up talking about more in public is that many projects have $100k+ roles to handle the volume of community interaction that comes to the project. For example, there was a recent job listing with Rust for these exact kinds of tasks: Rust Community Engineer — Mozilla Jobs — Open Positions

There are many reasons that Mozilla Corporation (Mozilla Corporation - Wikipedia) can afford that, and that other organizations cannot afford that kind of thing. I think most casual observers and users of open-source are pretty naive about what is for sale with some projects. (E.g. voting on the EcmaScript committee costs 70k a year Join Ecma - Ecma International) It definitely took me many years working as an author to understand this clearly. Anyway, I hope that talking more about things like Google’s “Traffic Acquisition Costs” will make it clearer why the expectations people have for projects from Facebook, Microsoft, Google, Apple, or Mozilla may not make as much sense for more independent projects. (Google spent about $30 billion in 2019 to be default search in Apple and Mozilla products. That money in turn goes into the $100k jobs I am talking about. It also makes it too expensive for Bing or DuckDuckGo to be default search. Bing’s yearly revenue of ~$7B is not enough to be default search on Apple products for even 3 months!) Being connected to the biggest ad networks on the planet comes with many obvious positives and many less obvious negatives. (edited)

ABC
Have there been businesses besides NoRedInk express interest in funding open source Elm development?

DEF
@evancz would it be feasible or sensible to have the community contribute in some way? For example, I know there’s the Elm Software Foundation. Does it accept donations? Could a crowd-funding project be set up to help with it?

On the other hand, could sponsorships be asked/donated by the companies using Elm in their projects?

I guess all of this would have to come with some kind of transparency so that contributors (be it people or organizations) know where their money is going into

evancz
There are lots of models of how to set these things up.

I did some work in February to allow ESF to accept donations online. I also coordinated with some people to see what they thought of crowd-funded work. Everyone I talked to had very serious reservations about having their livelihood dependent on a per-project-crowd-funding model, so I was planning to start with a focus on community organizing, like Elm Bridges, travel grants, etc. Coronavirus led me to delay moving forward with that project since it would focus on in-person stuff. Maybe it would grow into something that could support engineering work, but we’ll see later.

Community donations for engineering work is basically not used by programming languages. Maybe it can be done, but Python, Clojure, Haskell, JavaScript, TypeScript, Ruby, etc. etc. do other things. A lot of compiler work can be quite risky and long-term, which I think makes it a sort of poor fit for crowd-funding, so it’s interesting to see empirically that most projects do in fact do other things.

I wrote a bit about these things in 2019 here: news/elm-and-bekk

evancz
One thing to note is that doing administrative work to evaluate and work towards something here is in direct conflict with working on other things. This is part of why projects big budgets coming from Traffic Acquisition Costs hire people to do community-facing work. I don’t know the churn on those kinds of roles, but my instinct is that it’s higher than the compiler roles due to the nature of emotional labor.

ABC
Are there schools or programming language research groups that could be willing to partner? Grad students could maybe do experimental compiler work as part of their thesis

evancz
All funding means “selling” something. With the academic funding, the language really needs to be a good “research vehicle” so that people can publish papers and show impact in practice. For example, bringing “modular implicits” to OCaml or dependent types to Haskell. If that gets popular in Haskell or OCaml, maybe it finds its way into a Microsoft language some day. (E.g. Philip Wadler’s 1988 work on type classes probably had some influence on his work on Generics in Java 5.0 in 2004.)

Anyway, these languages tend to have lots of advanced features specifically because they are excellent research vehicles. So I think that kind of partnership can only really work if you are down with the trade-offs of being a research vehicle.

evancz
I know compiler teams will hire PhD students for internships, and the desirability of that for students is usually dependent on their ability to get a paper from it. My impression is that Microsoft has a pretty good reputation for getting research papers out of PhD internships. I’m not sure about Apple. I’ve met people doing a masters in PL that work on Swift or Clang, but the goal with a masters is more to do implementation work. (You can find lots of people with PL PhDs on JavaScript VMs. That can be a cool path if your PL work is more oriented towards object-oriented and/or dynamic languages.)

ABC
How about computing education researchers? If a goal of elm is to become a best language to learn programming with (it probably already is lol), then there would be a big alignment of incentives.

evancz
That could work, but there are risks. For example, there is a professor at UChicago that has done a data structure course with Elm, and he has worked on GitHub - ravichugh/sketch-n-sketch: Direct Manipulation Programming for HTML/SVG which could potentially be a way to do “direct manipulation” in Elm. I.e. you right-click some text and can mess with the color, and and that’ll update in your source code!

But the incentives of academic work are to get the paper, so there’s often a great deal of “to the finish line” work that does not end up happening. Doing the “to the finish line” on direct manipulation in Elm would be a major task, both creatively and technically. How general can it be? Can it be less general, but in a way where I can still get NSF or DARPA grants? Etc.

ABC
True, but at least it wouldn’t cost any money

evancz
I know there are PL people who are interested in empirical research into usability, so there definitely could be something there. But I don’t actually know who is doing that or if they’d be interested in doing it with Elm. Investing in building those relationships is time not spent answering issues and pull requests, or working on ESF, or working on the compiler, etc. etc. So I have to think if the risk is worth the reward, especially if their core incentives are oriented towards publication.

One cool thing about that sort of path is that anyone who knows people in that sub-field can talk to them about the possibilities here. It doesn’t have to be me. One of the major differences between “corporate open-source” and “independent open-source” is that the big guys have money to pay someone full-time to think of these possibilities and work on developing the appropriate relationships. With more independent projects, those sorts of relationships tend to be formed by individual initiative of community members.

Slackbot
Terms like guys can make people feel like they’re being left out! :scream: Let everyone and all the folks know you’re talking to them! :heart::robot:

evancz
Haha, “the big multi-national corporations:smile:

ABC
Do you have any specific projects in mind that those kinds of researchers can help work on? (edited)

evancz
With people working independently with their own incentives, a good project is usually only discovered by them or by talking with them.

With any volunteer, they know their interests, constraints, skills, goals, etc. better than you, and those are all really important in creating a viable project for them. But with academics specifically, they mostly get into research because they want to look into what they find interesting. There’s lots of factors that go into that, and you need to be familiar with a given sub-area of PL to create interesting proposals. It’s the whole task of a PhD student to think of something interesting that no one else has thought of!

XYZ
Evan, I think what you said in this thread could be a very useful blog post, not only because it would be informative about open source funding and contributions, but also because it could highlight a reason to choose Elm.

For example, I have reservations about using anything from ad-revenue corporations like Google (eg Flutter or Dart) and Facebook (eg React or ReasonML), and I’d appreciate if a project specifically highlighted its independence from them. I think quite a few developers share these reservations.

I anonymized the participants a bit. I am speaking casually in these chats, so there may be more mistakes than in other things I share publicly. If I were to try to express the core ideas here more publicly, like in this Discourse or especially in a blog post that goes to folks who do not use Elm, I would want to work extremely hard to say things better. Am I saying something that could be taken the wrong way? As an insult? As an excuse? As a misunderstanding? Etc. Over time, the risks of talking in public have gone up and up. It’s much easier to get thrashed! So this thread is sort of a trial to see how it might go to start bringing these things up.

I’m not sure I’ll end up talking much about academic funding and incentives otherwise, so I figured sharing the very casual chats may be the only way. I definitely may be making mistakes my characterization, as I have never been a PhD student or done any NSF or DARPA grants myself!

34 Likes