
ChakraCore GitHub repository is now open - bevacqua
https://blogs.windows.com/msedgedev/2016/01/13/chakracore-now-open/
======
bastawhiz
To everyone chanting "Embrace, Extend, Extinguish", I'd like to remind you
that Node proper was a golden egg sitting under Joyent's goose. When Joyent
decided they didn't want to embrace anymore, the community took the
extinguisher out of their hands. Granted, Microsoft is in a more similar
position to Google than to Joyent, but the point of the argument is that the
community has driven the language and the runtime forward, not the corporation
backing it.

Unlike most of Microsoft's other EEE attempts, this time they're putting their
code with their mouths are and putting it all up under MIT. There's little you
can do to get more open and honest than that. If the community doesn't like
the direction MS is taking Chakra, they're free to take it in a new direction.
Hopefully it doesn't come to that, but it's an option.

~~~
krisdol
>When Joyent decided they didn't want to embrace anymore, the community took
the extinguisher out of their hands

Joyent wound up embracing io.js, and Node.js is moving at a very fast pace now
while maintaining LTS branches in parallel. It's a very well managed project,
in my opinion.

Aside, how come anything remotely questioning of Microsoft when there's an
announcement is met with downvotes?

~~~
untog
_Aside, how come anything remotely questioning of Microsoft when there 's an
announcement is met with downvotes?_

I don't think it is. However, I'll downvote criticism that isn't actually
based on anything other than "well, you know, it's Microsoft so they won't",
"remember extend, embrace, extinguish?" or "M$", etc. etc.

Criticism with actual backing is fine.

------
vmorgulis
> ChakraCore

> The MIT License (MIT)

> Copyright (c) Microsoft Corporation

Incredible!

[https://github.com/Microsoft/ChakraCore/blob/master/LICENSE....](https://github.com/Microsoft/ChakraCore/blob/master/LICENSE.txt)

~~~
jsingleton
Great stuff. I've worked professionally in the .NET development ecosystem for
almost a decade and I've never been so enthusiastic about the direction that
Microsoft is taking. Their embracing of open source practices is very positive
and will help to retain and maybe even attract developers. You just don't have
to worry about licensing any more this way. You can actually sit an MCP exam
in MS product licensing, it's that complicated.

This announcement is probably timed to coincide with NDC. There were lots of
similar open source announcements at a previous MS conference I was at.
Although it was a bit weird due to the time difference on the embargo.

~~~
mikekchar
I might be wrong, but I think the attitude change really started with .NET.
I'm not sure that many people remember the "shared source" version of .NET. I
worked at Corel, who was contracted to work on it, at the time. Although I
didn't work on the project itself, I interacted with quite a few people who
did.

I'm not going to pretend that MS "got it" at the time. "Share Source" was an
insult to everyone. However, _internally_ you could see light bulbs going off
in people's heads. People who worked on the shared source version were proud
of what they were doing and were really eager to have people look at it. The
fact that "shared source" essentially crippled it to the point that it would
be useless to everyone was surely a thorn in those people's sides. It (and
every other shared source project) died in obscurity (thankfully).

I often wonder if this was one of the seeds that eventually sprouted inside MS
to make them start to take open source seriously. I even wonder if one day we
will see them embrace software freedom. Well... I can dream can't I ;-)

------
DoubleMalt
Even if I'm in danger of stating the obvious, but MS really changed its
approach to software.

And it is incredibly great having competition in the JS engine market.

~~~
jrcii
> MS really changed its approach to software

Their open-source friendliness has unfortunately coincided with a decline of
their respect for user privacy and choice (Windows 10). I find the "New
Microsoft" bittersweet.

~~~
Someone1234
The Windows 10 privacy thing is completely overblown.

Most of the privacy settings that people are most worried about is tied into
Cortana or more specifically what you allow Cortana to do on your behalf. You
can simply choose not to use Cortana or to disable it entirely. Google Now &
Siri support the same functionality but ironically don't give you the settings
to disable it, so nobody bats an eyelid.

Beyond that you only really have so called "basic telemetry." Which tells them
when you launch a Windows 10 "app" and some basic computer information. But
even without that setting/ability the apps themselves could conduct the same
reporting (via direct HTTP requests), the only reason it is even a setting is
because Microsoft unified it to make developers lives easier and to better
aggregate the information their side.

Are people legitimately concerned that when they launch the XBox music app
that Microsoft knows you did? Even without the Windows telemetry they could
just look at their own server logs since the XBox Music app utilises so many
web resources (e.g. images). The same is true with any developer, any app, on
any platform.

