On Mon, Aug 4, 2014 at 12:09 PM, Reid Vandewiele <r...@puppetlabs.com>
wrote:
>
>
> I am concerned that adding additional operators to the language does in
> fact take something away. As such, I do think that proposals to do so need
> to require a very strong argument in order to proceed.
>
> When I go out and introduce new teams of sysadmins to Puppet, the fact *in
> vacuo* that we have our own domain-specific language is anything but a
> strength. One of the top initial objections to Puppet today is that large
> teams will not be able, or will not want, to learn a new, complex language.
> What sets us apart from competitors like Chef, from scripting alternatives,
> is the simplicity and apparent intuitive design of our DSL. The fact that
> it is more akin to a configuration file than to a procedural program. That
> a sysadmin can look at a Puppet manifest and usually figure out the basics
> of what it does and even modify it without needing a training course or a
> pocket reference. Every operator that is added to the language has the
> potential to take away from that, and so absolutely needs to be approached
> as a design decision focused on the end-user experience.
>
> We need the ability to better transform structured data into resources.
> From an end-user experience perspective (setting aside implementation
> considerations) I much prefer the idea of using a hash directly over
> introducing a new operator. The difference would be the two examples shown
> below.
>
> Proposed operator (proposed):
> $x.each |$title, $attributes| { file { $title: * => $attributes } }
>
> Formal hash treatment (my preferred):
> $x.each |$title, $attributes| { file { $title: $attributes } }
>
> If we introduce a new operator it should be a user-experience design
> decision, not an implementation decision. If the preferred design cannot be
> implemented due to technical constraints that's something we have to deal
> with. But I hope that we're arriving at decisions to introduce new
> operators as part of an intentional end-user experience focused design.
>
> The fact that we have a DSL is not a strength. The fact that it is simple
> and intuitive to practitioners in this space, is.
>

I've been unable to articulate my concerns with the current language
discussions but I think Reid has done a good enough job that I feel
comfortable contributing.  It seems like all the talk is now about the
"Puppet language" instead of the "DSL" and this is, in my opinion, a
mistake.

We seem to be trying to build a general purpose language that is powerful
enough to write other things in, such as functions, types and providers,
etc.  We already have languages for those and I don't think that we can
build a better language internally than these external languages.

As a member of the module team I honestly haven't understood a large part
of the proposed enhancements over the last year, or really understood the
need for them.  There seems to be a bit of a disconnect between people who
write modules and people who like languages in a lot of the conversations.

Some enhancements, like improvements to defaults, make sense.  Things like
putting resources into $a and then being able to do things with them just
make the DSL much more difficult to teach, reason able, and expose to
systems administrators.  I too prefer the hash to a * operator, it's
follows the patterns of the DSL that we've been using for years and (to my
non-developer brain) makes more sense.

I've tried to raise these concerns in the past but I've done a bad job of
talking to platform people about it.  I think that the separation between
people building the language and people writing the modules has the
potential to do us a lot of harm.  At the very least all these language
proposals and suggestions and syntax changes should come with "real
production code" examples that show how you solve it today and how this
proposed change leads to a more elegant situation for actual puppet users
because right now it seems to be happening in isolation from the people
using it to build things.

-- 
Ashley Penney
ashley.pen...@puppetlabs.com
Module Engineer

*Join us at PuppetConf 2014**, September 23-24 in San Francisco
- http://puppetconf.com <http://puppetconf.com/>*

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to puppet-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-dev/CAC9eg%2BkFefgHzYJmYU5k9%3DF-EhMj3h3y9O9qNGDQigKpzx0ewA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to