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

Reply via email to