Ultimately the whole thing is a bunch of noise and no substance. Nobody can
actually point to exactly what specific information Microsoft is even taking,
and have even less data yet still to back up any claims.

~~~
criddell
A lot of small medical and dental practices operate on one or two PCs. Windows
doing things like uploading your calendar and address books could end up being
a HIPAA violation.

Enterprise customers are fine because they have controls for everything, but
small offices running Windows 10 Pro aren't so lucky.

~~~
patio11
Let me delicately observe that there is a straightforward reason why one has
HIPAA-protected information in one's address book and it implies you make
hundreds of HIPAA violations routinely.

~~~
tracker1
Honestly, I think HIPAA may have been a net negative to the medical industry
and has probably prevented the basic sharing between medical practices and
related services that it was supposed to more readily allow. The lawyers have
benefited a lot, and the abstract details insurance companies have gathered,
but refuse to disclose based on HIPAA grounds to their own customers about
themselves and medical practitioners treating those same people is often
ridiculous at best.

~~~
dragonwriter
HIPAA mandates that the people have access to their own PHI held by covered
entities, a mandate which did not exist before HIPAA, so it did the opposite
of creating additional barriers to patients getting access to their own data.

~~~
big_maybe
Patients are denied access to their own records in the name of HIPAA. During a
recent medical crisis this happened to me. No amount of threatening or
cajoling would get them to release my images to my designated 2nd opinion.

~~~
dragonwriter
To put it simply, anyone claiming HIPAA is the reason for that is just lying
(since HIPAA has no such requirement) and would invent some other excuse -- or
simply refuse without explanation -- without HIPAA. In fact, HIPAA patient
access requirement mandates that patients have access to, and a right to
receive copies of, their records under most circumstances, and refusal to
provide such access is an actionable violation of HIPAA -- without HIPAA,
there would be no recourse.

~~~
big_maybe
Pre HIPAA I never had a problem obtaining my records. The trouble is less-
knowledgeable health gatekeepers are relentlessly indoctrinated into believing
that privacy is paramount. A records request that doesn't follow a rigid
checklist is defaulted to REJECT. And it is in the name of protecting the
patient's privacy.

------
rayiner
Small thing, but nice to see that the API is exposed as C (easy to write
bindings for) instead of C++ (near-impossible to write bindings for).

~~~
xenadu02
Slight derail but I find it interesting that the Swift team is tackling the
fragile ABI problem with v3... Something C++ could have done at any time,
enabling portable and interoperable C++ interfaces.

(There's no reason clang importer couldn't surface C++ or any other language
to Swift for that matter)

~~~
rayiner
Even if you can easily parse C++,[1] there are a lot of practical impediments
to binding to C++ libraries. If an API exposes templates, or relies on
constructors/destructors, it's very hard to call that from non-C++ code. For
example, SpiderMonkey wraps JS pointers in C++ objects and uses RAII to
register roots being held by C++ code with the JS garbage collector. Handy,
but more or less impossible to call from non-C++ code without writing a shim
by hand.

