Open, Loving, Just Workingness: The Smart Platform and Javascript

February 17, 2009 - by jason

About a month ago Joyent acquired Reasonably Smart and we were happy with the breadth of the coverage (e.g. @GigaOm). Much of the feedback was positive and there were also some important questions and comments: many around “what is open?” and the current choice of Javascript as the server-side programming language for the platform.

There were a few other factors that were important to us at Joyent, and that weren’t covered. David and I, the founders, happened to get along great with Reasonably Smart’s founders and could see ourselves working together for a long time. Basically, if I started a company today, I’d give those guys a call, and try and get them involved. I’d say that we’re also pretty happy about being able to make smart, targeted acquisitions in today’s economy, considering everything that’s going on in regards to technology companies.


Back to the Big Technology Things.

On Javascript

There’s a few things that have been sitting in my mind for a bit of time:

1) Our connector suite of software happens to be nearly 10% javascript (see the ohloh analysis). I’d find myself wondering why not 20%, 50% or 100%? Why aren’t we just writing all of our applications in straight Javascript? Once you begin to think of it as a server-side language, it gets pretty interesting.

2) Joel Spolsky wrote this great little piece called Can Your Programming Language Do This? and all the neat examples actually used Javascript as the programming language.

3) When talking to the guys at Sun’s Fishworks Project, I learned that they were writing their restricted shell for their storage appliance in Javascript (the CLI is 24227 lines of javascript). A shell. A command line shell. It’s in javascript. Javascript.

4) The realization that the problem with Javascript wasn’t the language, it was the DOM (Document Object Model) and how it’s implemented in different browsers.

Bruce Tate hits the nail on the head:

The beleaguered language sags under the weight of a complex programming model called the document object model (DOM), poor tools for implementation and debugging, and inconsistent browser implementations. Until recently, many developers had all but written off JavaScript as a necessary evil at best or a toy at worst.

Our own James puts it nicely “if you’ve not programmed JavaScript without all that tedious mucking about in the DOM, try it – you’ll be pleasantly surprised!”.

5) And yet … Javascript finds itself in the top 3 or 5 languages to know for the future (Red Canary’s survey and GigaOm coverage is just one example.)

6) In the same article, James points out that Javascript is a hardened language. That’s great for a service provider, nothing to strip away from a language like what had to be done with Python in Google App Engine.

7) And finally, the Javascript VM used in the Reasonably Smart platform could find itself supporting the syntax of other languages (for example, python and ruby) in the near future.

And we have the potentially interesting adoption pattern of client-side javascript to server-side javascript, and the possibility of more and more functionality being added to applications by just having the javascript that’s already there be extended and hooked directly into data stores et cetera. It was feasible to even look at our own current applications (or geez, future command line shells …) and see how they would evolve this way give the right platform, frameworks, backends.

Javascript, at least for me, emerged then as a fascinating language. And fascinating in several different ways: technically, culturally (in lack of a better word) and as a core for one of our service businesses.

On Smart Platforms

Now to that Service.

We’re calling it the Joyent Smart Platform now (don’t quite know if it’ll be the Joyent Smart, Joyent SMART or Joyent S.M.A.R.T platform — likely the first one because wouldn’t one expect S.M.A.R.T to mean something? — but I’ll let David and Bryan figure that one out).

And it’s actually a “platform”.

Joyent has been working on providing a rock, solid set of “primitives”: powerful, secure and flexible infrastructure (as a service …). These primitives have been able to crank away on respectably sized sites and problems. [Author’s note: I’m trying to limit the “as a service” trailer].

We’ve always wanted things to Just Work™, to be open, flexible, loving and happy.

Now why would one write to a platform?

You can write an application, use documented APIs and interfaces in that platform to do everything you need to do, and boom bam magic bim bam it’s deployed, up, running, instrumented and scaleable. Fast, easy, beautiful, and you can focus on your actual business.

Why wouldn’t one write to a platform?

Three reasons: vendor lock-in, portability and junk parts.

A Loving Cloud is what I want, and Simon Wardley wants Happiness. Honestly I often think of Simon’s rules when looking at our own roadmap.

Rule 1: I want to run the service on my own machine.

Rule 2: I want to easily migrate the service from my machine to a cloud provider and vice versa with a few clicks of a button.

Rule 3: I want to easily migrate the service from one cloud provider to another with a few clicks of a button.

The Smart Platform, when deployed, will be provided as an supported and open source offering, and will always strive to use the best components. This means you can make use of your own installation of the platform or our service (we think the value in software emerges when done as a service) or both. You can easily access your application code and it’s data, and when integrated with all the primitives Joyent has underneath you will be able to clone the entire platform stack (from load balancers to smart datastores). As long as you have access to raw iron you will be able to do what’s best for you, and do it in the same exact way.

We’ll be Open, you’ll be Loved and hopefully from that, you’ll be very Happy.