Being a good citizen?

The choice of build tools is surprisingly contentious. I know I, personally, am not a huge maven fan. I've been given to explosive, vitriolic rants against it, actually. But now I'm forced to use it at work so I'm learning it more than I'd hoped to ever have to. :)  But whatever your choice of build tool is, there's one thing I think should happen that would help out so many people.  If you write some form of library to be reused by the world at large, it should get published in the maven repos.  Or maybe an ivy repo(s) if there are such centralized/public beasts.  Making it easy to find these artifacts will only help to drive adoption of a project. Whether you chose maven or ant at that point (or something else...), it becomes quite simple to find and fetch dependencies.  I use the ant tasks from the maven project to pull down my deps and then ant to build.  It works well enough for me until I run into a library that hasn't been published to a repository somewhere.  Some projects are really good about publishing their artifacts.  Other projects' devs respond with simple "not my problem" responses.  If I can't find a dependency in maven, I'm much more likely to try to find another library to use.  So uploading an artifact may not be your problem, but it's certainly not mine.  It's a good way to drive people like me to other projects, though.  But maybe you don't care about that, either.

I'm a big fan

I've been watching the Fan language for some time now after seeing it first mentioned on on Stephen Colebourne's blog.  Or maybe it was Cedric's.  Anyway, it caught my interest and i've been a voyeur ever since.  I'd peek into the site every few weeks or and see what was up.  Recently I decided to really give it a go.  Since I had so many other side projects languishing, what's one more, right?  Now, I'm not one to just sit down and start writing random code.  I need a goal.  A Project. I finally found one:  porting mercurial from python to fan.  Now, I know what you're probably asking.  "Are you daft?  Why would anyone want to do that?"  Well, there are a few answers to that.  Foremost, is that it gives me something concrete to write in Fan.  Other, more ancillary, reasons include not really needing platform specific builds (get rid of the C code!) and seeing how Fan stacks up speed wise to the python version.

Now, that last reason is the tricky one.  The first is easy enough to fulfill no matter how far down this road I go.  I mean, I'll be learning fan regardless of how functional this port is.  But to really compare speed, one has to have equally functional software.  I *could* just write some benchmarks blahblahblah but those are relatively boring and my python chops are a bit rusty.  Having me write python code for a benchmark wouldn't fair at all to python.  And probably just a little embarrassing for me to have that code out in the wild.

So my question now is, how far do I take this?  I like the fan language quite a bit.  I'm far from having mastered it (especially as parts of it are still under heavy development and discussion).  But so far, it's not too bad at all.  It's like a cleaned up Java 2.0.  I've found a number ways that *I* would "clean up" the current python code (I know "clean" is subjective and probably will start a flame war but that's not the point of all this).  I'm almost to the point where I'm going to start getting into some heavy lifting of hg protocols and the like.  I'm not sure have much further I really want to go down this path but so far I'm having fun.

If you're looking around for a new language to try or you've been thinking about fan, you should definitely give it a spin.  It's probably a little too early to commit an enterprise to since there's still some evolution going on.  And some IDE support would be nice.  (I do have Komodo Edit set up to parse the build output but no syntax support yet...)  It's definitely an interesting option if you have mixed deployment environments, though.