SourceGear Takes C# Cross-Platform

[SourceGear is] announcing a deal with Ximian today. We need Unix clients for SourceGear Vault, but alas, C# has no real cross-platform story. So we’ve agreed to give Ximian a bag of money and they’ve agreed to hack Mono and make it speak .NET XML Web Services to ASP.NET. Vault users will be able to run our command-line client on Linux, speaking to the Vault server, which will continue to be Windows-only.

(Note that we are punting the cross-platform GUI issues for now. The Vault GUI client uses Windows Forms. We’ll tackle non-Windows GUI clients after we get the basic stuff working well.)

It’s easy to feel good about this kind of deal, and not just because it’s an honor to work with Miguel de Icaza. Everybody gets something. Vault users get more flexibility. Ximian gets revenue. All Mono users get interop with .NET XML Web Services. The world is a [slightly] better place.

[Eric.Weblog()]

Very interesting. Initial thoughts:

  • Miguel de Icaza does, in fact, rock. But I’ve said that before.
  • Apparently, C# does have a cross platform story. C# and CLI is an open standard. Hopefully, Mono’s success will spur others into building production implementations of C# and CLI on still further platforms.
  • I’m very surprised that Mono didn’t already have XML web service interop support. It’s true that Web Services support is not part of the ECMA/ISO standard. But then again, neither is ASP.NET, ADO.NET or VB and Mono has implementations of those.
  • They aren’t “.NET XML Web Services”, they’re just XML Web Services. There are standards (in progress) for this as well.
  • Since Web Services are a supported on many platforms, SourceGear could have built a Unix/Linux specific version of their command-line tool in any language, especially Java which has several Web Service implementations available. But for SourceGear, it appears that staying with C# and CLI was very important. Eric is already on record saying that his company “made a great choice when we decided to build Vault using .NET.” I don’t know how much “a bag of money” is, but I think it’s telling they were willing to pay Ximian to add features to their CLI implementation rather than to rewrite the command-line client in Java and use freely available web service tools.
  • I wonder how they will eventually address cross-platform GUI issue. Will they use Mono’s Win32/Wine emulator library or will they rewrite with GTK#?

UPDATE: It was pointed out to me that the term used in the ECMA/ISO spec is CLI, common language infrastructure, not CLR, common language runtime. I’ve updated this post accordingly. Also, this post disappeared for some period of time. Not sure why. But it’s back now.