5 days agoCreated a post • 106 points @mpweiher • 6 comments
Let's put programming languages aside, but I also question the idea that "there is money to be made with developer tools".
a) it seems to be a bit of winner-takes-it-all game here, maybe fragmented by language or ecosystem, but overall still true. IntelliJ is kind of an outlier, but they used to be Java only for a few years, then PHPStorm/WebStorm were kinda halfway accepted, and some other languages as well.
n) Also it takes so damn long until a new tool is even considered for widespread use. I remember ~11 years ago when I was more involved in conferences and tooling in the PHP world (and I also wrote my diploma thesis on this) - the broad majority of people only used Jenkins and continuous integration, if at all. Every other tooling was already rare, and don't even think for a moment they'd pay. The few cases that did had Bamboo and Sonar. From what I heard from friends this was not unique to the PHP world. And even in the last 5 years it's the same story.
c) I don't see a lot of change in the last 10 years that companies are willing to buy tools for their developers when there's something free to be had and you can save a bit per year. This can be big or small companies, startups or ones.Reply
The most successful programming language startup (Microsoft) ultimately had to pivot to operating systems to go public and then pivot again to office suites and cloud computing to stay relevant.Reply
I think Ericsson sold Erlang initiallyReply
I agree with jcrammer in that the question being posed isn't really the one the article seems to be discussing. I read the article as discussing "why aren't there more new programming languages"? So I'll comment on that one instead.
As an aside, I've been a professional developer for several decades now, and that's a question that I've heard for my entire career.
I think the answer is a combination of things that are impediments to the adoption of new languages of any sort, no matter how much of an improvement they may technically be
1) If there isn't an accessible supply of developers who know the language, using the language becomes risky as a business decision.
2) Related to #1, using a new language is placing a bet: once you've put a lot of time, money, and sweat into developing a codebase in a particular language, if that language falls out of fashion then you're stuck with a codebase in a language that will lack support and a ready supply of developers who know it and are willing to work in it.
3) Career-minded developers will tend to prefer to develop skills that are likely to be in demand with a wider array of potential employers. Much like the bet I talked about above (#2), working in a new language is also a bet being placed by the dev.
4) New languages tend to have immature toolschains. Using them can result in decreased production (and possibly decreased quality) as a result. This problem goes away should the language see widespread adoption, but that takes a while and may not happen.
There's a reason that the most-used (as opposed to most popular) languages tend to be ones that have been around for a while. They're safer (from a business point of view).
I've also noticed that the newer languages that become popular tend to grow out of hobbyist use. Devs learn and use them for fun in their off time. Some become proficient in them and advocate them to other devs. Once this hobbyist community reaches a critical mass, then companies will begin to entertain using the language, but not before.Reply
The article is a little mis-titled. It asks the question about the Programming languages, but it goes into discussion development tools. This the correct framing of the problem, the language itself is very hard sell. It requires an an environment to flourish: libraries, build tools, etc.
I'm very excited about the variety of languages which are being actively developed right now. There are 2 major open source projects which are helping quite a bit for the new languages: - Visual Studio Code (Eclipse used to be the choice in the past). Every language can get high quality IDE with a simple integration. - clang & llvm - high quality back-end and common code generation tools.
The developer tools market is not going to be extremely big. In most mature companies the R&D costs are up to 15% of the revenue and the dev tools is fraction of that.Reply
Because programming languages are a public good, and public goods are fundamentally incompatible with a profit motive. A “programming language startup” would be like an “anti-poverty startup” or “social justice startup” - either an edifice doomed to fail because of its inherent contradictions, or a front for lies and grifting.Reply
Taking the question at face value, I think these are the issues:
I don't actually think having to compete with free is actually that much of an issue compared to the above. Even free languages that are genuinely improvements over more mainstream alternatives face multidecade slogs to create a small community and get some adoption.Reply
- the switching costs for programming languages are very high, even if you're switching to an established language - it's hard to evaluate a new programming language; you don't know if it's good until you've written something non-trivial - learning a new language takes a lot of effort, particularly for languages that aim to be better than existing languages; better implies different - given all of the above, early adopters will probably not use the language for their day job, they'll use it for hobby projects; hobbyists are price sensitive
A counter-example: https://daml.com/
Daml is essentially a smart-contract language using Haskell syntax with built-in primitives for privacy & authorization (e.g., so you don't have to either make your whole ledger public or private)
Worth checking out if you're into DLT & PLs! :)
Disclaimer: I work for the company developing this.Reply
I like Grady Booch's explanation from the Twitter thread:
Rational Software was this: founded in 1982, acquired by IBM in 2003 (they outbid Microsoft, who were also interested in acquiring us). They were a number of dev tool companies in that time, but no more: open source makes the economics of this a tough sell these days.
A lot of my friends work at companies with legacy code, a lot of which have libraries that they bought where the company isn't even around anymore and it was locked on to a specific system by license, they can't transfer it, can't fix it, can't update it.
I won't use a language that isn't open source, I don't trust companies enough, there is a chance they could die, revoke a license or do some other stupid thing that makes it unreliable in the future.Reply
It's a truism that programmers won't use non-free programming languages, but I don't think anyone in this thread has talked about why.
I think a key part is that investment in a language goes both directions between programmer and language author. When someone learns a language, they are spending a lot of time and effort to load that language into their head and build expertise in it. That effort amortizes out over the amount of useful software they are able to write in that language in return. When the language is paid and where users have no control over the cost, they can end up in a situation where they are unable to extract value from what they've already learned if the language gets too expensive.
It's sort of like asking users to turn a corner of their brain into farmland but then giving the compiler authors the key to the padlock on the fence. Users don't want to give financial control over a part of their own headspace to someone else.
Free programming languages ensure that the user can always have access to the value of their own expertise in the language.Reply
I think we need to look beyond the OS/system level, to the domain and industry level to be able to deliver tools for them as well. Most domains now have a computation element to them, including core sciences, and I feel the tooling is often lacking for doing domain-specific stuff. To give you an example in biotech, our scientists have written scripts for simple automation tasks for their day to day activities, things like programming pumps based on instrumentation parameters on a fermentor. Its a scripting sorta language that is part of a software package used to run the hardware. To a "real" programmer the language used feels like a joke, and usually its not something many non-technical people even attempt to use. This functionality would be improved 100x by PL and tooling experts working on it in conjunction with domain/SMEs.Reply
I have been thinking about the topic for a while and the article seems a bit wrongheaded to me. (e.g. you just can't save time by deliberately making tools that aren't 100% correct as much as everyone wishes they could.)
For instance, "parser generators" like yacc, bison and all the rest are absolutely awful. One feature they miss is that you should be able to make a small revision to a grammar with a small code patch. (Say you want to add an "unless(x)" statement to Java that is equivalent to if(!x)" - ought to be 50 lines of code not counting the POM file.)
I think a better parser generator could open up "compiler programming" and "meta programming" to a wider audience and get LISP fanatics into the 21st century, but it never happens. Anybody who understands the problem enough to solve the problem will settle for a half-baked answer; the labor input to go from "the author can use it" to "revolutionary new parser generator" is a factor of 10x and there is some risk that people still won't get it.
Programming the AVR-8 Arduino it's hard to miss the conclusion that "C sucks" but anything really better (say Supercharged Pascal or a Miracle Macro Assembler) would take a huge amount of fit and finish work to make it something that would really beat C. For pedagogical purposes you can argue that C rots the mind like BASIC but you can't argue that learning C is a waste of time.
To make a profitable business out of any of the above seems almost impossible.Reply
First off, this article isn't actually answering the strawman question it looks like its asking. I think most people who don't work in the space would assume the question means "why aren't there people selling new languages/compilers?" That's a strawman question with a trivial answer, though--free compilers have been the de facto standard for decades , so if all you have is a new compiler or a new programming language, you're going to make only a pittance on it directly.
The actual question is why are there so few startups for people who work on PL technologies--which isn't limited to compilers or programming languages, but includes things like IDEs, debuggers, static analyzers . For example, Coverity--a decently well-known paid static analyzer--is kind of the best model of what you'd expect to see more of here. So it is somewhat more interesting to ask why this tool space isn't particularly well-served as a market.
 The biggest exception to the rule is custom hardware (particularly embedded, but this also holds true for mainframe and HPC systems), where custom compilers come for the ride. But that would be a hardware startup, not a PL startup, so it doesn't really count.
 I tend to lump in decompilers into the formal methods/PL/compilers/software engineering/computer architecture spectrum, mainly being a low-level compiler developer myself, but I suspect most people would consider reverse engineering tools to be a security side of things rather than a PL side things. And decompilers are certainly another noticeable successful paid-software niche, with the very expensive IDA Pro still remaining more or less the industry standard.Reply
There are many reasons why there are not many PL startups. From my perspective--as a PL tool developer for 40 years--is that we still do not have reliable formal grammars that describe the syntax and static semantics for a given programming language. That is a crux because it is difficult to write a tool for a language when we cannot even define what that language is. When you ask where to find a grammar for the language, the default answer is to just use an "official" implementation. That often requires a large amount of time to find and understand an API--and then locks you into that implementation. Some of the popular languages publish a grammar derived by a human reading the implementation after the fact, prone to errors. For C#, the standards committee is still trying to describe version 6 of the language (https://github.com/dotnet/csharplang/tree/main/spec), and we are now on version 10. An Antlr4 grammar for C# is mechanically reverse engineered from the IR, but it does not work out of the box--it contains several mutual left recursions and does not correctly describe the operator precedence and associativity. Julia does not even have a formal grammar published for the language. You cannot easily refactor a formal grammar from something that does not even exist, and have to write it from scratch. Often, what is published is out of sync from the implementation, not versioned, tied to a particular parser generator and target language with semantic predicates. The quality is suspect because you are unsure whether it even follows a spec. No one bothers to enumerate the refactorings involved in modifying the grammar to fit a parser generator, or for optimization, e.g., speed or memory. Yes, I can agree: “[t]here's definitely a need for SOMETHING, as developers have so much pain.”Reply
I made a brilliant programming-language startup. HN banned me.Reply
Proprietary languages work when they fill a niche. I work with the Q/K programming language. It's closed source and, from what I understand, has a significant licensing fee. But it is a language designed specifically to power trading systems (via the KDB+ platform/ecosystem). It fills a niche well, and is popular in the industry.Reply
Start ups are (ideally) based on ideas for solving existing problems. Programming languages are just a tool to solve a problem, not the solution in and of itself.Reply
Because programming languages are the most basic piece of infrastructure on software.
And every infrastructure projects suffers from the same issue. It benefits from mass adoption, which basically requires the thing to be free and open source. With that, the value will be captured 0% by the project creators, 10% consultants around the project and 90% cloud providers. The issue is so much more pronounced for programming languages.
I’ve watched what Rich Hickey has gone through with Clojure and Cognitect. I think he did a great job there, but I wouldn’t say I envy the experience he had getting Clojure this far.Reply
Developers don’t pay for languages.
Most don’t pay for tooling.
Sometimes they do, and they get bitten by it. So never again.Reply
A successful programming language is rarely ever something that stands on its own. It’s usually the byproduct of a corporation or some sort of organized committee. It gains relevance through a growing community or standardized through some sort of committee.
To answer the question shortly, programming languages aren’t very profitable. There are so many of them in competition with each other and so few that companies can adopt and base their recruitment around.
Tech startups usually thrive from apps, services, or valuable technologies. Not yet another programming language.Reply
My personal answer to the titular question is something like "there's only so much you can do with our predominant programming paradigm (i.e. plain-text)". Programming languages specifically can only make incremental improvements and/or tradeoffs in that medium.
Tools like IDEs, debuggers, visualizers, etc are more interesting, but I think their effectiveness is also limited (and creativity constrained) by having to work in a plain-text world.
Moving beyond plain-text is mostly a social dynamics/network effects problem, and I wouldn't be surprised if the intersection between people who are good at figuring out that distribution × people are who are deeply interested in how programming happens is actually quite small.Reply
The title prompted me to look into the history of matlab a bit . My main takeaways:
- It was given away for free for years. During that time people wrote _reliable_ numerical packages that other people glommed onto.
- matlab users aren’t programmers, they are [engineers/mathematicians/etc.] who need to write some code to do their job. One aspect of this fact is that they generally aren’t on the hunt for a new “framework” to do this stuff. They also aren’t thinking much about long-term maintainability: they ran it once and got the answers they needed.
- Academics (and students who can use university licenses) are price insensitive.
- Engineering disciplines where errors can’t happen (civil, aerospace, etc.) come to rely on aforementioned reliable numerical packages, which eventually required proprietary licenses.Reply
Hey, I want to create my own programming language startup but I don't see how to make a business out of it. Specifically, I want to create an alternative Python compiler with performance in mind. It can be done, there's a lot of ground to cover, but it's just an awful lot of work. It is also a sensible topic to many. DM me if you are interested, thanks!Reply
Here's my particular story, but I'm sure there are many other people who were burned in ways that are similar.
I used to pay for a programming language, Turbo Pascal, which then became Delphi. Then Borland went crazy and started pushing C++, and raising the prices as their focus was lost. Eventually they were sold, and the prices went up, and up.
Never again will I be locked into a vendor with a profit motive.Reply
If you have a “pop out the credit card” moment at any point you slow adoption and end up with a smaller, poorer ecosystem that finds it hard to compete with the Pythons and Gos.
But if your language is targeting a niche where no established FOSS language exists, then a startup would work. Create a language, give it away for free (MIT or Apache ideally), then charge for creating/maintaining niche libraries or other consulting. This is the model chosen by Julia (https://news.ycombinator.com/item?id=9516298). One of their main competitors is a paid product by MathWorks.
Side note - this flywheel effect determining the long term success of programming languages is why discussions around them can get so contentious. A criticism of “your” language could influence an exodus from the developer community around it, making it die slow death. For a person who’s put years into the language, it could mean throwing away all that knowledge and starting afresh elsewhere. So they respond harshly to the criticism, subconsciously hoping that the language ecosystem stays healthy.Reply
because you have to build an entire ecosystem from scratch. that's like asking why there aren't more OS startupsReply
Because these same "startups" are much more viable as open-source projects. Sure it doesn't make much money, but monetizing software is an uphill battle anyways.
Plus, you won't get a dime out of me for, say, an AI copilot plugin. Unless it's free, and I can guarantee that I'll have access to it in the future, why would I want to integrate something like this into my workflow? Adding another SAAS into my life is just putting my neck under another sword of Damocles.Reply
It is extremely difficult to compete with good enough, and it is extremely difficult to compete with free.
There are a plethora of good enough free programming languages available, that also have good enough free tooling and ecosystems.
There isn't therefore really a business model.Reply
Lot of reasons but mostly because you have to control the platform for most new programming languages to make sense. You want a new language on Apple platforms that isn't Swift? Good luck getting any buy-in from users.
One possible path that might work is if you release your language with a framework that is great for some use case. E.g. if Qt were rewritten in some alternative language maybe that could be successful. But to create anything that polished takes a lot of time and effort, so any company is going to burn through capital just getting to a place where they can determine if they've made something users will actually switch to.Reply
Does Urbit count?Reply
One of the big reasons is that developers don't want to be locked in to something. The tool itself needs to be significantly better than the free competition, while still being able to easily pull it out and replace it with something else on short notice. Startups don't generally like those rules, they tend to thrive on lock-in and controlling the users for a chance of a big payday. I think developer tools are generally fit more of a "lifestyle business" than a startup.Reply
Why aren't there more human-language startups?
... languages have value substantially due to network effect. By making a proprietary language you hobble the network effect and destroy the language's value.
And there aren't startups to create open languages because monetization is a big "then a miracle occurs"-- there is no obvious moat. And at our current level of science re-programmer productivity, it's a lemon market: lots of people say this or that will improve productivity but there aren't much in the way of established ways to prove it. Hard to convince people to pay for something when its benefits aren't unambiguous.Reply
Because "avoid (success at all costs)" makes the best PLs, and startups are literally about success at all costs.Reply
Jon has talked about this on his "Jai" streams. They need some sort of income to fund development of the compiler (hiring more programmers to work on it), but the number of people willing to pay for a compiler is probably not enough to hire programmersReply
Some recent programming langue startups that are still around or have come and gone:
- Dark: https://darklang.com (hibernating, laid off everyone to buy time to find product/market fit)
- Eve: http://witheve.com (defunct)
- Luna/Enso: https://enso.org (just rebranded)
- Unison: https://www.unisonweb.org (hanging in there)
- Urbit: https://urbit.org (hanging in there)
That's off the top of my head. I'm surprised an article asking this doesn't mention any of them or analyze how they came to be and where they went.
The main reason from my perspective is there's not funding. It takes years to build a programming language from scratch, so you need a lot of runway. And it takes a specialized group of developers so they cost a lot of money to hire. The combination of the two means you need a lot of money to get a PL off the ground. Millions of dollars.
But this is a research problem with an uncertain time horizon and unknown feasibility. It could take a decade more to complete such a task, but it's very unlikely you're going to get a decade worth of funding from VCs. You'll probably get 3-5 years, and at the end of that you'll need to have something tangible that can get you follow-on funding to continue your work. But that means your original pitch of revolutionizing the computing landscape by democratizing programming gets downgraded to making an incremental change that increases some productivity for developers.
Anyway, there are ways to get around this, but it likely means your company won't be a "startup" in the HN VC-funded sense. See Unison which is developed under public benefit corp. Andrew Kelley has managed to bootstrap Zig using user support and now corporate sponsorship. Urbit had an ICO and sells digital real estate.Reply
Nobody pays for general use programming languages. The market has been conditioned to believe that dev tools should always be free.
Special purpose languages geared toward specific niches like Julia may be able to monetize.Reply