My personal number one measure of module quality is documentation, hands down.  
Nothing else comes close.

That means a README that provides a good overview of the module’s structure, 
scope, requirements, and capabilities, and a *thorough* REFERENCE(.md) 
document.  As a module quality consideration, I don’t really care whether the 
reference documentation is automatically generated.  I do care that it covers 
every public member of the module, accurately and precisely explaining the 
significance, allowed values, default values, and relationships among them.  
Strings-derived documentation can be pretty poor, so I don’t attribute much 
weight to whether docs were generated that way.  If I have to look at manifests 
or other technical artifacts to determine whether the module supports my needs 
or how to prod it into doing so then that’s a fail in my book.

Good documentary comments are high on my list for code quality, too.  
Consistent code style comes in here as well, but not so much most specific 
style choices.  A good test suite (that passes) also makes the cut, and in it, 
I would prefer to see both unit tests and functional tests.  I don’t 
particularly object to the voxpupuli puppet-lint checks, but I consider those a 
weak proxy for a subjective analysis of the module code.

I appreciate that most of that is difficult for a computer to evaluate.


John Bollinger


From: voxpup...@groups.io <voxpup...@groups.io> On Behalf Of David Hollinger 
via groups.io
Sent: Friday, October 29, 2021 9:44 AM
To: voxpup...@groups.io
Cc: puppet-users@googlegroups.com
Subject: Re: [voxpupuli] Do you have opinions on what module quality means?

Caution: External Sender. Do not open unless you know the content is safe.

I think we are looking at a couple different discussions here:

  *   Module Quality
  *   Code Quality
I think the former is always going to be difficult to track in any meaningful 
way, largely because expectations for what a module should or shouldn't do, or 
even the how it does something, is going to vary from person to person; org to 
org.

On Module quality, I would say that the Forge should just take a page from the 
playbook of things like RubyGems, NPMJS, Pypi, etc and just track some 
combination of:

  *   Homepage
  *   Downloads
  *   Likes/Stars/Forks on GitHub/Gitlab/BitBucket/etc
  *   Open Issues
  *   List of Files that are installed
  *   List of manual downloads
  *   Release history
  *   Additional useful links
