Better module search on the Puppet Forge
Here at Puppet, our goal has always been to make the Puppet Forge your first destination when looking for modules to help you manage your infrastructure. We’d much rather you adopt existing modules than write your own from scratch — it's a lot more efficient, and most modules on the Forge have been extensively battle-tested by other Puppet users.
If you are like most visitors to the Forge, the search box is often the first place you go. Because of the active Puppet community, the amount of content available on the Forge has continued to grow (now over 4,400 modules). On the other hand, the quality of search results has, until now, not kept pace with the quality (and quantity) of the modules themselves.
To help you find what you’re looking for faster, we have recently made a number of changes to the Forge's search algorithm that will improve your results.
First and foremost, we have made a number of changes to how the Forge parses and matches your search query against the available modules:
- Searching for exact module names, or combined author and module name (e.g. "puppetlabs/apache") should now always show the desired module as the first result. Previously, there were certain module names where this was not the case.
- Module summaries (the "summary" value from metadata.json) are now included in the content that your search query will be matched against.
- The module's README content is now included in what your search query will be matched against. README matches are weighted significantly lower than other content matches, and the match frequency is normalized relative to the length of the README.
- Module tags and supported operating systems are still included in the content your search query will be matched against. The weighting of these matches has been slightly adjusted.
Supported and Approved modules
A composite of each module's "Quality Score" and "Community Rating" now has a small impact on their relative search ranking.
Lastly, module download counts now have a small impact on relative search rankings. The significance of download counts to search ranking is normalized respective to all the modules returned by your search query. Additionally, the disparity between the highest and lowest download counts is mitigated by assigning each module a relative decile ranking (1-10) and using that value to calculate an appropriate search ranking bonus.
Taken together, we hope these changes (which were deployed in mid-August) have resulted in a significantly improved search experience for all Forge users. Please let us know if you have any feedback on module search or any other features of the Forge!
Jesse Scott is a software engineer at Puppet.
*Haven't tried Puppet Enterprise? Download the free Learning VM for a hands-on introduction to Puppet concepts and workflows.