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.