On Tuesday, September 22, 2015 at 9:17:22 AM UTC-7, Luke Kanies wrote:
>
> On Sep 21, 2015, at 7:52 PM, Corey Osman <co...@logicminds.biz 
> <javascript:>> wrote: 
> > 
> > Hi, 
> > 
> > I remember when the puppet 2.7 release came out with support for faces 
> was all the rage.  The faces API seemed pretty slick as its a pluggable 
> system that allows the plugin to implement options as well.  I am curious 
> if there is any design notes or blog that someone followed in order to 
> create this system as I am looking to implement a similar pluggable feature 
> for a project I have.   
>

As an end-user of Faces I don't have insight into how they work or the 
design process, but I can share a little bit of what makes them awesome and 
what doesn't work at all. I'm a very light user and I'm sure I don't use 
the full suite of functionality but I've found writing and using them to be 
easy and enjoyable (except for the lack of documentation).

What I know about faces comes from tinkering with them on and off, and 
writing one or two over the last couple of years (only one of which I can 
find/remember now). I've tinkered with the `puppet node` face, the `puppet 
node_aws`, `puppet node_gce` faces, and 
written https://forge.puppetlabs.com/tse/nimbus.

What I like as an end-user:

   - CLI and API equivalence. This is AWESOME. This is the #1 reason I'm a 
   fan of Faces.
   - Relatively easy API for setting up my UI - subcommands and arguments.
   - Direct access to Puppet. Especially other faces! But settings and 
   utility methods are a boon as well.

What I don't like / Doesn't work:

   - Versions. I don't use them. Nobody uses them. I'm also pretty sure 
   they don't work. They don't contribute to the usability or draw of Faces.
   - I want to be able to specify more than one subcommand. E.g. I want to 
   write `puppet nimbus modules install`, but since that's the "nimbus" face 
   and two sub-commands it doesn't work well. I have to make do with `puppet 
   nimbus install_modules`.
   - Many faces are Terminus faces (`puppet certificate`, `puppet ca`, 
   etc). Basically, a kind of generalized wrapper for interacting with 
   terminii. Those seem overgeneralized and often don't hold up well. Faces 
   with more intentional and specific design seem to work much better, 
   generally.

People with more experience around the full suite of Face functionality may 
be able to infer by omission other things that either don't excite people 
or need documentation to expose.

~Reid 

-- 
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/11fba4ec-eb3b-42c3-908f-eb38a961249e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to