[Mono-dev] GSoC Proposal for FreshBuild

=?GB2312?B?U2hhcnAgQmxhZGXO3rrx1q7I0A==?= sharper.than.bladez at gmail.com
Wed Apr 6 04:56:13 EDT 2011

I have published the updated proposal here : https://gist.github.com/905344 .


Here's my the draft of GSoC Proposal for FreshBuild.
I'd welcome any feedbacks and anyone who would like to be my mentor.
And I need a more impressive name for this ambitious project.


FreshBuild : Add MSVC and GCC Supprot to XBuild/MSBuild and Translate
Makefiles to MSBuild project Files

Jiacheng Jiang (sharper than blade)

# Contact Information:

Email: sharper.than.bladez at gmail.com
Google ID: sharper.than.bladez
IRC: Sharp

# Abstract:

    This project is to improve the XBuild so as to provide MSVC and
GCC support and translate makefiles to MSBuild project files.It is
intended to simplify the building process and cut down building
problem on both the Windows and Linux platforms.Also,many opensource
projects would benefit from the MSVC compiler in performance, which
can usually produce faster bytecode than GCC.FreshBuild is based on
XBuild and would eventually merged back into it.

# Benefits:

    Building is not easy.Many opensource softwares are based on the
GNU tool chain,which use makefiles as their build scripts. To build
those softwares on Windows,you have to install Cygwin to use GCC and
Make,even though the MSVC compiler is available.And to use GNU
Make,you have to  write makefiles.While Java and .Net developers would
prefer to some easy to use ,more advanced and XML based build systems,
such as Ant,Maven and MSBuild, which is a lot more friendly to us.In
my own experience, I often get mad when I am required to install GCC
and a lot of other compile tools while installing a small Ruby gem in

    Mono is made up of C and C# source code ,and ,just like many other
opensource projects, it currently use GNU Make to build
itself,including compiling,generating docs and running unit tests.It
also provides XBuild,the counterpart of MSBuild,to build C# projects.
However ,it has fallen behind since the MSBuild 4 has been updated to
support VC++ compiler,which unified the building process on windows
platform.This project would help Mono to build itself with XBuild on
both Windows and Linux.So you do not have to worry about Cygwin when
you are in Windows.

    To migrate the GNU Make based projects ,I really hope to develop a
makefile to MSBuild project file translator ,which would help me to
get rid of those makefiles.I have been planning this for
years,especially every time building problem occurs.

# Deliverables:

    1.A MSBuild extension to support MSVC on windows,which is the same
as the official one .
    2.A MSBuild extension to support GCC on both Windows and Linux
    3.A makefile translator.
    4.A visualizing tool to edit MSBuild project files (which is less important)
    5.A build server for FreshBuild  (which is also less important)
    6.Some docs ,some examples and a test suite.

    For such a project,I don't have to worry about tests.So I would
take compiling the ruby installer as my goal.I shall translate its
makefiles and compile it with MSVC in the end.

# Project Details:

    Some Backgrounds:

    MSBuild is an Ant-like build system for Visual Studio,which
supports VB and C# and is very extendible.Ever since VS2010 and
MSBuild 4,it supports C++ projects.XBuild is the opensource edition of

    -- I would start from XBuild,add MSVC and GCC support to it and
implement some missing features if necessary.It is not difficult,but
it needs a lot of tests.

    -- I would also provide a MSBuild project file editor and a build
server if possible.It may be developed in WinForms,
Silverlight/Moonlight or HTML.If time is not enough,I would cancel

    -- As to the makefile translator,It is a challenge for
me.However,Microsoft also provided a NMake(the previous MSVC build
tool) file to MSBuild project file converter. Since the capacity of
MSBuild is a superset of GNU Make and it's so easy to extend ,it is
possible to develop such a translator.I 'll write a makefile parser
,analyze the makefile structure ,do some replacement,and then generate
the XML form build scripts.I have some experience in developing a
compiler with Antlr,it would help.

   -- All code will be hosted on a GitHub repository. Once the project
is finished, it will be merged back into XBuild.It would be writen in

   -- MSDN would be the best document for this project, so my document
would focus on the Linux cases. I would also provide some GCC samples.

   -- As I mentioned before, the final goal of this project would be
compiling the Windows Ruby installer with MSVC.

   -- The development process is divided into multiple stages and
during each stage it is mostly iterative and test-driven .I will
firstly do some experiments,read the manual ,make up the test suit and
then try to pass it.At last I would fix the remaining bugs.

# Project Schedule:

    I wouldn't wait for the summer vocation to start the
development,though I would be less active before it.And during the
development process, I am eager to communicate with my community

    My schedule is made up of 14 weeks,started soon after from April 8,

    Week 1 : Learn about the usage of MSBuild,go through the source of
XBuild and try to do extend it.Considering I have some experience
using and extending the MSBuild ,it wouldn't be a matter for me.

    Week 2-3 : Create sample VC++ projects for tests,and start to
develop the MSVC extension for XBuild.I just need to follow the
MSBuild api in MSDN ,still ,it would not be a matter to me.

    Week 4-6 : Create sample GCC projects from the  VC++ projects,dive
into the GCC Manual and try to compile some softwares by Cygwin.I have
to do a lot of reading,so it would cost two weeks.And then I will
spend one week to develop the GCC extension .And I would also try GNU

    Week 7 : Study the GNU Make grammar and read through its
manual.Also I should do some experiments on it.

    Week 8-11 : Start writing the translator.I would write a lot of
unit tests and develop the parser with Antlr.And I need to solve a lot
of problems.Also,I need to try it on Linux.

    Week 12-13 : Develop the MSBuild Project file editor and build
server.If necessary ,I would also need to fix some bugs.

    Week 14 : Hunt bugs and get feedback from community users.

# License:

    MIT License

# Bio:

    I am a junior student in the South China University of
Technology.This is my first Google Summer of Code Project. I learnt
computer programming (in Delphi) since my junior high school time.I
have a lot of experience in C#,Java,PHP and Ruby.I have great interest
in developing advanced compilers and high performance servers.I've
wrote a Javafx-like language grammar and a matlab language grammar
with antlr.I like opensource softwares ,but sometimes have problem in
compiling,installing and fixing dependencies,which costs me a lot of
effort and makes me angry.So I came up with this project.

# Eligibility:

    In many ways,I am an eligible student.I can provide identification
if required.

More information about the Mono-devel-list mailing list