[MonoDevelop] Cross platform build strategy

Todd Berman tberman at off.net
Wed May 25 15:58:34 EDT 2005


On Wed, 2005-05-25 at 13:55 -0500, Jayme wrote:
> 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. 
> 

Yup, and that just does not work for MD to use as its prime build
system.

Until that changes, its not exactly something we want to depend on. In
theory we could bloat the repository and include an already compiled
copy of NAnt there, but we gain nothing.

> 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. 
>

Dude, I know and understand NAnt and Ant, believe it or not, i used to
write java and used ant and maven all the time. So don't assume that
just because I dont think that NAnt is gods gift to build systems means
I don't understand it.

> 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 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.
> 

Newer build of MonoDevelop to linux?!

Dude. MD *NEVER WORKED ON WINDOWS*

NEVER

So If by newer you mean all, and by twisted you mean intent-of-design.
then yes.

MonoDevelop could run on win32 if someone did all the legwork to do so,
zac bowling tried, and it seems like that effort has completely stalled.

But MonoDevelop has never run on windows, and it has never been a prime
goal of it to do so.

> 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.

I was asking for other concrete examples of gains, not
'misinterpretation' of your intent.

> 
> Using NAnt could give you:
> 
> -An XML based file format that can be managed and automatically
> updated by other tools

We have that, .mdp and .mds

> -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

Um, distill that into english, not marketing blah. That means nothing to
me as a developer. and I doubt nant gets us that too easily.

> -A reason for developers who use Windows to switch to Monodevelop
> instead of just using Sharpdevelop like they do today

That has never been our intent, we want to provide linux users with a
good IDE to do C# work in, not convert #D users to use an IDE that
doesn't even run on their host platform.

And integrating NAnt into our build system doesnt exactly solve the
issues of... say... MONODEVELOP NOT WORKING ON WINDOWS.

> -A reason for the NAnt team to create turn-key distros for linux

Uh. I guess... not really a win for anyone involved in MonoDevelop.

> -Less lines of code in the build environment

*wrong*

You have no idea how much logic it would take to replicate make install,
make run, make dist, and make distcheck.


> -Better readability and validation of build files because they are
> well formed XML not just text

dude.

make validates our makefiles.

and I don't know that nant xml is any more readable than make files.

> -A quick upgrade path to MSBuild when it comes out

*waving his fingers in the air as if to say, so what?*

Who cares, MSBuild doesnt work on linux, until it does, its a non-issue.

> 
> 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. 
> 

If you think make dist, make distcheck, make run and make install are
all possiblt with NAnt and with less lines of code. Do it. Put your
money where your mouth is and show us. I for one know that it is not
possible, as we get all of those for free already with our build system.

And as far as a mono IDE depending on platform-specific code... well..
auto* works fine on win32. look at SFW and cygwin please.

And again, you neglect to understand that MONODEVELOP DOES NOT WORK ON
WINDOWS

Let me stress this again, as it seems to be something you havnt grasped.

*MONODEVELOP DOES NOT WORK ON WINDOWS*

> 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've read about it plenty, the first thing i did when moving from java
to C# was to look at NAnt, and how well it worked on mono, it failed
then, and it fails now. My reasons for not wanting this is that it
doesnt *SOLVE* any problems, it just replaced old problems with new
ones.

also, and maybe you still havn't noticed, but Monodevelop *IS* a for fun
project. It was never designed to compete with visual studio, and it
would be stupid to do so.

But I totally see your point, if we replace our semi-archiac, but
completely working build system with a brand new xml based build system
that doesnt work, we would totally compete on even ground with a giant
multinational corporation with hundreds of developers working on its
product.

Damn, why didn't I think of this earlier. Obviously it isnt the hundreds
of thousands of developer hours poured into visual studio, it is the
build system!

> 
> 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.

a) sorry, use svn if you want faster updates (new release every day)
b) it never ran on windows dude. NEVER. NEVER NEVER NEVER NEVER.

As for teaching an old dog new tricks, i told you.

Get NAnt build files that do exactly what we do with the auto* build
system, and we would happily look at switching. And because you didn't
seem to see the list of things nant *doesnt* do for free, let me list it
again:

1) i18n integration
2) make dist
3) make distcheck
4) make run
5) make install

Good day,

--Todd



More information about the Monodevelop-list mailing list