[1] You young-uns and your Clang. I did a C++ binding generator for my GSoC
project, and back then ('05) GCC was the only open-source thing that could
parse C++, and you could only get at the parse tree by patching it to dump
XML.

~~~
X-Istence
Clang and LLVM could have been a GCC project instead, but Stallman decided
against it.

Also, the reason you could only get the AST as a XML dump was because of the
same shortsighted mindset.

~~~
vetinari
Stallman also had a reason for that.

If he wouldn't insist on respecting GPL for GCC, there would be no GPL
licensed Objective-C compiler, because Jobs would simply never free-source it.

~~~
X-Istence
Except that clang is free, under a completely open license, which completely
and utterly negates your second sentence.

~~~
rayiner
Swift was unfree until recently. That couldn't have happened with GCC.

~~~
netheril96
Swift probably would never exist, much less free, if LLVM were not a thing and
GCC were the only choice.

------
dmm
> Finally, you can also use ChakraCore as the JavaScript engine in Node.

This is interesting. You can use it as an alternative to v8 for node.js

~~~
brianwawok
What is the advantage of this? What does 1 more JS engine buy us?

~~~
Klathmon
Having more than one engine can mean that there is less of a V8 monoculture.
Bugs in V8 don't become "standard" and "things that V8 is really good at"
doesn't become "things that Javascript is really good at".

~~~
Artemis2
That's what Go does. The reference of the language is [an actual
document]([https://golang.org/ref/spec](https://golang.org/ref/spec)), not a
reference implementation. There are two compilers (gc and gccgo), and this
way, no edge-case of an implementation can make its way into programmers'
habits, something that tends to happen a lot with JavaScript.

~~~
mintplant
Is this another [1] standard language feature that's being chalked up to Go
now? Everything old is new again.

[1] The first being statically-linked binaries.

~~~
bmarkovic
If I'm not mistaken, the case with statically linked binaries in Go is more of
a "It's not a bug, it's a feature" situation than being touted as Go
invention. Besides, they are rectifiing that one if I'm not mistaken.

------
balls187
I'm skeptical.

Over the past 5 years or so, Microsoft has lost developers as a core group.
There are certainly interesting things happening out of their dev group, but
with the rise of Cloud infrastructure, cheap (free) alternatives to WINS
stacks rose tremendously in popularity.

I was a Seattle Techstars 2013 Founder, and the only two teams using MSFT tech
were those whose founders were ex-Microsoft employees.

This just feels like a ploy to get developers back on to Microsoft's
platforms, then slowly bleed them dry with fees.

*

My experience with the new Microsoft: One of our major products runs on
Microsoft SQL Server. Sadly, many developers/ops folks did not realize the
difference between SQL Server Enterprise, and SQL Server Standard, and opted
to install SQL Server Enterprise on servers, despite not using any of the
Enterprise features.

Not only does SQL Server Standard pricing differ compared to Enterprise, but
_how_ it's price differs. Enterprise is charged based on a per-core license,
requiring both a core license for _every_ core, as well as a minimum of
4-core's per physical processor.

During a routine Software Audit, MSFT determined we had quite a few more SQL
Server Enterprise installs than we licensed, so sent us a nice fat bill. We
asked for leniency. It was a mistake (ours of course), but we didn't use any
of SQL Server Enterprise features.

MSFT wanted no part of that.

So we ponied up our bill, and decided to never use MSFT tech again.

Contrast that with AWS. Due to developer error, we had one of our AWS keys
compromised and an attacker used it to mine bitcoins. Amazon sent us the bill.
We contacted them, and they gave us a one-time forgiveness.

*

The morale of this story: Use microsoft technology at your own peril. Also,
having developers handle infrastructure is cool, but don't discount the value
of a dedicated infra team.

~~~
dragandj
One thing that always baffled me was "routine software audits" by Microsoft,
Oracle, and the likes.

So, you license a technology, and now your supplier can police you at their
own wish. OK, there are situations when you have no choice - they are the only
game in town. But in the last decade much of the infrastructure has been
available in an open-source form.

I am surprised anyone would touch anything from such companies if there is a
free alternative not connected to such companies (and in this case there are
many).

~~~
frandroid
You agree to this even if you're just using Windows and/or IE, or any other
Microsoft software for that matter. So either you have absolutely no Microsoft
software, or you're open to an audit.

~~~
blibble
how does that work as a consumer/very small business? they have no proof that
I'm running their software, they would be never be able to get a warrant to
search my premises, and if they ever stepped foot on my property I'd have them
done for trespass.

I can believe there's a contractual term in the volume license agreement that
allows them the right, but for that they be giving you a significant discount,
which seems fair.

------
stymaar
I've seen that a partial Linux support is on the roadmap, but does anyone know
if there is a way to compile it with gcc or clang, or if it's on the roadmap ?

~~~
JoshuaJB
It doesn't look like it builds yet. See
[https://github.com/Microsoft/ChakraCore/wiki/Roadmap](https://github.com/Microsoft/ChakraCore/wiki/Roadmap).

~~~
dilijev
Hi Chakra Engineer here. It's a work in progress. You can see current work on
the `linux` branch
([https://github.com/Microsoft/ChakraCore/tree/linux](https://github.com/Microsoft/ChakraCore/tree/linux)).
I believe we are targeting clang. It does not build yet. We will enable builds
of parts of the project in stages, building up to a full build with some
differences (as you can see in the roadmap, no JIT to make portability easier
in the short term, among other things).

------
kelvin0
In the last couple years it seems like MS has been acting like the crazy-
small-TV-shop-owner-doing-his-own-tv-ads : "Yes folks, we're open sourcing
everything, cuz I'm crazy Bill". Mind you, this is good for devs finally
getting access to this amazing technology!

~~~
barryfandango
* Crazy Satya

------
crudbug
Why nobody extends excellent platform like LuaJIT, it has all the qualities to
becomes an "Uber" dynamic language platform.

LuaJIT platforms like luvIT[1] with proper VM management/diagnostics APIs will
make it compelling solution for backend middlewares and IoT boards.

[1] [https://luvit.io](https://luvit.io)

------
hazz
Similar item linking to the blog post:
[https://news.ycombinator.com/item?id=10895994](https://news.ycombinator.com/item?id=10895994)

------
dang
We changed the url from
[https://github.com/Microsoft/ChakraCore](https://github.com/Microsoft/ChakraCore)
to this, which points to the GitHub repo as well as containing more background
info.

------
Klathmon
Congrats to the Chakra team!

I know that there was probably a good amount of work that went into making
this happen.

~~~
abchatra
Sincerely thank you. Yes, it was a lot of hard work, but we had fun. Looking
forward to working with the community.

Disclaimer: I work for Chakra team.

------
kemitchell
Interesting that the inbound terms (CLA) include an express patent license,
while the outbound terms (MIT) have less clear patent language.

There is tremendous political and PR value in offering MIT outbound. Fun
thought experiment: How different would reception be with Apache 2.0, Eclipse
Public, or similarly "enterprisey" terms?

------
bobajeff
Here's hoping EdgeHTML will also get open sourced. I know they've talked about
it internally.

~~~
ConAntonakos
What exactly is it?

~~~
bobajeff
The rendering engine in MS Edge. (Like Gecko, Blink, WebCore (Webkit),
Trident.) A fork of Trident stripped of some legacy code.

------
yuhong
This has the code to generate proper function tables for SEH support on
Windows x64.

------
plesner
Caveat emptor. The license only gives you permission to use the code, not any
patents covering it. So while you can read the code, to use it you need to
either get a separate patent license or convince yourself that MS holds no
patents on the code. I'm not going to do a patent search, nor do I want to
know, but I would be surprised if they haven't patented aggressively.

------
Flow
I'd love to read an article about the various high-performance JS engines.
Something like
[http://fabiensanglard.net/doom3/](http://fabiensanglard.net/doom3/) but for
Nashorn, V8, JavascriptCore and Firefox covering approach, policies, code
quality and bug stats.

------
brentvatne
Where can I find side-by-side benchmarks for Chakra, JavaScriptCore and V8?

~~~
epmatsw
Chakra's not on there yet, but I'd expect it to be soon after this
announcement: [https://arewefastyet.com](https://arewefastyet.com)

~~~
saurik
Nor is JavaScriptCore, which has made that website pretty useless to me as of
late.

~~~
Klathmon
actually JSC is on there, you just need to select something other than the
default 32bit machine.

This link should show JSC there:

[https://arewefastyet.com/#machine=29](https://arewefastyet.com/#machine=29)

~~~
saurik
!! Thanks!! I have spent the last two months furiously working on improving a
project of mine (Cycript) that is built on JavaScriptCore, and this is super
useful to see!

~~~
Klathmon
Yeah make sure you click the "breakdown" link on the left for an overview of a
bunch of other tests, machines, and other stuff.

------
wanda
Surprised they use WordPress to build this website. I thought they'd use
Umbraco at the least.

It doesn't surprise me though. ASP.NET is a powerful platform which has seen
some great improvements after MVC gained traction, but I wouldn't use it for
anything simple where a static site generator or WordPress would get the job
done.

~~~
cszerzo
So are you surprised or not? :)

------
mrzool
Wow. Closed source lost big time.

------
nothis
So... how is it? Do people like Edge's JavaScript support?

~~~
whatever_dude
It's surprisingly good.

* Better ES6 support [https://kangax.github.io/compat-table/es6/](https://kangax.github.io/compat-table/es6/)

* Faster performance [http://az648995.vo.msecnd.net/win/2015/12/chakra-performance...](http://az648995.vo.msecnd.net/win/2015/12/chakra-performance.png)

------
netheril96
MS changes towards open source is nice, but I wonder how long it will be
before all these projects are usable and stable enough on Linux/BSD/OS X.
Perhaps they should focus on bringing a single project cross-platform, like
.Net, instead of simultaneously attacking so many fronts.

------
norswap
Does anyone have a technical comment about the merits of this vs Node?

------
pingisover9000
Looks like they're using the same business model as Quantopian. Get
contributions for free, still hold tons of leverage over anyone else that
tries to compete, but otherwise allow other people to use the code.

------
eduardgo
This is something incredible!

------
nmblackburn
See this is how to open source something, I hope your taking notes Facebook.

------
cjbprime
(In case anyone thinks this is more amazing than it is: it runs on Windows
only right now. But presumably someone will start working on Unix ports
shortly.)

~~~
hiteshk_msft
Check out the Linux branch :) we are actively working on a port.

Disclaimer: Msft employee on chakra

~~~
blinkingled
From the Roadmap document - it seems like JIT on Linux is not a priority?
That's surprising. Is it due to technical issues or the whole idea is to have
NodeJS on Windows use Chakra and let the community do the Linux part with JIT?

~~~
abchatra
The first step is to get the runtime and interpreter running. Next step is to
bring the jit up. Chakra is the hybrid engine where we have the interpreter,
simple jit and full jit. The interpreter is the one which does all the profile
data collection. Profile data is required to get the quality jit code.

Declaimer: I work for Chakra team.

~~~
Matthias247
Hi! Thanks for explanation and another cool product!

One question that just came to my mind regarding this: Have you thought about
a configurable/modular build where this interpreter/simple jit/full jit can be
switched? Or is this perhaps already there?

I can think of some use cases where it would be interesting to build a modern
and full featured JS engine in interpreter-only mode. E.g. to integrate it
into platforms which don't allow JIT (iOS), to reduce the footprint or the
attack surface. Or to be able to port it the other platforms without much
effort - in the embedded domain there are still other processors than x86 and
arm and other OSes than Windows, Linux and OSX floating around.

~~~
abchatra
Great question. Yes, we have a way to disable jit. See the merged pull request
by our super cool dev here:
[https://github.com/Microsoft/ChakraCore/pull/4](https://github.com/Microsoft/ChakraCore/pull/4).
We have build configuration which produces daily builds without JIT as well:
[https://github.com/Microsoft/ChakraCore/pull/42](https://github.com/Microsoft/ChakraCore/pull/42).

------
dreamdu5t
Ugh, "Chakra" is such a tasteless cultural appropriation.

------
chejazi
Good that it's open source, but I found this blurb from their contributing
guidelines [0] to be contribution inhibiting:

 _You will need to complete a Contributor License Agreement (CLA) before your
pull request can be accepted. This agreement testifies that you are granting
us permission to use the source code you are submitting, and that this work is
being submitted under appropriate license that we can use it._

[0]
[https://github.com/Microsoft/ChakraCore/blob/master/CONTRIBU...](https://github.com/Microsoft/ChakraCore/blob/master/CONTRIBUTING.md)

~~~
jhchen
What's wrong with a CLA? It's incredibly common for projects open sourced by
companies.

~~~
JupiterMoon
It means that the company owns the copyright to everything and can close the
source again any time they want.

EDIT

Dear mods. Some pretty measured posts are getting serious heat in this (and
other threads relating to MS) maybe you could look into it?

~~~
Sanddancer
The FSF has requires contributors to sign one too. Are they evil as well?

~~~
JupiterMoon
They require a CLA for exactly the same reason. So that they can change the
licence later on if they want.

However, the FSF has a different record to Microsoft over the last 40 years
wrt FOSS software.

------
xiphias
What is the main reason for not merging V8 and ChakraCore? It's really cool
that teams from the big companies can learn tricks from each other, but as far
as I see the goal of Google and Microsoft here is to just advance Javascript
in the same standard direction. Have you talked about not duplicating all
efforts?

~~~
davnicwil
> Have you talked about not duplicating all efforts?

In this case the duplicated effort is desirable. You're implementing an engine
to meet a spec. Duplicating the effort gives you:

Competition - if there's only one implementation, what are your drivers,
metrics and priorities for improving performance, spec compliance, and
correctness? In practice, you're going to be deciding these things
arbitrarily, by committee, on behalf of the market. If on the other hand you
have two(+) competing engines, all these decisions are driven much more by the
market, which is far likelier to generate better results for the market.

Redundancy - If the same spec is implemented semi-independently by two
different teams, then different implementations of the same features will be
tried, and tested in the wild, until winners emerge for different use cases.
This is incredibly powerful for innovation and optimisation, and the fact that
both engines are open source only multiplies this power.

Definitely by literally merging the two engines into one codebase, you'll lose
these advantages almost completely, and even putting the two teams and the two
projects under one organisational roof whilst still trying to keep them
'separate' would put the advantages of them being truly independent at serious
risk, whilst probably not having much upside that isn't already provided by
having the two codebases be open source.

Two independent teams duplicating their efforts is a very, very good thing,
and even better now that ChakraCore is open source.

------
kookook
Don't care really what you do Microsoft. Your legacy of vendor lock-in,
monopoly market, unethical business strategies and even bribes still lives on
today with your toy OS. You set us back many, many years. Hopefully this free
and open movement will be your undoing.

Unfortunately there are people here right now that are paid to shill your crap
and constantly come up with excues like "things have changed". Yeah right,
like I will forget what you have done.

