I fully agree with this approach.
- create repositories for individual projects around extending ManageIQ
The repositories wouldn’t have to be limited to being official ManageIQ repositories.
I believe it would be better if they weren’t limited to the official repositories, actually. Using user namespaced repositories on GitHub (or possibly anywhere else) would probably be pretty powerful.
Ruby Gems are done in this manner (although most are on GitHub just naturally).
- create HTML page that functions as an interface to the extension repositories
- allows people to find and navigate extension projects
Makes sense. The extensions have to be found somehow.
I’m thinking something similar to:
http://directory.middlemanapp.com/
- Browser-based, client-side search via JS
- Categories / tags (there shouldn’t be too many)
- Very basic extension data on the page; extended info would be in a subpage (either hosted on GitHub or integrated on ManageIQ.org)
- gives directions for how to create your own project
This would be a link to a developer document. Content would be required.
Create approval process for repos from community members and find a way to wrap them under the ManageIQ account
This would be a pull request to a directory YAML file. As long as the extension follows guidelines, the pull request for it would be accepted.
- There can be a category that denotes some type of approval or endorsement from the community, and those repos are forked/cloned/whatever under the ManageIQ account
- There can be a “free-for-all” category where repos stay under
individuals’ accounts, but we push links to them into the marketplace
Perhaps we want a top-level category as “verified” and “unverified” or something to that effect. (Not these particular words, but the concept.) Other words might be “reviewed” & “unreviewed”; “approved” & “upcoming”; etc.
…However, I don’t think we would have many extensions to begin with, so I think it makes sense to review each before accepting anyway.
It might make sense to just highlight a certain few instead, like “featured”.
Suggested implementation
Centralized YAML file in the manageiq.org
repository; it contains all the information for the extensions. New ones would be added via pull requests. The file would be in manageiq.org/data/extensions.yml
most likely. The documentation would mention this and provide a link to edit the file and make a pull request on GitHub.
The ManageIQ website repo would understand this file and present the page, once we figure out the detail of the data (and I write a bit of code to handle it).
Moving forward (requirements)
To rapidly develop this solution, the following is needed:
- Several example extensions (minimum: 3; hopefully more)
- Data we’d like to present on the page for each extension; so far I’d suggest the following (and please provide more):
- Name
- Version
- Link to each version
- (versions and links could be automated if GitHub is assumed)
- Project link
- Summary
- Featured status
- License
- Link to source code
- Starter set of categories
- Common installation instructions (on another page)
- “Developing extensions” documentation
If it is at all possible to implement a version by the end of this month, this information must be decided upon by the end of this week. (It could be modified throughout the following weeks, but it needs to be pretty solid before next week.)
Even still, the end of the month is a pretty aggressive timeline.