Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / All-Topics

Open Letter to Whom It May Concern

5.00/5 (1 vote)
23 Apr 2014CPOL3 min read 6.8K  
This is a letter that I would like to send to relevant leaders at Google and Mozilla, but I'm not sure to whom I should send it.

I have a letter I would like to send to the relevant leaders at Google and Mozilla, but I'm not sure to whom I should send it. I did send it to JavaScript inventor and Mozilla CEO Brendan Eich--just before he stepped down for holding a conservative political belief. Who to try next, I'm not sure; it seems that Mozilla is devoted to the one-language browser (JavaScript) while Google supports a single language (Dart, which is "a better JavaScript") with support for compiled languages "tacked on" (NaCl). I believe in a third way, but to whom could I send this, who is out there that might agree with me? So, here's the pitch:

Right now, there's a strong interest in "transpiling" other languages to JavaScript, which strikes me as a difficult process that cannot work for all source languages, may have various limitations when it does work, and may produce code that is much slower than code compiled directly from the source language.

I think the interest in transpilers is really a sign that developers want freedom to choose their own programming language for the client side. Devs should not have to use two different codebases for client and server, nor should the web browser dictate the choice of server language. I don't believe in "one language to rule them all" and I am hoping you don't either (indeed, Google and Mozilla are working on multiple programming languages each). However, I do think devs should be allowed to choose one language, and not have the choice dictated "from on high". I want to help create freedom of programming languages on the web, but it's such a major task that I could only do it as part of a Google or Mozilla team.

What I'd like to see is a new VM that is specifically designed to run a wide variety of languages with high performance, in contrast to the Java VM which was designed for one language (and not for high performance), and the CLR which was designed for a few specific languages (C#, VB, C++) but turns out to be unable to handle key features of many other languages. The CLR wouldn't support D or Go very well and probably not Rust either; for example, there are two general-purpose pointer types in the CLR: one type can point to the GC heap and one type can point to non-GC "native" heaps, but you cannot have a pointer that can point "anywhere", which is a feature D requires. So we should create a new VM, which:

  • should contain a variety of flexible primitives so that the core features of all known languages can be supported in principle
  • should be high-performance, like Google NaCl
  • should use a bytecode that is designed for optimization (LLVM bitcode seems like a reasonable starting point), but is non-obfuscated (fully decompilable) by default
  • should allow and support garbage collection (but not require GC-based memory management)
  • should allow multiple threads
  • should be designed to allow code from different languages to communicate easily
  • should have a standard library of data types to:
    1. promote interoperability between programming languages, and
    2. avoid the need to download a large standard library from server to client

Some people believe that the web has become a kind of operating system, but I think this reflects more the way people want to use it rather than the technological reality. Right now, a browser is sort of a gimpy operating system that supports only one language and one thread per page. Real OSs support any programming language. Why not the web browser?

Thanks for listening. I would love to be a part of a team that creates the VM, but mainly I hope Mozilla or Google will consider moving in this direction. Whether I get to be a part of it or not, the important thing is that somebody makes it happen. Because the software industry needs this.

Sincerely,
David Piepgrass

< Published on >

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)