Thanks for writing this up, Diwaker. Overall I thought your assessment was fair and on point, and some good follow-up discussion here.
On the portability front, I agree with David that the windows binaries we provide go a long way here. As long as you're happy working with stable releases, using a pre-built compiler shouldn't mean you need to check in generated code (if you were using trunk compiler/libraries, then you would). Ironically, using C++ for the compiler was originally a decision motivated entirely by portability, as at the time (2006) it was not standard for many typical distributions to have Java pre-installed, there was not really a "standard" Java lexing/parsing library, and ditto for Python. But pretty much everyone has lex/yacc, and boost was intentionally not a dependency of the original compiler. >> as for criticizms of Thrift I'd rather hold off on those until I have enough >> spare time to actually contribute solutions. Non-malicious criticisms are always welcome! You don't have to be able or willing to provide solutions yourself to raise issues. Others may be unaware of the issues and able to sort them out, or at the very least you will probably get an explanation of why something is the way it is. Cheers, mcslee -----Original Message----- From: Bjørn Borud [mailto:bbo...@gmail.com] Sent: Thursday, May 05, 2011 10:32 AM To: Diwaker Gupta Cc: user@thrift.apache.org Subject: Re: Thrift vs. Protocol Buffers On Thu, May 5, 2011 at 7:10 PM, Diwaker Gupta <diwa...@maginatics.com> wrote: > > Well this isn't really a point of comparison since the protobuf > compiler is also in C++ and equally "less portable". yes and no. yes protoc is written in C++. no, it is easier to build on more platforms and it is way easier to use in cross platform projects because we never had to keep lots of different versions around. maintaining several versions of the Thrift compiler for a Java project that was used on multiple platforms and where the source needed to build on a "clean" machine with just Java and Maven installed was a pain in the butt and too annoying for me to re-live all the time we wasted on getting it all to play nice. now, it should be pointed out that the reason we needed to keep several versions around was that we were using Thrift from a relatively early point in time and there were some changes that introduced incompatibilities. this is _okay_ for a young project and it is to be _expected_. in any case, I still maintain that it would have made more sense to implement the Thrift compiler in a portable language. probably Python, but personally I would have preferred Java. > Further, while I > agree that it is important for the libraries to be cross-platform, I > imagine most users being OK with the compiler available on one or two > platforms. well, no. the whole point of using Thrift is to have something that works on all platforms and with all language environments. having a compiler on just a few platforms leads to people checking in generated code, which is generally not a brilliant idea. > Finally, I know for a fact that the Thrift compiler can be > compiled on Mac and Windows (with some effort) so there's proof of > existence. Things can certainly be improved though. I didn't claim that it couldn't be compiled on Mac and Windows. -Bjørn