What is the best way to manage feature milestones and sprints with Github? - github

Github provides nice feature to manage feature completeness OR sprint completeness. It's called Milestones and it's really nice.
However, sometimes we need to track both completeness of the feature (e.g. "Refactoring payment systems integration") and completeness of the sprint (e.g. "Sprint week 15").
Is there any way to do so using Github issues?

GitHub does not currently allow you to assign multiple milestones to an issue. There is an issue tracking this feature request, but there seems to be little movement on it.
There's a couple of workarounds possible. The simplest one is to use Milestones to track sprints, and labels to track features. While labels do not give you the nice "X% completed" overview that Milestones do, you can quickly (single click) get an overview of all issues tagged with a label, and see how many are open vs. closed.
Another possibility is that you use Task Lists (see GitHub Markdown guide) to your advantage. Instead of having each issue belonging to a particular feature as an independent GitHub issue, you track the entire feature as a single issue, and add a Task List to the issue to track individual items. The advantage of this is that you get a nice progress bar in your issue overview, showing you feature completeness. A disadvantage is that you cannot assign individual tasks to separate developers any longer.

Related

Azure DevOps - organizing projects and repositories

(Posting the question here as this is the 'community' that Microsoft redirects to with a 'Need advice? Ask community' button. Hope it won't get closed as 'primarily opinion based' or 'too broad')
Hello,
I want to start using AzureDevops in my department for organizing code & work. We're a small team who creates a large number of applications & plugins.
Some of these applications have a very short lifecycle, i.e. we deliver them, and they work for years without changes. Other apps are larger and are updated/fixed across several months or years.
These applications are completely separate from each other in all aspects.
As far as I understand Azure DevOps structure, my department should become an 'Organization' (we can/need to be separate from the rest of the corporation).
I am a bit puzzled about the 'Project' part. Documentation says
In general, we recommend that you use a single project to support your organization or enterprise.
So, let's say we do have one project called Our Apps - where do we then put all the individual application-projects?
As far as I understand, each product (application) that we deliver should have it's own repository (or a set of applications, if they are logically connected).
This is in order to allow a developer to simply clone the repo on their machine and contribute to that product only - without downloading other projects etc.
I need to be able to:
easily navigate/see all the tens/(hundreds?) of applications that we create,
view their separate kanban boards (for those project that do have it, not all of them will)
to see their repositories (Git or TFS), commits etc
see & manage their pipelines
At the moment it seems to me that the only place where I can see a 'list' of what products do we have is the drop down below:
And the only way to see what is going on in the big-enough-to-get-own-board products is by creating a new separate 'SomeApp Team' in the Project (even though same people are in it), so that I can have a board for the SomeApp - and view the boards from here:
Is that the intended way to organize the structure?
Any alternative approaches?
Is there any way to have a 'cross-reposistory' or 'cross-team' overview?
What about creating documentation for each 'product'?
The "one project to rule them all" was coined by Martin Hinshelwood and his blog post from way-back-when explains the reasons and limitations.
With the introduction of Tagging and filtering on the backlog there is an alternative approach within the one-project setup.
Create team for the real teams you have in your organisation.
Create an area path for each major project/product in the org.
Assign the area paths of the projects to the teams who are working on them. This can change over time.
Optionally tag work items with the major project/product for additional filtering.
This way each team sees a complete view of all the work they can pull from. And they can quickly filter the work by tags to remove items from view when discussing specific projects/products.
Also, when teams change their focus from one product/project to another, you can simply change the assigned areas for that team to update their view.
The Plan View extension provides an additional cross-team view across over all the work. And the Dependency Tracker extension can visualize dependencies over time.
You can also use the Epic/Feature/PBI|UserStory tree structure to create additional grouping in your work items. You can customize the process template to introduce a Product level, though for the planning features to work, that would also mean that you'd also have to create full traceability from Product down to PBI|UserStory.
The main recommendation is to try a few of these approaches in a light-weight manner to see how they work and find your own ideal setup.
Another option for cross project visualization is to enable the Analytics Extension and connect it to PowerBI.
As you'll soon figure out, naming guidelines for your Tags, Repositories, Pipelines is going to be very important. Being able to quickly filter to the right level requires this.

VSTS Agile Process Template - User Story as child of Epic and ignore Feature WIT

In Microsoft's VSTS, is there a way to have User Story as a child of Epic in the Agile process template, eg including when performing "mapping", without creating a VSTS custom process template? In the image below in the main content area, hide / remove Feature, and in the "Mapping" panel on the right, have Epics for mapping User Stories.
I'm asking because in my org's agile practice we have epics and user stories but we don't see the need / benefit to the extra layer of Feature WIT.
OOTB Agile process template has Epic > Feature > User Story and when you view Product Backlog (aka user stories) you can map them to Features and when you view Feature portfolio backlog you can map them to Epics, but you can't (that I know of) turn off the Feature WIT so that User Stories can be mapped directly to Epics in the GUI.
Btw, it isn't possible to rename OOTB WITs otherwise I would simply turn off Epic WIT and rename it to "Epic OOTB", and rename Feature WIT to "Epic My Org".
UPDATE: Per Add a portfolio backlog level it is possible to add a portfolio backlog level with a new WIT:
You'll first export your process, add or update definition files, and
then import that process to either update existing team projects or
use it to create a team project.
but I want to remove one. I may try the reverse using this procedure but first I'd like some reassurance that it likely works for removing an OOTB level.
Some of the docs I've consulted include:
Agile process work item types and workflow - Microsoft Docs
Define features and epics - Microsoft Docs
There isn’t such feature in VSTS, also you can’t custom too: Modify the backlog and boards
Why don't you use tools like Jira or Rally to map in your agile practices? It will be immensely beneficial in long run.
Agile, by its very definition, means that you should be flexible. As such, ignoring the User Story as a sub-class of feature can be done. However, I think that if the focus of your delivery has a strong user-component to it, then marrying that up in deliverables will give a better indicator to your product owners.
If you're scrumming it, then you'd generally be working on a feature-task loop anyway, so I wouldn't worry, VSTS seems to cope well with both.
VSTS doesn't really concentrate heavy on Workflows OOTB like JIRA pushes (I've seen some crazy JIRA workflows in my time), although it is quite extensible, I believe the VSTS Team have gone Zen Agile in terms of offering a service that helps teams develop code first and foremost, and consigns the machinations of the upper tier management of software delivery and work tracking second.
See the process guidelines for more info: https://learn.microsoft.com/en-us/vsts/boards/work-items/guidance/choose-process?view=vsts

