IronJS is an open-source project working to deliver an implementation of the popular JavaScript Web development language to the Microsoft .NET Framework. Fredrik Holmstrom, a programmer in Gothenburg, Sweden, created IronJS as part of a larger project he is building out. Holmstrom said he uses C# and JavaScript for his professional work, and a mix of F#, Python and Clojure for his “hobby” work. With support for dynamic languages such as Python and Ruby being a popular topic among developers, Holmstrom spoke with eWEEK Senior Editor Darryl K. Taft about his project.
How did you come up with the concept for IronJS?
Basically the idea sprung up over a year back when I started playing around with CouchDB and realized how much JavaScript actually is in use today-both on the client and server parts of the Web. But the core business logic was never written in JavaScript-which creates a sort of mismatch between the client/server/database and results in a lot of duplicate functionality and an (often homegrown [or] project-specific) way to communicate between the server and client. And this is done with some arbitrary specified JSON [JavaScript Object Notation], usually.
I really saw an opportunity here to build something that would allow you to run JavaScript on the server, still have access to a big base library and use the same language as the client. I started researching into the subject several times during the last year, but I always got sidetracked. However, about three weeks ago I really set my mind on actually getting it done. I downloaded the DLR [Microsoft Dynamic Language Runtime] sources from CodePlex and started hacking, first following the tutorial language (called SymPL) to get a feel for how the DLR works. Then I dug into the IronRuby source code (which is a bit more manageable than the IronPython source, which is insanely huge) to get a really good feel of how to implement a language on top of the DLR.
All in all, it’s taken me about three weeks to get to the current state of IronJS, which is a real testament to how awesome a piece of technology the DLR actually is.
How far along are you in terms of putting it out as a 0.1 release?
The current main branch on GitHub is usable, but barely (which I’ve labeled as 0.1-alpha). A somewhat usable 0.1 release is about three to four weeks away, I would say.
Is IronJS open source?
Yes, it is. It’s released under the GNU General Public License v3.
What’s your day job?
My day job is at CP+B Europe (www.cpbeurope.com) which is the European branch of Crispin Porter + Bogusky (www.cpbgroup.com). I work as a .NET developer doing mostly back-end stuff for various Websites.
I see where you said all your professional work is done in C# and JavaScript. What do you work on primarily?
As I stated previously, I do mostly back-end stuff for our various clients; [it] ranges from small ad campaigns to full-blown six-month, full-time projects. My professional work has shifted from C# [and] JavaScript to mostly C# with some PHP for good measure.
Why the varied mix of F#, Python and Clojure for your hobby work?
This is a hard one. I would say that this is mostly about the fact that I enjoy using programming languages that teach me something other than their syntax-F# has its roots in OCaml and ML, which preaches a specific way of functional programming. Clojure is a Lisp [derivative], as you might know, and the s-expressions are a very nice way to express some problems. Python just happened to be a really nice mix between C, Lisp and scripting.
Other than IronJS, what other hobby work are you involved in?
At the moment I have two projects that are on hiatus, they are actually just waiting for IronJS to get to a stable enough state that I can start basing the scripting functionality of them on the IronJS run-time-this is also one of the main forces behind my motivation to build IronJS, I really needed a JavaScript run-time on .NET that fulfilled three main goals, to be: one, free and open source; two, fast; [and] three, actively developed.
And after searching for a month or so I gave up trying to find one and decided to teach myself the DLR and write my own. I’m still a bit secretive about my two other projects, but they will be publicly available on GitHub once the time comes.