I'm forking this part of the e-mail thread with a new subject line, as this has 
gone in the direction of a specific technical discussion.

On this topic, here are my opinions as a Thrift user:
- Ease-of-use is absolutely critical
 -- Being required to install/maintain PHP/Python/Ruby/etc. extensions is very 
annoying and a huge barrier to entry, I would much rather just have source that 
I can use directly
 -- When evaluating painkillers (like RPC systems), I first evaluate the option 
that's easiest for me to evaluate, and if it effectively makes my pain go away, 
I stick with it and move on with my real work
 -- Being able to easily understand generated code in my language of choice is 
very nice, I like learning/understanding how things work in domains that I 
understand
- I want good enough performance, sometimes I may need really high performance
 -- Having extensions available to enable this is great

My thoughts as a Thrift developer/community-member:
- Offering extensions for greater performance generally makes a lot of sense
 -- Sharing core code across these extensions is clearly a good thing
- Extension frameworks are often quite complex to get right
 -- We'll likely need to find N people with expertise in language-specific 
extension-writing to develop and maintain them
 -- My sense is that these people are harder to find than experts in the 
languages themselves
 -- There may be just as much tricky code required to effectively generate/wrap 
a common C library for each target language (I think this is what Bryan is 
getting at)
- Seems like extensions would probably only address the binary protocol, we 
don't want to force all custom protocol implementation into C

Balancing these two, I'm supportive of work on C/extension code if there's 
enough community to support it (which I think will be the hard part... as fewer 
people truly love programming in C these days *and* deeply understand other 
language extension models).

Either way, I feel quite strongly that we should always continue offering pure 
language libraries. I'd be really turned off as a user if I had to install 
language extensions just to try Thrift out. I'm quite confident that imposing 
this as a requirement would nontrivially stifle growth of the Thrift userbase, 
which would in turn stifle advancement of the project as a whole (Thrift users 
are programmers, most of our community members start out as users).

Cheers,
mcslee


-----Original Message-----
From: Mayan Moudgill [mailto:ma...@bestweb.net] 
Sent: Tuesday, August 17, 2010 2:43 AM
To: thrift-dev@incubator.apache.org
Subject: Re: sharing knowledge means sharing control



Bryan Duxbury wrote:
> I feel that this suggestion is a bit of a red herring. Sure, you could
> implement a tiny fraction of the Thrift "library" in C - maybe just the
> protocol? - but then you'd still be stuck needing the full code generator
> and a set of related language-specific tools. I'm thinking that even if you
> coded up the core of the protocol in C, you'd probably have to put a
> language-specific C-extension wrapper on it in order for it to be usable in
> the way that all the languages operate.
> 
> Bottom line, I don't think there's near enough benefit to putting the "core"
> in a common C blob. I could be convinced otherwise if someone has some
> strong ideas.
> 

Why is (was) there a C-version of the Python run-time? Performance maybe?

Part of the problem with having N languages is that any fast, optimized, 
but hard-to-write implementations/features will either have to be 
written (and debugged!) N times or will end up not being available to 
everyone. This, among other things, lowers the benefits (and therefore 
attractiveness) of writing any high-performance code. Which may be why 
the Thrift run-timess (even the C++ runtime) are fat & slow compared to 
what it could be.

Reply via email to