1cb93a386Sopenharmony_ci# Tracking SPIRV-Tools work with GitHub projects 2cb93a386Sopenharmony_ci 3cb93a386Sopenharmony_ciWe are experimenting with using the [GitHub Project 4cb93a386Sopenharmony_cifeature](https://help.github.com/articles/tracking-the-progress-of-your-work-with-projects/) 5cb93a386Sopenharmony_cito track progress toward large goals. 6cb93a386Sopenharmony_ci 7cb93a386Sopenharmony_ciFor more on GitHub Projects in general, see: 8cb93a386Sopenharmony_ci* [Introductory blog post](https://github.com/blog/2256-a-whole-new-github-universe-announcing-new-tools-forums-and-features) 9cb93a386Sopenharmony_ci* [Introductory video](https://www.youtube.com/watch?v=C6MGKHkNtxU) 10cb93a386Sopenharmony_ci 11cb93a386Sopenharmony_ciThe current SPIRV-Tools project list can be found at 12cb93a386Sopenharmony_ci[https://github.com/KhronosGroup/SPIRV-Tools/projects](https://github.com/KhronosGroup/SPIRV-Tools/projects) 13cb93a386Sopenharmony_ci 14cb93a386Sopenharmony_ci## How we use a Project 15cb93a386Sopenharmony_ci 16cb93a386Sopenharmony_ciA GitHub Project is a set of work with an overall purpose, and 17cb93a386Sopenharmony_ciconsists of a collection of *Cards*. 18cb93a386Sopenharmony_ciEach card is either a *Note* or a regular GitHub *Issue.* 19cb93a386Sopenharmony_ciA Note can be converted to an Issue. 20cb93a386Sopenharmony_ci 21cb93a386Sopenharmony_ciIn our projects, a card represents work, i.e. a change that can 22cb93a386Sopenharmony_cibe applied to the repository. 23cb93a386Sopenharmony_ciThe work could be a feature, a bug to be fixed, documentation to be 24cb93a386Sopenharmony_ciupdated, etc. 25cb93a386Sopenharmony_ci 26cb93a386Sopenharmony_ciA project and its cards are used as a [Kanban 27cb93a386Sopenharmony_ciboard](https://en.wikipedia.org/wiki/Kanban_board), where cards progress 28cb93a386Sopenharmony_cithrough a workflow starting with ideas through to implementation and completion. 29cb93a386Sopenharmony_ci 30cb93a386Sopenharmony_ciIn our usage, a *project manager* is someone who organizes the work. 31cb93a386Sopenharmony_ciThey manage the creation and movement of cards 32cb93a386Sopenharmony_cithrough the project workflow: 33cb93a386Sopenharmony_ci* They create cards to capture ideas, or to decompose large ideas into smaller 34cb93a386Sopenharmony_ci ones. 35cb93a386Sopenharmony_ci* They determine if the work for a card has been completed. 36cb93a386Sopenharmony_ci* Normally they are the person (or persons) who can approve and merge a pull 37cb93a386Sopenharmony_ci request into the `master` branch. 38cb93a386Sopenharmony_ci 39cb93a386Sopenharmony_ciOur projects organize cards into the following columns: 40cb93a386Sopenharmony_ci* `Ideas`: Work which could be done, captured either as Cards or Notes. 41cb93a386Sopenharmony_ci * A card in this column could be marked as a [PLACEHOLDER](#placeholders). 42cb93a386Sopenharmony_ci* `Ready to start`: Issues which represent work we'd like to do, and which 43cb93a386Sopenharmony_ci are not blocked by other work. 44cb93a386Sopenharmony_ci * The issue should be narrow enough that it can usually be addressed by a 45cb93a386Sopenharmony_ci single pull request. 46cb93a386Sopenharmony_ci * We want these to be Issues (not Notes) so that someone can claim the work 47cb93a386Sopenharmony_ci by updating the Issue with their intent to do the work. 48cb93a386Sopenharmony_ci Once an Issue is claimed, the project manager moves the corresponding card 49cb93a386Sopenharmony_ci from `Ready to start` to `In progress`. 50cb93a386Sopenharmony_ci* `In progress`: Issues which were in `Ready to start` but which have been 51cb93a386Sopenharmony_ci claimed by someone. 52cb93a386Sopenharmony_ci* `Done`: Issues which have been resolved, by completing their work. 53cb93a386Sopenharmony_ci * The changes have been applied to the repository, typically by being pushed 54cb93a386Sopenharmony_ci into the `master` branch. 55cb93a386Sopenharmony_ci * Other kinds of work could update repository settings, for example. 56cb93a386Sopenharmony_ci* `Rejected ideas`: Work which has been considered, but which we don't want 57cb93a386Sopenharmony_ci implemented. 58cb93a386Sopenharmony_ci * We keep rejected ideas so they are not proposed again. This serves 59cb93a386Sopenharmony_ci as a form of institutional memory. 60cb93a386Sopenharmony_ci * We should record why an idea is rejected. For this reason, a rejected 61cb93a386Sopenharmony_ci idea is likely to be an Issue which has been closed. 62cb93a386Sopenharmony_ci 63cb93a386Sopenharmony_ci## Prioritization 64cb93a386Sopenharmony_ci 65cb93a386Sopenharmony_ciWe are considering prioritizing cards in the `Ideas` and `Ready to start` 66cb93a386Sopenharmony_cicolumns so that things that should be considered first float up to the top. 67cb93a386Sopenharmony_ci 68cb93a386Sopenharmony_ciExperience will tell us if we stick to that rule, and if it proves helpful. 69cb93a386Sopenharmony_ci 70cb93a386Sopenharmony_ci## Placeholders 71cb93a386Sopenharmony_ci 72cb93a386Sopenharmony_ciA *placeholder* is a Note or Issue that represents a possibly large amount 73cb93a386Sopenharmony_ciof work that can be broadly defined but which may not have been broken down 74cb93a386Sopenharmony_ciinto small implementable pieces of work. 75cb93a386Sopenharmony_ci 76cb93a386Sopenharmony_ciUse a placeholder to capture a big idea, but without doing the upfront work 77cb93a386Sopenharmony_cito consider all the details of how it should be implemented. 78cb93a386Sopenharmony_ciOver time, break off pieces of the placeholder into implementable Issues. 79cb93a386Sopenharmony_ciMove those Issues into the `Ready to start` column when they become unblocked. 80cb93a386Sopenharmony_ci 81cb93a386Sopenharmony_ciWe delete the placeholder when all its work has been decomposed into 82cb93a386Sopenharmony_ciimplementable cards. 83