There seems to be some misunderstandings in this thread, and I’d like to try to sort them out with a somewhat shot explanation.
Now, before I start, I’d like to say that I am in no way an expert on the subject, but I have been following vNext, and Roslyn for a long while.
First of all, Roslyn is a managed compiler, written in C# and VB. This fact alone means it was never built to run naively anywhere. Not on windows, not on linux, not ever. That isn’t to say it can’t be done. Using stuff like .NET Native, or even some of the AOT capabilities of mono it would probably be possible to compile Roslyn down to a native application, but my point to get across here was that Roslyn is written as a managed compiler.
Given that Roslyn is a managed compiler, it needs to run on a CLR. Traditionally, on windows this meant the CLR (the big thing that comes pre-installed with your OS, and you have to reboot 10-15 times to update), and on OSX/linux this meant mono. Recently, though, as MS released the Core CLR, there is a new contender. So now you can run Roslyn on the Core CLR (meaning, when the Core CLR starts working on linux you don’t need mono to compile applications anymore).
Now, the Core CLR is a limited CLR. It does not have nearly as much frameworks supported as the full CLR (or mono) does. For instance, there is no GUI libraries (at all). Though, whether or not mono GUI frameworks would run on the Core CLR I have no idea. But for anything that isn’t either web server/service or console applications, I expect we’ll be using mono on *nix for a long time.
Next is Sake. As you pointed out, Sake has almost no documentation (at all). Sake was written as a weekend project by one of the team members on the vNext team (if I recall correctly), and they decided it worked well with their goals (cause nobody likes to try to make
make work xplat, and MSBuild was not made for the kind of build used to build the vNext repositories). Sake, as far as I know does not run on the Core CLR. It’s a task runner, built as a managed application, thus requiring to run on a CLR (just like Roslyn). So unless it’s changed to be made Core CLR compatible (or already is, I just don’t know about it) it will require mono to run on linux. So to say that “Sake.exe is a custom build system used by the ASP.NET Core stack built on top of .NET Core.” I fear is really wrong.
On to the next thing:
KoreBuild has nothing to do with Roslyn. It’s named KoreBuild because it’s used to build
K projects (as they were called way back when). KoreBuild is a collection of Sake shade-files that has defaults for building vNext projects. Think of it like including
CSharp.props (or whatever it’s called) in your MSBuild files.
And as to MSBuild, I understand that many would like it on linux, and see that it would be usefull to build projects and integrate with other teams etc. However, personally I’d rather see the new build system, based on
project.json extended and used. That build system already work xplat and is open source, and it’s a lot more friendly to work with than MSBuild, albeit a lot more limited.