On Code Quality, I think the following checks should be done:

  *   Arrow Alignment
  *   Indentation
  *   Trailing comma (either have or don't have it - standardization is good)
  *   All the checks included in 
https://github.com/voxpupuli/voxpupuli-puppet-lint-plugins/blob/master/voxpupuli-puppet-lint-plugins.gemspec<https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fvoxpupuli%2Fvoxpupuli-puppet-lint-plugins%2Fblob%2Fmaster%2Fvoxpupuli-puppet-lint-plugins.gemspec&data=04%7C01%7CJohn.Bollinger%40StJude.org%7Ccf737d31ff9549b6860a08d99aea80b7%7C22340fa892264871b677d3b3e377af72%7C0%7C0%7C637711154851057833%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=I%2FSmlN1tMXANeU7XowSyYW%2F9Uq5u11Ej7yoD58NwMtA%3D&reserved=0>
For tests use badges for the following:

  *   Unit tests with rspec-puppet
  *   Acceptance/Integration tests with Beaker/Litmus/test-kitchen
  *   A README
  *   A generated REFERENCE.md from puppet-strings
  *   Changelog that can be embedded into the Forge page
Things that I find too subjective to use a markers for quality:

  *   Use only vendor/OS provided packages:
While I can see why some would want this, I personally have not worked at a 
place that could utilize OS provided packages for a lot of non-OS level 
software. Things like Nginx, Ruby, Go, Apache, PHP, etc tend to be too old even 
in Ubuntu to use for running applications and in most cases the OS 
packages/repos have turned into just what is needed to support running 
applications that contain or install their own requirements - either via 
containerization or vendor/project provided repositories.
  *   Don't include binaries:
This one is, for me, a hard no. With Modules that include Bolt tasks, you limit 
what kinds of tasks can be included or what languages those tasks can be 
written in which could be limiting as there are a lot in the Puppet community 
not interested in learning Ruby, but want their tasks to do work that can't 
necessarily be done by bash or powershell scripts. So allowing those users to 
built tasks in Go, Rust, etc is a no brainer, IMO.

Thoughts?
---
David Hollinger III
Software Engineer
WPEngine

Sent with 
ProtonMail<https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fprotonmail.com%2F&data=04%7C01%7CJohn.Bollinger%40StJude.org%7Ccf737d31ff9549b6860a08d99aea80b7%7C22340fa892264871b677d3b3e377af72%7C0%7C0%7C637711154851057833%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=KWlq3y32NYPtUbV3ki7Xnva7TeIzylTqUMu%2BfCpsXE4%3D&reserved=0>
 Secure Email.

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Thursday, October 28th, 2021 at 3:33 PM, Ben Ford 
<ben.f...@puppet.com<mailto:ben.f...@puppet.com>> wrote:

Trick question, I know. Having strong opinions is part of why we do the work we 
do. So I'm hoping that many of you will help us out on this project.

Some time ago, the Forge turned off the quality scores detail display because 
many of the warnings were confusing and frightening to less experienced Puppet 
users. And we didn't really have a good specification of what made quality code 
anyway. That's what I hope to improve on today, and we'd like to turn it back 
on with a better picture of each module's quality.

Vox Pupuli has a meta-gem that defines a list of the puppet-lint 
checks<https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fvoxpupuli%2Fvoxpupuli-puppet-lint-plugins%2Fblob%2Fmaster%2Fvoxpupuli-puppet-lint-plugins.gemspec&data=04%7C01%7CJohn.Bollinger%40StJude.org%7Ccf737d31ff9549b6860a08d99aea80b7%7C22340fa892264871b677d3b3e377af72%7C0%7C0%7C637711154851067794%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=Y%2FlqbI0AptAG66MGn1MITMXJMJzISp7aYiTyBoKohXA%3D&reserved=0>
 that they use for their definition of a quality Puppet module. I'd like the 
Forge and Vox Pupuli to be in alignment here, and this seems like the best 
place to start.

Do you have a favorite list of puppet-lint checks you use? Do you think they'd 
be useful as an ecosystem standard? Can you support that opinion with a cogent 
argument for it? Suggest it as a pull request and let's have that conversation. 
Together as a community we can all come up with a solid starting point as a 
standard definition of module quality.

https://github.com/voxpupuli/voxpupuli-puppet-lint-plugins/blob/master/voxpupuli-puppet-lint-plugins.gemspec<https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fvoxpupuli%2Fvoxpupuli-puppet-lint-plugins%2Fblob%2Fmaster%2Fvoxpupuli-puppet-lint-plugins.gemspec&data=04%7C01%7CJohn.Bollinger%40StJude.org%7Ccf737d31ff9549b6860a08d99aea80b7%7C22340fa892264871b677d3b3e377af72%7C0%7C0%7C637711154851067794%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=Y%2FlqbI0AptAG66MGn1MITMXJMJzISp7aYiTyBoKohXA%3D&reserved=0>

Thank you all for your help!

--
Ben Ford
@binford2k
Ecosystem Product Manager

_._,_._,_
________________________________
Groups.io Links:

You receive all messages sent to this group.

View/Reply Online 
(#398)<https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.io%2Fg%2Fvoxpupuli%2Fmessage%2F398&data=04%7C01%7CJohn.Bollinger%40StJude.org%7Ccf737d31ff9549b6860a08d99aea80b7%7C22340fa892264871b677d3b3e377af72%7C0%7C0%7C637711154851077748%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=BJrXq4gKiTO1Byic8PXp3fIN3793BBnqAXUuMfu8eIE%3D&reserved=0>
 | Reply To 
Group<mailto:voxpup...@groups.io?subject=Re:%20Re%3A%20%5Bvoxpupuli%5D%20Do%20you%20have%20opinions%20on%20what%20module%20quality%20means%3F>
 | Reply To 
Sender<mailto:david.hollin...@moduletux.com?subject=Private:%20Re:%20Re%3A%20%5Bvoxpupuli%5D%20Do%20you%20have%20opinions%20on%20what%20module%20quality%20means%3F>
 | Mute This 
Topic<https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.io%2Fmt%2F86662086%2F861318&data=04%7C01%7CJohn.Bollinger%40StJude.org%7Ccf737d31ff9549b6860a08d99aea80b7%7C22340fa892264871b677d3b3e377af72%7C0%7C0%7C637711154851077748%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=tk4ERvobnT8lOlvRjVT7Oh91Ypt7EXz5aUVo2wDp0Ss%3D&reserved=0>
 | New 
Topic<https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.io%2Fg%2Fvoxpupuli%2Fpost&data=04%7C01%7CJohn.Bollinger%40StJude.org%7Ccf737d31ff9549b6860a08d99aea80b7%7C22340fa892264871b677d3b3e377af72%7C0%7C0%7C637711154851087707%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=4T51dbr9J8SZrwBp4jiKgKAU6qWR3Tq%2Feal%2B6%2BtKok4%3D&reserved=0>
Your 
Subscription<https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.io%2Fg%2Fvoxpupuli%2Feditsub%2F861318&data=04%7C01%7CJohn.Bollinger%40StJude.org%7Ccf737d31ff9549b6860a08d99aea80b7%7C22340fa892264871b677d3b3e377af72%7C0%7C0%7C637711154851087707%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=HeVnsqRDfRN5pq%2FN79G8Jflo2uNsqhLv7723ZL9f738%3D&reserved=0>
 | Contact Group Owner<mailto:voxpupuli+ow...@groups.io> | 
Unsubscribe<https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.io%2Fg%2Fvoxpupuli%2Fleave%2F1933025%2F861318%2F909231714%2Fxyzzy&data=04%7C01%7CJohn.Bollinger%40StJude.org%7Ccf737d31ff9549b6860a08d99aea80b7%7C22340fa892264871b677d3b3e377af72%7C0%7C0%7C637711154851087707%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=C0lzbzF4kUYpvkU67lSJCjdmaXgkSIF4NPu4Lbn1nD0%3D&reserved=0>
 [john.bollin...@stjude.org]
_._,_._,_

________________________________

Email Disclaimer: www.stjude.org/emaildisclaimer
Consultation Disclaimer: www.stjude.org/consultationdisclaimer

-- 
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/CH2PR04MB695027CDB12E31373A6F2680E0879%40CH2PR04MB6950.namprd04.prod.outlook.com.

Reply via email to