You can use milestones to track progress on groups of issues or pull requests in a repository. When you create a milestone, you can associate it with issues and pull requests. To better manage your project, you can view details about your milestone.
Projects contain issues and pull requests, keeping track of the work that needs to be done. A repository is the main staging area where all your projects are stores, and the Projects Board is a project management and tracking board that helps you manage your workflow across a repository.
I'm wondering the exact same thing. Here is what I came up with.
First, let's review the main similarities and differences:
So the way I see it, is that Projects are a completely separate way to visualize and organize your work on an higher level (think "project management", multiple teams, multiple repository, etc.), while Milestones are a way to organize your deadlines and releases on a more basic level (think "release management", "versions", etc.). With this in mind, it makes sense that an issue only belongs to one Milestone (it's only released or pushed to production once) but can be part of different Projects.
I'm sure they are other ways to look at it though, and I'm interested to hear other opinions.
Some time ago, after working with Milestones and Projects for over a year, I realized there is another important aspect I had completely overlooked.
My opinion:
A Project is best for getting insight into a process used by the people in the group. A better name for it would be "workflow" or "process". There's more overhead involved in creating a new project vs. creating a new Milestone. So you really only want to create a new Project when there's a new process in your team: Lanes must be chosen, configured, and ordered. They can also be very different in each Project. I think back to the original use of Kanban by Toyota: managing the people and their workload.
A Project answers the question, "What are we working on at the moment?"
Two great Project examples: software development and blogging. The configurations for each would support the different groups' people processes; how they work together and sign off on things.
Milestones, in contrast, all work the same. They're an ordered list of tasks which must all be closed for the work product to be considered complete. Optionally, a due date can be set, which just provides reminders, but does not change the Milestone functioning.
A milestone answers the question, "What is remaining to finish this product?"
Milestones are kind of labels that mark and group tickets that are expected to be delivered at some point in time. The Milestones
page which you can access from Issues
page makes it clear - you can see the percentage of tickets completed for a particular milestone and the due date. You can also sort milestones by due date and prioritise tickets within a particular milestone.
The stress here is on delivery dates and tracking progress.
Projects on the other hand are implemented in GitHub as Kanban boards with some bells and whistles. You can specify a number of columns (and swimlanes - as @Doug said below swimlanes are not supported yet) to create simple workflows. You can then add tickets from one or many repositories, prioritise them, and then progress them from one column to another as they are being worked on. You could, for example, have 'Backlog', 'In Progress', 'Under Review', 'In Testing', and 'Done' columns and move tickets from left to right, or from right to left if, say, a defective ticket gets bounced from 'In Testing' back to 'Backlog'.
The stress here is on organising and managing the work.
Then how you organise and partition that work is up to you. You could create a project per milestone or have several milestones in a single project, or split milestones into shorter sprints. You could also have several projects covering different aspects of working on the product, for example, one for developers and one for testers.
One nice thing about projects is that they're more free-form than milestones. You can just chuck notes in them and link to issues, and organise them however it suits you. They're great for jotting down ideas, making roadmaps, and listing resources and dependencies. In the past I've used issues and the wiki for the same things, but I found both to be too formal and transactional (i.e. higher overhead).
On GitHub:
So it is correct to use milestones to split the project into many stage with end times.
I use it like this:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With