Search code examples
open-sourceprogramming-languagesproject-management

What does it take to make a language successful?


I have an interesting idea for a new programming language. It's based on a new programming paradigm that I've been working out in my head for some time. I finally got around to start working on a basic parser and interpreter for it a few weeks ago.

I want my new language to be successful and I want to eventually create a community around it when it's ready to release. The idea behind it is fairly innovative, so I don't expect it to gain a lot of ground in the business world, but it would thrill me more than anything else to see a handful of start ups use or open source projects use it.

So taking those aims into account, what can I do to help make my language successful? What do language projects do to become successful? What should I avoid at all costs? I'd love to hear opinions or stories about other languages -- successful or not -- so I can think about them as I continue to develop.

So far, the two biggest concerns on my mind are finding a market, access to existing libraries, having amazing tool support. What else might I add to this list?


Solution

  • Although not specific to new programming languages, the book Producing Open Source Software by Karl Fogel (available to read online) may be contain some hints to the issue of making a community around your new programming language.

    In terms of adoption of programming languages in general, it seems like the trend lately has been to have a rich library to make development times shorter.

    As there isn't much detail on what your language is like, it's hard to determine whether adoption of the language is going to depend on the availability of a rich library. Perhaps your language will be able to fill a niche that has been overlooked by other languages and be able to gain users. Or perhaps it has a slick name that will draw people in -- there are many factors which can affect the adoption of a language.

    Here are some factors that come to mind when thinking about recent successful languages:

    • Ability to leverage existing libraries in the new language.

      • Having an adapter to external libraries written in other languages.
      • Targeting a platform which already has plenty of libraries available for use.
        • Groovy and Scala target the Java platform, therefore allowing the use of and interoperation between existing Java code.
    • Language design and syntax to allow increased productivity.

      • Many dynamically-typed languages have gained popularity, such as Ruby and Python to name a couple.
      • More concise and clear code can be written in languages such as Groovy, as opposed to verbose languages such as Java.
      • Offering features such as functions as first-class objects and closures which aren't offered in more "traditional" languages such as C and Java.
    • A community of dedicated users who also are willing to teach newcomers on the benefits of a language

      • The human factor is going to be big in wide-spread support for a language -- if people never start using your language, it won't gain more users.

    Also, another suggestion that I could add is to make the development of your language open -- keep your users posted on developments in your language, and allow people to give you feedback. Better yet, let your users take part in the decision-making process, if you feel that is appropriate.

    I believe that by offering ways to participate in the bringing up of a language, the more people will feel that they have a stake in the success of the new language, so the more likely it will gain more support.

    Good luck!