= Managing SDPi Development Using GitHub Projects :toc: right #*TODO:* Add general workflow and approach using GitHub Projects, Issues, Kanban board, workflow, milestones, automation, etc. ALSO reference the general article on the home page about doing Gemini work & project planning# == GitHub Projects - Overview & Co-working Space #TODO: Basic rationale for using github projects / issues / automation / kanban board / workflow / milestones / etc. + "classic" vs. "new" projects, projects for AsciiDoc based guidance documents - Gemini SES+MDI projects NOT managed in github???# See the related article "Program Coordination Co-Working Spaces" Include graphic with flow from confluence to smartsheet (or Excel) to github stuff below image::./images/SDPi-FHIR-Project-Tooling-Overview.png[ToI,500,,,align="center"] == Creating New Projects #TODO: include links to relevant articles; projects that are already created vs. projects to be updated# == Linking Projects to Wiki Updates #TODO: Provide guidance and perhaps a CHECKLIST? for project Issues managed in the repo to updates to be made to the wiki documentation == Workflow Using Issues & Automation #TODO: Chart how to use automation and github "issues" to manage tasks and updates to the SDPi specifications and other work products (e.g., documents)# === Issue Creation [[issue_creation]] For each Issue Note: Issues are plan tasks that have no sub tasks higher order tasks become milestones QUESTION: Issues outside of milestones? Issues that are also a milestone? === Issue Automation / Project Kanban Board Project & issue "automation" is accomplished as follows: . *New Issue Created* .. Add initial issue *Title* *** Note: May update later based on issue type / label template & guidelines .. Add *issue description* in the "Write - Leave a comment" section .. Select *Project*(s) *** Issue will show up on the Project Kanban Board's "To do" column .. Add appropriate *Label*(s), including: *** *_Specification_* - New content to be added to the SDPi specification *** *_Topic of Interest_* - Resolution of an issue (ToI) that is ready to be integrated into the specification (e.g., OID extensions) *** *_Spec Fix_* - Problem in the current version of the SDPi specification that needs to be fixed (e.g., broken link, incomplete sentences, etc.) *** *_Review Comment_* - a comment that was received from the domain internal or public comment review phases *** *_Wiki Content_* - New content that needs to be documented in the repo's wiki; note: though the wiki can be branched, that branching is not supported in the *** *_Wiki Fix_* - Issues with currently published wiki content (e.g., broken links, typos, etc.) .. Add *Milestone*(s) *** Either create or link to one or more of the Project's milestones .. *Assign people* to Issue *** Note: Individuals have to first be added to the IHE github community; let Todd Cooper or John Rhoads know if this needs to be done At this point, the Issue should be shown on the project's kanban board's "To do" column When work is ready to begin ... ["arabic", start=2] . *Branch* the Repository *** This should trigger moving the issue from the "To do" to the "In progress" column . *Pull Request* to Initiate Review *** This will let others know that changes have been pushed to the branch and are ready for review, BUT the issue will stay in the "In progress" column . *Reviewer Requests Changes* *** This will move the issue to the "Review in progress" column . *Reviewer Approvals* *** Once the required number of reviewers have approved the branch updates, . *Merge Updates / Close Issue* *** When this is complete, the Issue will move to the "Done" Column === Issue Workflow: From "To do" to Closed & Merged Once an issue is created (see <> above), and developers are ready to begin actively working on the tasks, the following issue workflow should be followed: . Change Issue / Projects / status from "To do" to "In progress"; . If necessary, manually move the related To Do item(s) to the "In progress" column on the project's kanban board . Create a branch for the issue (see the "Development" item on the items on the right) . FOR each Issue sub-task .. "Convert to issue" - highlight the task and select the radial button on the right .. Configure the new issue (which has the name of the task's text) .. Create a branch for this subtask issue . Work on branch(es) .. Change issue status to "In progress" .. link:Updating-the-Changelog[Update the CHANGELOG.md] . Open one Pull Request (PR) per branch (main issue or subtask) once work is completed .. Change issue status to "Review in progress" .. Preform review process for each branch, approving each as completed . Merge each PR once the review and approval is completed . Close the issue - first for each task then for the main issue itself WARNING: This process may be "tweaked" with more team experience, but it is a good starting point! {empty} + == Tracking Progress Against Milestones #TODO: Craft how to use github milestones for the tracking of multi-issue coordination around major capabilities / updates. See https://docs.github.com/en/issues/using-labels-and-milestones-to-track-work/creating-and-editing-milestones-for-issues-and-pull-requests[Using Labels and Milestones to Track Work...]# Note: SmartSheet "Finish" milestones are at the task level where there are no further subtasks; some discretion should be applied! ## ## == "Bug" Fix Management via Labels In order to capture discrepancies or "bugs" with the SDPi specification and related artifacts / documentation, a special set of issues have been defined and can be associated with any Github Issue that is created. Currently only two labels have been defined: "Spec Fix" and "Wiki Fix"; however, more may be added in the future, if finer level of distinction are needed. Taking this approach enables easy searching of existing "bugs" associated with Issues: *_"https://github.com/IHE/DEV.SDPi/labels/