On Apr 11, 2016, at 9:17 AM, Alex Harvey <alexharv...@gmail.com> wrote:

> An example might be abstract data types.  I know that the data types had 
> issues, oddities and bugs around the implementation of hashes and arrays.  
> And a lot of that seems to have been fixed, and that's great, but we somehow 
> ended up with a long list of strict, abstract data types.  And there's 
> something about these new data types that just doesn't "feel" - to me, anyway 
> - like Puppet any more.
> 
> And here's the thing: Puppet was already perceived to be a difficult 
> language, despite the fact that it was intended to be an easy one.  So, I 
> don't get how it's in Puppet's interests to inflict abstract data types on 
> people who may not even have a computer science degree.  Some have come from 
> shell, perl backgrounds, some may not have programming experience at all.


This thread kind of tapered off, and there's stuff that I'm pretty sure I 
cannot address in a satisfactory way, but I did want to tuck into this point a 
bit.  There's an interesting balance to strike because — as you note — the 
puppet language was intended to be simple. "It ought to look and feel more like 
a nagios config file than a scripting language", I recall Luke saying, early 
on. But as time has passed, users have demanded it fulfill more and more 
complex tasks, like setting up OpenStack, one of the most hellaciously complex 
distributed systems ever invented by humans.  (I kid, I kid, just a bit) And 
using a tool whose sophistication is mismatched to the task leads to hacky 
awfulness; you're going to do what you must, but it won't be pretty. The type 
system and iteration syntax are a response to that situation, in the same way 
that parameterized classes were a response to the dearth of reusable Puppet 
code before 2.6; similarly I hope that in time, as style standards, best 
practice, and the syntax itself evolve, the new stuff will come to feel as 
Puppet-y as class parameters do today. 

Aside from the few syntactic changes that the type system imposes on existing 
code, like forcing quoting of numeric file modes, all of the new stuff is 
completely opt-in. So I'd (gently) dispute the assertion that they're inflicted 
on everyone as an early barrier to using puppet — a new user could go a long 
way downloading forge modules, composing configuration with hiera and/or 
roles+profiles, writing their own modules and classes, and generally being 
successful with the product, without needing to understand Variants, Enums, and 
the rest. Conversely, the existence of those things makes it easier for module 
authors to represent concrete API promises, so previously impossible things 
become easy, like a GUI that accurately represents a Boolean class parameter as 
a true/false toggle rather than a text field.

> I believe that in order to "encourage" open source Puppet users to buy Puppet 
> Enterprise, Puppet has deliberately made Puppet difficult.  And I'm sure the 
> problem is somewhat recognised internally, and Puppet 4 did seem to go some 
> way to make Puppet easier.

This is plainly untrue. Even setting aside Hanlon's Razor and assuming the most 
Machiavellian profit motive, it would be folly to adopt such a strategy. Most 
of our customers come to Puppet Enterprise after some experience with open 
source, so relying on commercial differentiation that turns them away at the 
door would be suicidal. Now, we *are* painfully aware that the overall 
experience of starting out with Puppet is harder, not only than other competing 
solutions, but than Puppet itself used to be. Any spiky edges that cause users 
frustration between "hey I think I need some config management in my life" and 
"look there's Puppet doing just what I needed" need to get ground down into a 
smooth frictionless polish, and that goes equally for people who encounter 
Puppet via open-source or PE. 

All this is to say, it's highly likely that the current state of the language 
is not going to be its final state. Some things are certain to be wrong and 
need to iterate to improve. Puppet's reach is so much broader than it was five 
years ago, the ripple effects of changes that improve the experience for one 
set of users might actually make things worse for another set, but we just 
can't know until we get out in the world and see what happens. It's a tough 
landscape to navigate and I value guidance like this immensely.

Eric Sorenson - eric.soren...@puppet.com - freenode #puppet: eric0
puppet platform // coffee // techno // bicycles

-- 
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/5FA8BE6D-E1A6-400C-BEA3-9B6907CF65AC%40puppet.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to