[MonoDevelop] Cross platform build strategy

Jayme jayme.edwards at gmail.com
Wed May 25 14:55:10 EDT 2005


Hi Todd,

Thanks for your reply. You can download a version of NAnt that works with 
1.1.7 from sourceforge here ( 
http://sourceforge.net/project/showfiles.php?group_id=31650&package_id=23704&release_id=304418).
Unzip/tar it into a folder, add it to your path and your set.

You bring up some good issues. The installation of NAnt isn't turn-key yet 
for platforms other than Windows although putting it on the box by manaually 
extracting and adding it to your path for now will get the job done. 

The reason I bring up NAnt is not about making it easier for the developers 
already on the project. You know linux and makefiles well and obviously you 
don't want to use something that you have to learn if your comfortable with 
what you know. NAnt support in the build process for your project is about 
making it easier for new developers who could speed up the current 
development lifecycle of Monodevelop. There are a ton of Windows developers 
with alot of solid experience in C# who could be helping you guys yet your 
haven't taken steps to provide them with a build environment they can use. 

You guys have tied newer builds of Monodevelop to linux, which makes no 
sense whatsoever to me because the whole purpose of mono is portability. If 
your argument is to code on linux and deploy anywhere that makes no sense 
because I can a) build code with VS.NET <http://VS.NET> today on windows and 
run it anywhere and b) build code with SharpDevelop today on windows and run 
it anywhere. The whole purpose of Monodevelop, unless it has been twisted 
into something else since then was to give people an IDE that will run 
anywhere mono will.

That being said, if you spent a little time reading all the NAnt 
documentation you'd see it does everything make does and a hell of alot 
more. That's why people use Ant to build java projects and not makefiles 
nowadays. SVN task support is an argument I brought up to discourage use of 
MSBuild brought up by the last replier, you taking it as my reason for using 
NAnt is a misinterpretation of my intent, sorry.

Using NAnt could give you:

-An XML based file format that can be managed and automatically updated by 
other tools
-Access to a ton of tasks that will exercise everything in the .NET 
framework plus many open source tools that when used by monodevelop can make 
the IDE even more attractive
-A reason for developers who use Windows to switch to Monodevelop instead of 
just using Sharpdevelop like they do today
-A reason for the NAnt team to create turn-key distros for linux
-Less lines of code in the build environment
-Better readability and validation of build files because they are well 
formed XML not just text
-A quick upgrade path to MSBuild when it comes out

If you read the history of Ant and NAnt they were created to solve the exact 
problems created by makefiles, I won't bore you with the details but make 
dist, make dist check, make run, and make install are all possible with NAnt 
and with less lines of code. A mono IDE should NOT depend on 
platform-specific code so I would think the goal would be to not need to 
check the user's environment using the ancient ./configure method of 
makefiles - NAnt does this 100 times better. 

You really need to read up on this stuff if the reason to use it still 
does't make sense. No offense but your reasons for not wanting to use it 
make it obvious that you have not really researched NAnt otherwise you would 
fully understand why getting to a modern build environment should be a top 
priority if you care about Monodevelop being anything more than just a "for 
fun" project that will be obsoleted by Microsoft because it can't gain 
community support to have a competitive release date cycle.

I would encourage anyone with your attitude to read the NAnt documentation. 
I am really disappointed in how slow new builds of Monodevelop come out, how 
it doesn't run on Windows anymore, and (now) how resistant developers on the 
team are to trying to improve the current build/release process. I would 
like to help with this project but if it is laden with "can't teach an old 
dog new tricks" personell, I'll just have to leave it be.

-Jayme

On 5/25/05, Todd Berman <tberman at off.net> wrote:
> 
> On Wed, 2005-05-25 at 12:12 -0500, Jayme wrote:
> > Hi John - thanks for your comments!
> >
> > Well just for kicks I created NAnt scripts for MonoDevelop.Dock,
> > ICSharpCode.SharpAssembly, ICSharpCode,SharpRefactory,
> > MonoDevelop.Core, and MonoDevelop.Gui.Utils (until I ran into the
> > dependency on Gnome-Sharp which isn't included in mono on windows) and
> > these all build and run the tests flawlessly under 1.1.7 on Windows.
> >
> > I've been writing tasks for NAnt for almost 4 years now and have used
> > it on two commercial projects at the companies I've worked as a
> > software architect for and I can tell you there are alot of great
> > people on the NAnt project that Microsoft basically ignored when they
> > started the MSBuild stuff. While MSBuild is cool because Microsoft has
> > finally decided to "wake up" and support a standard file format, the
> > reality is Whidbey is still a while away, the community (as usual) is
> > who innovated here in the first place (by porting Ant to .NET) and
> > there are over 80 tasks available for NAnt that do all kinds of things
> > that Microsoft won't have out the shoot (because of competitive
> > conflict of interest) such as support for the mono-specific parameters
> > of gcsc, subversion support, and oppenoffice etc.
> >
> > I hate to get into a religious discussion here but I will point out a
> > couple things. NAnt is available today and if Monodevelop used it I
> > can see the current NAnt developers being more than happy to test on
> > mono (and other platforms) even more rigorously then they already do.
> > Also since MSBuild and NAnt both use XML files, you can create an XSL
> > stylesheet that will convert from one format to another should MSBuild
> > become stable and released and have enough tasks to want to switch.
> > Some custom tasks like C# script etc. would have to be converted
> > manually, but I can't see that being a reason to not use it.
> >
> 
> Where can I download a copy of NAnt that works with mono 1.1.7, the
> couple times I have tried I have been very unsucessful.
> 
> Like it or not, installing auto* is far far easier than installing NAnt,
> and until it becomes *easier* to install auto* than NAnt, I don't see
> MonoDevelop switching.
> 
> As much as you may think that moving to NAnt makes MD easier to build,
> the sad fact is that it makes it easier for 10 people to build and
> impossible for the rest.
> 
> In my experience with NAnt on mono, dating from the very very early mono
> 0.21 days to today, NAnt fails to function half the time, and when it
> does, it is painfully slow compared to using auto*.
> 
> 
> Now, to get to your original question about moving MD to Nant, I dont
> think it is even a good idea, NAnt installation issues aside.
> 
> If you could explain what it gives us, maybe you could make a better
> case, and IMO a svn-task that does the checkout, and the make seems
> pretty lame as 'what it gives us'. I can write a 4 line shell script
> that gives us exactly the same thing.
> 
> Considering that NAnt doesnt support things such as make dist, and make
> dist-check, or any of the po/ integration that we do w/ intltool, etc.
> We would be losing a lot of functionality.
> 
> And before you bring up that we could have all 3 build systems in the
> tree (make, nant, and *.md[s|p]) i will stop you there. I am loathe to
> introduce a second (.md[s|p]) and absolutely against introducing a
> third.
> 
> So, just as a summary, until NAnt is
> 
> 1) Easy to install, and runs 100% of the time
> 2) Able to do everything our current build scripts do, not just build,
> but help w/ i18n, make dist, and make dist-check, support make run, and
> make install.
> 
> there is no way I would even look into accepting this is a viable
> change. That said, I wish you luck in getting NAnt to that stage.
> 
> --Todd
> 
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://galactus.ximian.com/pipermail/monodevelop-list/attachments/20050525/411fb515/attachment-0001.html


More information about the Monodevelop-list mailing list