The C++ Business Model, a new challenge for WG21

C++ is an old language, and so is its business model. And if the language needs some updates from time to time, its business model might need them too. But hold on, what is C++'s business model? C++ is the specification of a programming language, so what are you talking about?

The C++ business model

It is correct that C++ is the specification of a programming language, and as such, it has no idea about a business model. However, there is a business model, and without it, the language could never have succeeded. But the C++ business model was not created. It emerged from the situation. And it stands mostly on two pillars: tooling and knowledge.

Without those two pillars, any programming language is an academic exercise. Maybe interesting, but not usable in practice. C++ has been very usable in practice for a long time, because those pillars were strong and stable.

Tooling and Knowledge

Being a language specification, you need a compiler-suite, IDEs, and people who know how to program in that language. C++ delivers the specification.
For many years, this incompleteness of C++ worked as a driving force for the spread of C++. Tool creators and knowledge sellers could make an income. For that, they needed customers: C++ developers. So advertising C++ was in their interest and, as a nice side effect, C++ got free advertising.

The language itself is of course a good product. It is good for creating fast and efficient software, providing some nice abstractions. But C++ is not unique in that. Maybe it was in its beginning, and that gave it an advantage. Being in the right place also helped. But without an economic motor driven by return on investment, that alone will not bring a language to success.

This business model of incompleteness is not unique to C++. Windows does not add obvious features to encourage developers to make a living by developing for it, and those developers then act as an advertising medium for the system. The same is true for Mac. Also systems like Jira create marketplaces for that. I cannot tell if that is on purpose, or if things have just been like that. Probably a bit of both.

Let’s explore the two pillars on which the C++ business model stands.

Tooling

In the beginning, Bjarne Stroustrup added tools to his language, called Cfront. And documentation too. In 1985, it became available as a commercial release from AT&T: Cfront 1.0.

Chapter 5 of The Design and Evolution of C++ contains the whole chronology from 1985 to 1993. It describes how Cfront was developed and the annotated reference manual added. It also mentioned that it was kind of expected that commercial vendors would come.

Since then, many commercial compilers and tools have been developed and released. And since all of them have been an investment for the creator, customers were needed to get an ROI. Those customers could only be C++ developers. So, to make an ROI, C++ needed to flourish. That was the birth of the C++ business model.

Then we have additional tooling, like static analyzers, package management solutions, etc.

Knowledge

The second pillar of C++'s business model is the knowledge business. That means books and training. Nobody could make a living from selling books alone, I think. But books and training, for sure. And of course, if you bet your career on writing a book and giving training, you also have an interest in keeping C++ relevant.

This created another advertising channel for C++.

A new reality

The C++ business model worked great for several years. But times have changed.

For several years now, new programming languages have come with tools and knowledge as part of their delivery. Look at Go, Swift, Zig and Rust, for example.

They all give you: compiler, editor integration, package management, free learning resources, and more. All of these are of excellent quality, at least on par with the best C++ ever provided. In some parts, they even surpass what C++ is able to give you, for example dependency management. And all that for free, without making users feel that something is being sold to them.

How can C++ catch up?

When it comes to tooling, we have good C++ compilers and IDEs available. But compared to the comfort of other languages, C++ still feels fragmented. And then there are topics like C++ modules, which I can best summarize by pointing to the now six-year-old unresolved issue of VS Code. And yes, there are other IDEs like CLion which do better with that one particular topic. But that friction in tools and what they support is exactly the symptom people do not want to deal with anymore when other languages deliver a much better and consistent user experience.

Documentation on cppreference was one year in read-only mode. Now it is moving to a new system. I am not sure how modern that will be, or whether there will be enough participation to catch up with what C++ brings. But that is a reference, not a book for beginners to get started, like every other new language has on its official homepage. And C++ does not even have an official homepage to look at. ISOCPP tries to do that. Or was it open-std.org? Well, have a look and decide yourself.

We now have more books than anyone could ever read. But how valuable are they? There are better and worse ones, but they do not fill the same space they did in the past. However, Books are still a tool for C++ trainers to promote their business. But I see this business declining now.

And we have more C++ videos than we can watch, with new ones released every day. But how can a newcomer know what to watch?

So the ecosystem might be good for veterans: people who only need a reference, who can pick books and talks based on their interests, and who are embedded in an environment where build engineers solve their infrastructure problems. But there are many veterans who are closer to retirement than to their first years in the job. And who is going to replace them?

What other languages deliver out of the box, a unified toolchain with package manager and getting-started experience, C++ has never had. Because the business model never required it.

I think, targeting these topics will be the biggest challenge JTC1/SC22/WG21 has to face. Because so far, C++ could be blissfully unaware of these questions. And challenges are hard to address when their existence is not yet widely acknowledged.

Summary

Tool vendors and knowledge brokers built their businesses around C++ for decades. And in doing so, they became its biggest advocates. But I see this business in decline. It gets less attractive to invest in those topics when viable alternatives provide the same or even better features (read: developer velocity). And when young developers gravitate to other languages, the future is already written.

Of course, there is so much C++ code that C++ will not go away anytime soon. Unfortunately, that helps to ignore the signs. But the world is changing, and to me it seems that C++'s business model has already stopped working.

And I think C++ will have to reinvent itself to be able to compete. And that will be hard, because most of the topics that need to be addressed are outside the traditional scope WG21 has set for itself.

Disclaimer

This post was written by a human. AI was used for language polishing.