# MigEng workflow proposal
###### tags: `Documentation`
I have thought pretty extensively about this in the past for MTC and developed
a process that I hoped met two conflicting needs:
* The developers want to work in Github the majority of the time.
* Jira is a necessity for downstream activities (errata) and our other stakeholder teams
(QE, Docs) also strongly prefer to work here.
* Zenhub was also piloted but abandonded. Jira is a necessity, and a adding a
third tool to the equation is a net negative.
My solution expected PRD type definitions (Product Requirements Document)
to be written and committed to Jira as the golden source.
### Stealing a "what is part of a PRD"?
* Objective/Goal: Explain why are you building this and what do you hope to accomplish.
* Features: For each feature, you should include a description, goal and use
case at a minimum. Additional details may be helpful or necessary depending on
the complexity of the feature, such as out-of-scope items.
* UX Flow & Design Notes: Most organizations complete the UX design of features
after the PRD has been reviewed and accepted. However, there may be some general
guidance required at this stage to ensure the release objectives are met. This
is not the place for pixel-perfect mockups or wireframes that map out every
possible scenario; instead, it can be used to describe the overall user workflow.
* System & Environment Requirements: Which end-user environments will be
supported (such as browsers, operating systems, memory, and processing power, etc.).
* Assumptions, Constraints & Dependencies: List out what is expected of users,
any limits for the implementation to be aware of and any outside elements
required for the final solution to be functional.
**So a document that describes what problem are we solving, use-cases are we covering,
and why**
### Functional Spec
How we're going to build the solution. Generally I wanted this to be in github
because it's the engineer's domain:
--
## Proposal:
* All bugs in Jira as a golden source. This allows QE to work their lifecycle
from jira as their comfortable and we can attach them to errata. It eliminates
a third system: Bugzilla.
* PRD content belongs in Jira. The Epics that are getting worked and the User
stories that are being pursued. Further, our team makes extensive use of "Spikes",
typically investigative tasks that produce an Enhancement as a deliverable. This
includes problem background, different proposed solutions, and what has been
accepeted and/or rejected.
> OPINION: I strongly prefer Jira for the above type content. Github currently
does not have the primitives that I use constantly in order to query a backlog
of 1000+ issues, married with a concept of sprints, roadmaps, and releases.
#### Workflow
User stories and spikes are organized on sprintboards. It's the owning
engineer's responsibility to create Github issues with [MIG-XXX] in the title
that break down the story into implementable tasks to be worked. Wadsworth bot [1]
will auto link these issues as subtasks to the user story. As PRs are posted
with "closes #<issue-num>" in the title, upon review and merge of the PR, the
issue automatically gets closed by github's native automation. Wadsworth gets
an event and pushes the Jira subtask to Done. When all subtasks are Done, the
story moves to QE state for QE to being their test process. The engineer still
needs to review and approve test plans which live in polarian, indicated by
a "tc_approved" label on the Jira.
The end result is that the majority of the time, the engineer lives in github
creating issues for implementation tasks and working those tasks by submitting
PRs that will naturally propagate a completion event to Jira through automation.
PM is able to author PRD style requirements in Jira. QE works off of the User
Stories in Jira, and Docs works off of Jira stores as well, documenting our
features as laid out there.
[1]https://github.com/konveyor/wadsworth