I'm neck-deep in a time-sensitive project at the moment, but have created THRIFT-874 for myself when time frees up.

On 8/27/2010 10:13 AM, David Reiss wrote:
The compiler builds fine for me on MinGW + MSYS on Windows.
If you could write up some step-by-step instructions, that would be great.
We've had *lots* of people complaining that they can't figure out how to
build it.

When I get some time, and if it would
help, I could build a .MSI that has thrift.exe and some .dlls.
That would be awesome.

--David

On 08/27/2010 09:24 AM, Michael Lum wrote:
The compiler builds fine for me on MinGW + MSYS on Windows.  Autotools,
lex, and yacc are only needed to build Thrift from source, not to
generate code from Thrift IDLs.  When I get some time, and if it would
help, I could build a .MSI that has thrift.exe and some .dlls.  Windows
users could then generate Thrift code without the need for Cygwin,
MinGW, or anything.

This is not an anti-Java position (we use Java extensively here), I'm
just saying that so far all the reasons given so far for switching the
compiler to Java have been build and packaging related, not with the C++
language itself.

On 8/27/2010 7:39 AM, Rush Manbert wrote:

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

Reply via email to