12

Pulling the Community Together to Improve the Quality of PowerShell Modules

In a discussion that started on Twitter a while back with June Blender about the quality of the Modules being posted to the PowerShell Gallery I had an Idea on a way that we could help improve this from the community – using the tools that we have available to us and more importantly the expertise of the rest of the community to help shape and guide the direction for modules.

The Idea starts off with a simple GitHub Organisation, in this case this one – PowerShellModules – in which we set up a number of teams in that organisation. Some of the teams that I have had in mind include but are not limited to, Documentation, Unit testing, Practise guidance and then module maintainers.

This means that there will be a much more open way of directing the development of Modules for the community but still having the ability to allow modules to be developed in a way that allows others to add to them instead of branching out and creating a second module. This also will mean that there is a stronger focus on modules being updated as the overhead isn’t on a single maintainer but can be given to a number of multiple maintainers at any given time.

 

My thoughts around this would start with me porting my current ‘in progress’ modules to the organisation and building out the teams as mentioned above with a suggestions/RFC like repository that would allow us to drive this for the better of the community.

The end goal from my perspective would be to have 1 community recommended Module for a technology (examples being GitHub, Trello, VSTS, Slack etc) that has been widely community developed that covers as much of the functionality as it can without the need for a separate module.

We have a great community of people and I think that this is the right point in time to start the drive to improve the quality of what we all output to the community in a targeted and effort efficient method.

If your interested in getting involved please comment on this post with your GitHub User Name and I’ll get you added to the Organisation in due time but please keep an eye out for the Email from GitHub requesting you to join the Organisation especially in the Junk Folder Winking smile

12 Comments

  1. Hi there!

    Interesting idea, I’d be up for helping support it.

    You’ll probably run into some issues, issues that most other language / package communities run into or would run into if they tried this:

    Who decides which is the ‘endorsed’ module? There are many cases where two modules cover the same technology, but have strengths in different areas. Merging these projects is occasionally impossible, for political or technical reasons.
    Who maintains creative control of the module? What if their interests diverge with the communities (regardless of whether either or any part is “correct”)?
    Will there be any confusion if a truly better community module exists outside of this effort?
    When would an author add their project to this organization? What if two similar projects start at a similar time, or if one joins early, stalls, and another picks up steam and wants in?
    Would you treat these as a fork of the original, to avoid politics, among other reasons?
    Do other communities like this exist for other languages / package communities? I think ours might be small enough to actually have this work, to an extent, but it might be worth looking for lessons from other efforts of longer-established languages/communities.

    Good luck!

    • This kind of stems off how the Chef Community seems to work and I think that we as a community have the ability to get this working from where we are.

      I would like to see this grow in a way that can avoid those types of issues in future by defining processes that mitigate the possible pain points you discussed.

      Items like having a RFC Process for New Modules for new Technologies (or just not commonly worked with technologies) to make the end to end development process smoother to those new to the world of development I.e most IT Admin’s.

      I’m planning to get a community call set up to help really drive the direction of this longer term and I hope that you’ll be a big part of that vision :-)

      • This approach could easily turn into a walled garden. While it makes sense for people to contribute to Chef via the Chef organization, Powershell isn’t a product like Chef.

        What if I publish a module outside of your organization because I belong to another organization? Am I a community “outsider”? Do I not get a “badge of approval”?

        I’m not sure having a gatekeeper organization is the best approach to improve the quality of modules available. It is a challenging problem that more established communities are still struggling to solve. Adding bureaucracy rarely solves community organizational problems. The community simply needs better defined goals with good tools and training.

        The tools are just starting to get better for building good modules and people are starting to share their experiences with using those tools. Good modules that solve people’s problems will become popular and others will fade into the background.

        I’d like to see Microsoft be more prescriptive around module development and provide quality feedback for submissions to the PowerShellGallery.

        • Hi Chris,

          There’s the need in my opinion for there to be more collaboration on Modules to reduce the amount of them that have been worked on but then left to wither and die due to a number of reasons.
          Sometimes these reasons could be
          Developer is no longer interested in the technology they were developing against
          The Technology is no longer being widely used so less requirement to continue development
          There are a number of projects for the same technology and none of them are feature complete – leaving the end users (aka us) to pick parts from them all to be able to use
          The work has been difficult to find and therefore nobody really knows about it.

          My vision for this centres around the community and removing the boundaries for those that currently would like to provide benefit to the community by publishing their modules but perhaps are finding it difficult to get seen by the community. With this there will be a dual pronged approach to allow those authors to choose which path they choose to take with it.
          Path 1 – would be to become a member of the organisation and start building their modules as a part of the organisation – this then allows for them to call upon the collective to gain help when required much easier by making use of Github’s Builtin Organisation Teams and also gets the modules set up for
          Path 2 – To raise an issue for the CustomPowerShellModules repo to allow linking to externally developed projects which I think is what you were kind of getting at although there isn’t a “Badge of Approval” so to speak but more akin to the modules being “known” to the community.

          Regarding the point on the tools available to help the community develop better modules, I agree that they are starting to get better, however, they are still for many too big an additional learning curve to begin to get to grips with them properly and this can really put people off from contributing to the community which is something I would like to see the barrier become thinner if not disappear completely and that is the idea of this organisation.

          Also as a final point – this isn’t something that we will see come directly from Microsoft, Its never really been the case and it’s certainly not likely to be the case in future as a lot of the great information out there is mainly from Community Bloggers and MVP’s with there being a smaller fraction coming from Microsoft themselves.

          Personally I think that once this has been given chance to mature and get more people on-board then this will fill at least some of the gap of getting people involved with the development of the community for the community and it is in the community’s best interest to make the transition process as smooth as possible where we realistically can.

          I think that there is a lot of unknown talent out there and to have this in place alongside the PowerShell Gallery is what I foresee to be the best way forward especially as there are already 8,000 + repositories on Github for PowerShell projects.

          It will take some time and community effort but I think it can be a real success once in place.

Leave a Reply