On Aug 26, 2010, at 5:15 PM, Mark Slee wrote: >>> I have to admit that when I first looked at the Thrift compiler I was a >>> bit puzzled by the choice of language and the dependence on Boost. then >>> I realized that they probably didn't have open sourcing it in mind when >>> they made that decision. > > I'll provide the historical backstory here in case folks are interested. C++ > was actually chosen *because* of the early commitment to open source. C++ was > by far the best available option for ease of distribution and installation. > Using Python would have required everyone to have the right Python > extensions, like PLY, which are not part of the core language. This work > started in 2006 -- Python has continued to gain popularity over the past 4-5 > years, not all developer were so on board with it back then. Same issues with > Java -- the core language does not have a parser built in. Also, there are > still a fair amount of people interested in Thrift that fall in the > religiously-anti-Java camp (I am not one of them, I like Java, but I accept > that for better or worse a lot of systems-y people dislike it). Not all Linux > distributions have consistent Python/Java interpreters setup as part of > vanilla installs (notably, the images we were using at Facebook did not > include a Java runtime, as we generally had no need for it). And if you don't > have root, dealing with things like site-packages and paths is a big > headache. So, using those languages would have meant putting a big hurdle in > front of many users considering trying out Thrift. > > By contrast, lex/yacc are *completely* standard. You'll be hard-pressed to > find a *NIX distro anywhere on Earth that doesn't have working versions out > of the box, they've been around forever and their interfaces are super > stable. Like the autotools, even if they're not the prettiest things to work > with, everyone has them lying around, and they almost always just work. > Choosing C++ meant that for 99% of users, getting the compiler up and running > (step one in evaluating Thrift) was as simple as (1) download (2) configure > (3) make. >
Just one small comment. It seems that most on this list don't really care about Windows compatibility. (Not a criticism. That's just the picture that I get.) The argument can be made that if you want to use Thrift on Windows, you just install Cygwin and have at it. But many people can't do that for various reasons, and lex and yacc are not available, nor are the autotools. I have managed to wrestle the entire C++ runtime library into a shape where it can be used in Windows without requiring any GNU tools installed. (Of course, I had to use more boost libraries to make that happen. :-) But I couldn't do anything about the Thrift compiler. For us, and others who develop on both Windows and *nix platforms, we can sidestep the compiler issue by generating all the code on the *nix system. But it seems to me that this is a rather large barrier to adoption in the Windows world. For us, the Thrift compiler performance is absolutely not an issue, and I don't think it would become one if the compiler were written in Java. As long as it Just Worked and only required us to install a standard Java distro, I'd be happy. So I'm +1 on a Java version of the compiler. - Rush
smime.p7s
Description: S/MIME cryptographic signature
