Captain, where are we now Sir?

You just spent a year or two leading this project.  As a pure open-source, project it is a success. Lots of forks and a lot of stars. Now is the time to sell the baby.

What Could Possibly Go Wrong?™

The halcyon days of leading a tightly knit C++ team of like-minded, peers are gone.  You are now responsible to “make a product” that will be used in many different but very valid, situations by many different and very relevant teams. Also known as “paying customers”. Few galaxies away from the Git Hub fraternity. And now.

The investor’s are banging on your door.

OK. Not to panic. Let’s move slowly backward until you are able to see the full picture.

Let’s call your product (to be): XYZ. XYZ is a (very useful, fast, and snazzy) C++ library. It is fast because it has also some very clever low-level code using the underlying OS and CPU. It is a wonder how fast it is.

2021 Q1: The full picture

  •  Any C++ code and thus your “XYZ” product too, the primary value is on the cloud-side a.k.a. server side.
    • Living alongside apps/modules/services written in a myriad of languages, not just in C/C++.
    • Across many solution domains: NoSQL DB, Message brokering, trading, simulations, and such.
  • 2021 Q1 and going forward, Server-Side Business Logic is not written in C++.
    • It actually is not, for the last 10 years or so.
  • These days, Server Side business logic components are written in NODE.JS, .NET Core, Java, GO, SWIFT, and such

These are the cold facts. And you are now responsible to produce the plan. The overarching theme is: How to make XYZ malleable and feasible for a lot of projects. Some of them wish to pay for and use XYZ.

To visualize and make you understand better the typical role reserved for XYZ here is one typical Cloud Side (Azure) system that might be using it, where it might be needed. Can you spot your product, aka “XYZ”?

Spot your product
Quiz question: Spot the product “XYZ”?

There it is! Just in the middle, it is used from NODE.JS code implementing that “Function App 2”. Huh, NODE.JS? Yes, and that is what I am calling a “full picture”. Thi is the big cold truth:

Integration is the key to your success

Integration of you personally and integration of your product. Those are the two keys to enter it and stay in the market.

Please note this is just a very high-level view on the “cloud side”, of the common system architecture, in which you and your product: “XYZ” will be used. Or not. Even if  “XYZ” is bought by the team responsible for the delivery. They usually buy a few shortlisted components and then select the finalist “in house”, without vendors present.

Reasons these organizations and projects might pay and use “XYZ” are falling into only three categories:

  1. Comfortable API
    1. Aka “Dumbed Down API” in your  upper circles
    2. Point 1 where you need to integrate with new “friends” developers or otherwise.
  2. Speed & Security
    1. “XYZ” will be hammered and abused over and over again.
    2. Point 2 where you need to stay calm.
  3. Cost
    1. The Maintenance cost is the most critical cost component
    2. Point 3 where you should realize, competition is of course, always cheaper. 

In that order of relevance. Yes, you got that right, the cost is least relevant. And there is a competition too. And customers are not always top-level developers you worked with, in your previous life. It seems it was just yesterday.

And the plan is?

So you have these bellowed C++ baby of yours. And now, you have investors who are asking you to make it into a product that will be sold. In much more than few copies. And it will have to be easily installed and maintained on all the relevant cloud’s. On both relevant OS-es.

Chinese Proverb: “Stay cool calm and collected, and all things will fall into place.”

My proposal to you is to respect the core observation: Integration is the Key. Thus I suggest to you if you want to sell it and do that repeatedly, dramatically change/refactor “XYZ” to conform to the following:

  •  First re-write its core in C11 — delivered as .h and .c file(s)
    • That is the only feasible way to use your product, cloud-side. Any cloud.
    • The only way around the ABI problem. Any OS.
      • yes, that might include Android and iOS
        • for which you never planned because you dared not to hope.
  • The second step is a remake of your single header Standard C++ API (using that C11 core as engine) for teams wishing to use it in their C++ 11 code. Wait. Did I say: 11?
    • Be sure to be malleable about the C++11/14/17/20 issue.
      • 2021 Q1 many customers are on C++11 still.

Is this really true?

You are quite able to decide on that one. My favorite use case is SQLITE. Read and think about it. And then try to achieve the same market penetration and staying power, with “standard” C++ as your codebase primary language. With all the socio-political-economical and runtime requirements of which some are explained above.

Captain, where are we now Sir?

Sadly or happily that is the true picture. We are on the Cloud Side.

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.