boo-lang / boo

The Boo Programming Language.
BSD 3-Clause "New" or "Revised" License
856 stars 144 forks source link

Migrate from NAnt? #207

Open rmboggs opened 3 years ago

rmboggs commented 3 years ago

Hi,

I know that there is a lot that needs to be done for this project but I feel that the first thing to do would be to switch the build system away from NAnt. I was thinking of trying out Cake since it is active and I've had success with it with other projects. However, before I dive in, I wanted to see what others thought about this. Thoughts?

masonwheeler commented 3 years ago

Looks interesting. Is it possible to run it without .NET Core? I don't know if the build machine supports it.

rmboggs commented 3 years ago

It should run on either .net Framework or Core. Although the min version of framework required seems to be 4.6.1 but that shouldn't be much of an issue.

What build machine is Boo using? I'm using Cake on another project with Travis CI and Appveyor without issues.

masonwheeler commented 3 years ago

Boy's build system is using Travis CI too. If that won't be an issue, I'd be happy to remove the Java dependency from our build process.

rmboggs commented 3 years ago

Here is a sample of how it looks if you are interested.

If you are ok with this, I can start looking into changing the process from NAnt to Cake. I can send a pull request once it is ready for review.

masonwheeler commented 3 years ago

Sure, go ahead.

rmboggs commented 3 years ago

Also, Appveyor is pretty cool too. That might be something else to look into.

rmboggs commented 3 years ago

ok, thank you. I'll let you know how it goes.

eatdrinksleepcode commented 3 years ago

For what it's worth, migrating the build to Cake was number 6 on my list of ways to improve the development experience with Boo more than three years ago:

  1. Replace the NAnt build with a currently supported, non-XML-based build tool. Here I wish I could recommend Casper, as it would be great for Boo to be reinforcing its own ecosystem. Unfortunately, Casper is not yet mature or stable enough for me to responsibly recommend it as a replacement. Maybe one day :)

I also am a HUGE fan of Gradle. But, the whole reason I am writing Casper, which is inspired by Gradle, instead of just using Gradle for my .NET projects, is that I object to introducing a dependency on a completely different development ecosystem just for a build tool. I should be able to write my build inside the same ecosystem as my app. I would recommend the same approach for Boo.

The two most popular non-MSBuild build tools in .NET today are Cake and Fake. I would recommend Cake, which has a low learning curve (if you already know C#) and good community support.

Note that I intentionally placed #4 ("Ensure that the NAnt build runs successfully on a fresh clone") ahead of this. Even though I think we should ultimately remove NAnt, it is critical that the existing build be stable, both for the sake of developers currently working with the repo, and to serve as a guide and point of comparison for the implementation of a new build process.

I am happy to say that I was able to accomplish numbers 1-4; but at that point I ran out of time to invest in Boo, and was never able to make it to 6. Since then my first child was born (more than a year ago now), so I have even less free time :)

I am glad to see someone else picking up where I left off. I spent a fair amount of time digging into the Boo build back then, and I don't think much has changed. Although I can't commit much in the way of time, if I can be helpful at all getting the build converted, please do let me know. I still think that getting Boo off of NAnt and onto a modern build system would make it much easier to contribute to Boo.

rmboggs commented 3 years ago

What should the minimum framework/core target be nowadays?

RealDoigt commented 3 years ago

for framework? I wouldn't see any reason not to use the latest even for a minimum, but maybe as a safeguard 4.7.2 could be an ok choice. Framework itself is going the way of the dodo soon btw, so I wouldn't be thinking much about anterior versions tbh.