Question

A friend has written a programming language. It has a syntax reminiscent of SGML. He has written an interpreter for it, and an IDE. He and his colleagues use it in-house as a server-side language. It can also be used to write command-line tools.

He wants to make it available to the public, in the expectation that people will purchase a license to use it. He wants to keep the code expressing the language implementation to himself, as there's a fair bit of intellectual property tied up in it.

I keep telling him that the day of closed-source programming languages is gone. I say, "Look at all the major languages: the vast majority are open-source. You're going to have to go open-source too if you want anyone outside the company to pay any attention to what you've built."

Am I giving him good advice or is there still room for proprietary languages that you pay for?

LATER

Den asked, "... could you please also explain how a language can be closed-source?"

I said, "@Den you make a good point. What my friend wants to avoid, I suppose, is the situation where Microsoft cooks up a Java-alike language, calls it J++ and then gets into litigation with Sun about its Java-ness. How do you protect a syntax and a programming methodology from being hijacked by a company whose implementation could put you out of business?"

Was it helpful?

Solution

The answer is yes, and no. It depends on the commercial motivations of potential customers and the attributes of the language and the problems it solves.

No, the world does not need another general purpose computing language created by an individual or a small team. When Perl, Python, Ruby, Java and Javascript and were created there was a vacuum to fill, proprietary languages were expensive and the barrier to entry was low. Rebol is one that started off paid and is now free. Look at C# and Go to see how much harder it is now and how much bigger the teams are, even for languages that are more or less free.

But yes, the world badly needs niche languages to fill a whole range of specific roles and will pay well for them. I can't quote you examples because neither you nor I have ever heard of most of them, but they are being used routinely in highly specialised situations and they make money for their creators. Solve a problem and you will get paid.

So for your friend to make money he needs one or more of three things.

  1. An identifiable technical niche for which his language is the best available solution, preferably with a reasonably high barrier to entry to slow down competitors.
  2. An identifiable customer segment with a problem his language can solve as well as the capacity to pay for it to be solved.
  3. A body of pre-written code, documentation, tutorials and skills that will allow customers to put it to work immediately and start solving problems immediately.

Problems mentioned in relying on small companies are not unique to programming languages, and are easily resolved by commercial means.

Disclosure: I am the author of a commercial programming language system (Powerflex) that helped a lot of people build software businesses. That window closed as the Internet window opened.

OTHER TIPS

A language isn't open-source or closed-source as such. For example, G++ is open source while MSVC++ is closed source. ISO C++ is neither, it's a non-free non-proprietary standard.

Your friend could release an Open-Source non-optimizing implementation, and sell the fancy optimizing compiler. The interesting Intellectual Property is not going to be needed for a straightforward implementation.

An existing language which works with this model is PHP/Zend Server

Does his language do something that enough people will pay for?

That's really the only thing that decides whether a business model will work. Do you have a large market of users who are large enough not to worry about licensing costs? Does the language support devices or standards that the customers can't live without, and that nothing else supports? Is it so insanely great that the customers will be able to hire the greatest, brightest programmers and achieve huge productivity increases just by using this language, and does management understand that trade-off?

If any of these or anything comparable is the case, then the business model will probably work. Otherwise, it probably won't: sooner or later, someone is going to come up with a cost-cutting measure that involves switching to a cheaper alternative.

I believe that no, there is no room for a new language with a proprietary implementation sold by a small company.

First, developers have many other free (at least as "in beer", and often as "in speech") language implementations, and they won't bother trying a (pricy) language.

Second, any manager would immediately objects: what would happen -to our code base coded in the new language- if the small company providing the language implementation get bankrupt? This argument probably would prohibit anyone to buy the language implementation!

In contrast, a free software language implementation can be grossly evaluated by customers, which could always handle its service to another provider, if the original company having written it goes bankrupt.

From the client's perspective, the cost of adopting a new language is not in the licence of the implementation, but in the skills required to use it.

And there are many free software language implementations which are nearly unused.

A language cannot be closed-source. Its compiler and run-time libraries can be closed-source. A formal grammar of a language can be kept as a secret though and be legally protected (NDAs, etc.) and fees collected for usage.

Your friend could claim intellectual property or patent if the language is so new and novel. I myself have high doubt that this would worth the effort.

