Based on voting in #5819. We want to track ongoing and upcoming work in a way that makes progress and priorities clear to everyone - team members and the broader community. And it should make managing priorities easy for technical leads. In this issue we're going to discuss (and decide on) something to try first.
eingenito聽- I wish we had a place where we could easily track progress on our highest priority initiatives. [mentions 'meta' issues]
eingenito聽- I wish I understood which issues are the ones that should be worked on.
hannahhoward聽- I wish we marked issues as "good first time issue" for first time contributors [we do have difficulty:easy which might be the same thing]
DonaldTsang聽- [mentions Kanban or similar for tracking work]
eingenito聽- I wish I knew what to do with all the old issues in go-ipfs. [they slow down waffle boards]
I know that waffle boards are prohibitively slow for Steb (who I'm going to guess isn't the most patient webapp user in the first place) and presumably other linux users? That makes it a poor choice. But I do think a really simple Kanban style tool is a good choice. I propose trying a Github project board, even if they're kindof crappy. I think they have some good characteristics:
I would suggest a simple project board with two columns; "backlog" and "in progress". Issues that are high priority go in "backlog" and we arrange them in roughly priority order. Active (!) open PRs go in "in progress". We leave out everything else.
We can figure out what process falls out over time. But immediately if people are looking for new work they'll know what the top priorities are (I don't think that means they have to choose from them but at least they'll know) and if they have time to review a PR they'll know the ones that are blocked and important (I mean if we roughly order them).
Can we also get a review column for PRs that would be active but are blocked by not being reviewed? This (or actually using the needs review label consistently) would make it much easier for me to find PRs that I could have a look at (and better convey when I should).
I'm just checking out some options and there's already a github project board that Kuba made: https://github.com/orgs/ipfs/projects/1
Github project boards are pretty limited and they'd take a good bit of hand-holding, which I'm willing to do if we want to use them.
Github Project Boards
++ In github and simple
-- Can't restrict to a subset of an organization's repositories. If we automate the inbox we'd get a _lot_ of stuff in there we don't want.
-- No correspondence between columns and labels so no ability to track changes made directly in issues.
I also realized that in Waffle.io we could remove the Inbox column which might really speed up the UI for everyone. We could also just delete a _lot_ of cards; anything really old that we didn't want showing up in the UI. I don't know how we'd ever get them back if we wanted to - I can experiment a little.
@Stebalien if you have a moment could you check this Waffle board: https://waffle.io/eingenito/waffle-test. It has no "Inbox" column and I'm wondering if that works better for you. I'm not sure we need an inbox column - it might be better for us just to manage moving issues into the backlog explicitly with labels.
I think the real answer here is getting better about moving things between "in progress", "blocked", and "backlog".
Note: not having an inbox doesn't make any difference in terms of speed. It still takes ~1.5 seconds to show an issue.
I'm also wondering if there's a meaningful distinction between "ready" and "backlog".
I think we really only strictly need 'backlog' and 'in progress' and I like magik's 'needs review' column.
I would advocate for only putting an issue in the backlog if the intent is that someone should work on it. I would further advocate for ordering the backlog roughly by priority - really the only advantages of a Kanban style board are 1) we don't have to show all the issues and PRs that we don't want to (because they're super old, they're just around as a reminder etc.), and 2) we can order things within columns to better communicate relative priorities.
I think if waffle.io is still crap with far fewer issues I'd like to try a github project board with three columns. I can start with a rough cut at 'in progress' by just importing all the open PRs touched in the last moth or so across our projects.
And maybe we just bring in backlog items onesey-twosey to indicate that we'd like core team members to start work on them when they're looking for new work, or that there are high priority bugfixes that need doing.
Waffle.io won't cut it speed wise. All the other 3rd party github project boards require crazy permissions. So we're going to try a github project board: https://github.com/orgs/ipfs/projects/1
There are three columns
Nothing gets added automatically. I don't know if this is good or bad yet; but it might be a good thing.
Backlog is for work that should be started when people have the opportunity. Entries here are issues or notes that describe work to be done. We will try to keep this in rough order of priority. When you start work from the backlog, move the card to in progress.
In Progress this is for tracking _currently ongoing_ work. If you're working on something and you don't want it to be a secret, make sure it is reflected in this column. I'll remind you individually to keep up your "In Progress" entries up to date so the rest of the team can get a quick, useful understanding of what you are doing.
Let's try to keep this column useful. If you put work aside for something else it should come out of this column for more than a week. Definitely let's not put all open PRs in here. Just the ones getting active attention.
Needs Review (@Magik6k's suggestion) This is for PRs (or I guess issues) that need attention from the rest of your team. RFC, WIP and ready for review PRs particularly should go here. If this column becomes too big we'll start sorting it by priority too.
@eingenito If you click the three dots on the columns, and go to 'Manage Automation' you can setup automatic adding and moving of issues. You have to do it for each as you set the different criteria for adding and moving.
I set up the Needs Review column as an example, feel free to remove the settings or change them.
@eingenito should we add more repos to this project? I see it can support more than one repo, but currently only has IPFS. The reason I ask is cause I just had a bitswap PR that I want to note a need for review on.
Also, one thing I really liked about Waffle was the ability to link issues across projects -- I wonder if Github projects offers that.
@hannahhoward the project board can actually hold issues and PRs from any IPFS project. The 'linked project' feature is really just a default filter on the search. I would have added them all but there is a limit of 5 repositories to link to which is not really useful for go-ipfs.
Most helpful comment
Can we also get a
reviewcolumn for PRs that would be active but are blocked by not being reviewed? This (or actually using theneeds reviewlabel consistently) would make it much easier for me to find PRs that I could have a look at (and better convey when I should).