Friday, October 23, 2015

Clang Is the Next WebKit

Guy English:

Clang appears to be following the same path that WebKit has. Apple switched over to Clang years ago and the pace of development of Objective-C accelerated immediately. A few years ago Clang became the default compiler for FreeBSD, displacing GCC. In early May Microsoft announced that they’re Bringing Clang to Windows. According to The Register, Microsoft will have a release of Visual Studio that uses Clang as the front-end to their compiler in November.

So then the next question is whether Microsoft will feel the need to fork Clang, as Google did with WebKit.

4 Comments RSS · Twitter

Their objective right now seem to be able to compile cross-platform code using the same compiler front end on every platform to avoid having differences in the C++ featureset. This is how they're offering Objective-C APIs too. So basically they are linking the Clang front end to their proprietary compiler back end and offering that for situations where it's a better way compile cross-platform code with Clang than adapt the code to their compiler; it wouldn't make much sense if it started to deviate from Clang. They'll keep using their own front end for most things anyway.

Perhaps one day Microsoft will truly switch everything to Clang, and then a fork will be more likely. But it's hard to predict five years from now, and I don't see that happening before then.

Having spent a lot of time hanging out in the LLVM/Clang and WebKit communities (if not necessarily participating), I'd say there are some pretty huge differences in the way they are run. There doesn't seem to be as much friction I've seen between different users of LLVM/Clang and even when there has, it's been really well handled. Big changes don't tend to just "appear" as they often did in WebKit. Also, there isn't the idea that supporting the "Google way of doing things" (particularly varying multiprocess models and V8 vs JSC) is a big drain on resources, as there appeared to be in WebKit. Google is also a major contributor to LLVM/Clang, FWIW, and there are many more contributors overall — academic, industrial, open source (FreeBSD and NetBSD using it as their primary compilers), etc. LLVM is undergoing an attempt at relicensing at the moment, which has been interesting to watch.

Really? The LLVM license page states the following (http://llvm.org/docs/DeveloperPolicy.html#license):

> An implication of this is that the LLVM license is unlikely to ever change: changing it would require tracking down all the contributors to LLVM and getting them to agree that a license change is acceptable for their contribution. Since there are no plans to change the license, this is not a cause for concern.

> We have no plans to change the license of LLVM. If you have questions or comments about the license, please contact the LLVM Developer's Mailing List.

If they are indeed now undergoing an attempt at relicensing at the moment, there is probably a lesson to be learned at picking a license on a new project :-)

@charles Yes, really. They’ve been talking about it on the mailing list, changing to the Apache 2 license.

Leave a Comment