These days, most of the companies choose publicly available technologies first, no matter how much laborious work it is to achieve the same effect a closed-source approach would do. Next, if the overhead is super large, then they go to an industry standard solution - standardized proprietary languages (e.g. Matlab), with good penetration and support.

In-house languages are usually built as DSLs (domain specific languages), and these days the effort is smaller than buying a DSL of somebody else's and adapt it. Also, DSLs are very specific to the problem domain.

Now, let's not discourage your friend from monetizing his language. There are ways to do this - selling it to a large, established company, or getting some investors buy the idea and invest in it -, but his main problem in approach is that he developed a solution without researching the development problem. And that is not the problem what he considers the problem, it is what his potential customers consider the problem. So he could go out and talk with these fellows without giving out details about his solution and get those guys to pay - this is not impossible but not very likely though.

I've had this discussion myself when one of my clients considered developing major applications using ColdFusion. Personally I can't think of any reason to use CF (and pay for it) when I can use PHP (and not pay for it). However, CF has a large company behind it which pacifies the OSS-phobiacs (deal with enough IT managers and you're bound to run across some of those eventually) and it good enough that enough developers actually prefer it.

However, the catch is, of course, that your friend needs to come up with something good enough and with enough backing behind it. The former is no mean trick these days with all the thoroughly mature open source platforms around, and the latter requires backing of a party at least the size, of, say, Adobe.

Not to mention the fact that even CF has a marginal market share these days in comparison to OSS.

In summary, if your friend is brilliant enough to come up with something that outshines PHP, Python and friends and business savvy enough to sell it to one of the larger and more reputable players in the market, the answer is "maybe". Otherwise, it's a resounding "no".

I think the answer is a definite no in this case. Having a new language driven by a small entity causes a high risk of critical bugs or key features missing.

If that language is proprietary, then as a user you're absolutely screwed if the language does not evolve in the direction you need it to at the pace you need it to. If the language is free, you can throw money or man power at the problem (which at least for bigger companies is an option).

Your friend would be far better off selling complementary services or products. Provide support, training, consulting. Get paid for adding specifically requested features. Provide tooling (e.g. in the form of commercial plugins for popular IDEs). Provide some libraries under a commercial licensing model (but still with the source included under suitable restrictions).

While I hate to discourage your friend I think it's unlikely that he'll manage to convince people to pay for development tools these days unless this tool provides an incredibly huge gain in productivity (as in "produces working software by having managers look cross-eyed at the screen while thinking good thoughts!!!"). For better or worse there is very little market for "pay-for-play" development tools these days as the quantity and quality of free tools is excellent. (Witness languages such as Java, Ruby, Python, Clojure - IDE's such as Eclipse and LightTable - databases such as MySQL and PostgreSQL - the list goes on and on and on and on and on...). I wish him the very best of luck with this endeavor.

It can. If it is:

  • good and/or useful enough
  • if it is applicable easy enough and
  • if it isn't too expensive

Actually - for starters it should be really strong on 2 first items and very discounted compared to its real worth.

I see most of people complain about evil managers which won't like to pay big cash for it - you never said your friend is asking a fortune for the license. What if he asks for $500 yearly and it saves some company couple of hundreds of working hours every year? Any smart manager would grab it.

That depends whether or not the language offers something that is ingenious enough that I (representing the customer) am willing to pay money for it.

As a project manager I need to take into consideration:

  • The time it takes to learn/master that new language.
  • The efficiency gain (time till delivery) compared to other languages. And does it out-weight the time to learn it?
  • Does this language solve a problem that can hardly be solved with other languages?
  • Will this language still be supported in 5 years, should the customer make another request?

The first 3 points apply to every language and especially the first one is a tough to overcome for every new language, because I need to reason the time of very low productivity with something, and that better be a good one.

The 4th point is the one that applies only to closed-source languages, as with those I am dependent on 3rd parties, which might or might not exist in 5 years from now. 5 years earlier from now, mobile apps weren't such a big thing as today, will the language from then adapt to the current situation and allow me to write mobile apps as well? Will it even be compatible to the new requirements? If there is such a requirement for my customer, can I contact the developer of that language and file a request for an upgrade?

If any of those questions is answered with "no", then it can be the best language in the world, I cannot use it. And if I hear that there is a single person who invented this language in his "spare time" and now works as a single-man company, I would be very suspicious about it and rather not use the language, unless I get very solid promises and the language offers something no other allows me to do.

Licensed under: CC-BY-SA with attribution
scroll top