Tracking Issues across multiple repositories

We often have epic stories which span multiple repositories. I am looking for a mechanism to track all the work that is associated with a single story. GitHub has Issues which is a close to the solution I seek. The problem with Issues is they do not span multiple repositories. On deployment day I still need to scan ~10 repositories (there are 100 repo's, 10 are commonly used) to discover which ones have commits related to the story.
As a manual workaround I create multiple Issues. One Issue for each repository. Then I manually list the Issue#'s related to the epic story in Jira.
Is there a tool or alternative technique I can use to automatically combine these issues and treat them as one?
It would be a bit unusual to use both JIRA and GitHub Issues together. JIRA offers virtually everything that GitHub Issues does and more.
This guide from GitHub shows how you can integrate JIRA directly with GitHub, skipping Issues altogether. When properly configured you will see links to GitHub in mentioned JIRA issues. You can also trigger JIRA workflow changes based on keywords in your commit messages, much like GitHub Issues does out of the box.

Github: fixing an accidental milestone or label assignment

Github has a nice interface for searching for groups of issues, and processing them en masse -- such as assigning them to a milestone or adding and removing labels.
Unfortunately this also means one might accidentally reassign a mass of issues to a different milestone or label, thus destroying some carefully-thought-out information.
Is there a way to recover in this situation?
I haven't seen this question asked previously. One workaround would be to have some protection so a smaller group of people can add/remove certain labels or assign tasks to milestones, but Github's permissions don't seem to allow such fine-grained control.
You wouldn't have any recourse on the user side (through the GitHub GUI).
Only GitHub support can check if they have some logs of those operations (possibly managed in a database), and revert the last mass-modification.

How to simulate voting in GitHub's Issues 2.0 Tracker

I'm considering moving my open-source project Flyway from Google Code to GitHub.
One of the features I really like in Google Code's Issue Tracker is the ability to vote and sort issues by the number of votes. This has allowed me to get a good feel of where current pain points lie and what the community feels needs attention or further work.
How can I achieve something similar on GitHub? Is there a way to maintain a democratic approach to Issue Tracking?
There is no built-in ability to do so. Technically speaking, you can only manage issues by
assignee
tags (called labels at github)
milestones
While you can define label systems for lots of differentation criteria like
bug/feature request/...
prio high/low/...
status verified/unverified
it is simply not possible to have something that accumulates votes. So typically you will see "+1" postings as in good old mailing lists. I've seen people using external voting systems (like Google moderator) for issues on github, but that doesn't make a good user experience either.
If you're willing to use a third-party system that integrates with GitHub, you can try GitPoll.