Why ChakraCore OSS is Important

Thu Jan 14 2016 14:43:33 GMT+0000 (Coordinated Universal Time)
  • blog
  • javascript
  • nodejs
  • chakra
  • Chakra is the new JavaScript engine developed by Microsoft, which was first released as part of the, no longer supported Internet Explorer 9. This isn't a post about why Microsoft having more open source software (OSS) processes and projects is important, or how it is "amazing" that they are turning a new leaf.

    This post answers the question that I don't see people asking: why is having a OSS JavaScript engine important to anyone?

    Maybe you already know the answer to this, or maybe you're just too shy to ask, but I'm going to take a moment and try and give you some idea about why ChakraCore being open source is really cool.

    1. Alternative JavaScript Engine for NodeJS

    This might be the most important point for me, as NodeJS is my development platform of choice. For the first time in the history of NodeJS, there is an alternative to the V8 JavaScript engine that has been built into NodeJS from the beginning.

    I have no problems with V8. It's done well by me, considering without it we likely wouldn't have NodeJS at all. But having a different option provides more flexibility to the developer. Maybe Chakra can run faster than V8 when it comes to certain tasks, or maybe it can provide more JavaScript features that you want to use for your project. Now you can change Node's engine, which means all kinds of opportunity for NodeJS developers.

    Plus, if you can change NodeJS to use ChakraCore, then why couldn't you sub in another engine like SpiderMonkey or something else. It leads to more options, which leads to competition, and that is always healthy in my opinion.

    2. Community Support and Pull Requests

    Oh no! Not another security gap in all the browsers! What ever will we do?

    Until now, the only solution would have been to wait for an official release from the Microsoft team, hoping that they had all the details they needed. Now, the team can work with the community directly and publically so that we know where things are at. If there is a security gap reported, people can find it, report it, and fix it by submitting a pull request directly to the team.

    Now, my browser can sleep comfortably at night.

    3. Knowing How the Sausage is Made

    As mentioned in the in YouTube announcement, Microsoft has decided to bet big on JavaScript as a whole which is why building a brand new JavaScript engine made sense for the business. Although it was clearly a huge improvement over Trident, we still didn't know what was going into the engine and what made it work.

    Now we can see how the engine actually works. No secret sauce, no magic, just code. This is great for people looking to use a JavaScript on sensitive projects, or in highly secure environments that require knowing all the insides and outs to a system before it can be considered. In those cases you can fork the project, make some changes for your environment, and continue to get support from the original team by merging their changes as they publish them.

    Bottom Line

    JavaScript engines are a very specific tool, but if your application needs a scripting component or you need to interpret JavaScript directly, you're in luck because ChakraCore is out in the wild now. Fully supported by Microsoft, and is meant to be integrated with other software, it's a really great option for those that can use it.

    Plus, if you don't like how IE or Edge is running your JavaScript, you can get to the bottom of the problem yourself and submit a pull request. No more hiding behind the curtain. Developers have information they need to provide direct feedback on how Edge can run better.

    In time, I think we'll see more than just NodeJS, but rather Chakra become the heart of a lot of cool projects.

    What's Next?

    Personally, I'm thinking of using it as an on-the-fly scripting engine where a game object has a script that needs to be interpreted during game play, like AI or some sort of behaviour.

    For now I'll probably start with getting it working on my Raspberry Pi. I have one sitting on my desk and I'm itching to get something cool working on it. Either way, I'll probably start with the Windows 10 IoT page for some ideas, or take a stab at embedding it into a project.

    20-Jan-2016 UPDATE: Pull Request Submitted

    In case you're interested, Microsoft has submitted a pull request to the NodeJS project to enable NodeJS to run with the ChakraCore engine. As I mentioned before: we can see how things are moving along publically because it's open source. No magic, just code.


    EDIT

    Thanks to CaptainIncredible from Reddit and the other commenters out there for taking the time to do the proofreading that I so desperately should have done before publishing. Feedback, even about my sloppy spelling, is always appreciated.