On Thursday, September 25, 2014 3:33:00 PM UTC-5, Andy Parker wrote:
 

> The language will remain in ruby for a while yet (the puppet-server uses 
> JRuby to run the puppet ruby code), and even after the interpreter gets 
> reimplemented in a faster language, ruby will be available for extensions. 
> It would simply be too much of a change to drop ruby and drop all of the 
> custom code and extensions that everyone has worked so hard on.
>
>

I feel compelled to point out that if the "faster language" happens to be 
C++, then you will *need* a plug-in interface in some different language 
(presumably Ruby, but straight C would be more typical).  C++ APIs are 
sensitive to compiler and compile options used, and they provide 
essentially no compile-time encapsulation of API classes' private members, 
so it would not be wise to suppose that you will ever be able to directly 
support unwrapped, third-party, C++ plugins.  Especially with the current 
fast pace of Puppet development.

 

> What *might* be happening very soon is dropping rack and webrick support 
> and moving entirely to the puppet-server. It provides a much simpler setup, 
> better performance, and more controlled environment for us to target.
>
> "Puppet apply" will be sticking around. The exact way in which it will 
> work isn't completely clear yet. There are several possibilities from 
> requiring the jvm on all nodes that run puppet apply to changing apply to 
> use a "compile server" to actually run manifests or possibly reimplementing 
> the interpreter in a non-jvm language and using JNI to make it available on 
> the puppet-server. My currently leaning is to implement the language in a 
> jvm language and requiring that a masterless setup has the jvm on the node.
>


Although I have no problem with the JVM in general, I am not at all keen to 
have JVM installation as a pre-requisite for bootstrapping Puppet on 
nodes.  I am supposing that the plan is to not require that for the *agent*, 
but I don't think it's wise for "puppet apply", either.  Moreover, there 
are machines and organizations for which any client-side dependency on the 
JVM would be a complete show-stopper, and that would be a big concern for 
me if I were making this decision.

Furthermore, it's unrealistic to suppose that users of masterless Puppet 
would accept a solution involving an external "compile server" as a *bona 
fide* substitute for the current implementation of "puppet apply".  That's 
barely different from running the agent.  The whole point of "puppet apply" 
is that you don't rely on any other machine to apply your configuration.

You could try to maintain separate, parallel catalog builder 
implementations, but I promise you that that would get old (and expensive) 
very quickly.

So what catalog builder alternatives are left?  Let's see... you need a 
light(ish)-weight language and runtime environment with few detractors, yet 
you also want to be able to run in the JVM.  For community acceptance, you 
need to support plugins implemented in Ruby.  How about using 
...*drumroll*... Ruby?  I hear PL has one or two Ruby programmers already 
;-)  Is JRuby so different from (C)Ruby as to preclude writing code that 
works on both?


John

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to puppet-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/68a50a9e-e45f-46d7-8925-1953354d4ee3%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to