OCA / maintainer-tools

Odoo Maintainers Tools & conventions for OCA members which evaluate and maintain repositories.
GNU Affero General Public License v3.0
271 stars 455 forks source link

Procedure to handle project roadmaps #102

Open dreispt opened 9 years ago

dreispt commented 9 years ago

It would be nice to have a generally agreed way to manage project Roadmaps.

We have these possibilities:

  1. A list in the repo README (example)
  2. A list in a repo Issue (example)
  3. Project Milestones (example)

Using the README roadmap additions are made through PRs, The discussion about the feature would go in the PR. Roadmap list management, including cleaning up done items, is done with repo commits (probably through PRs also).

Using a reference "Roadmap Issue" each proposed feature can be either an Issue or a PR, and each can also have their own discussions. Roadmap list additions still have to be maintained manually, but don't need a repo commit.

Using repo milestones, feature ideas are created, and Maintainers tag them with a milestone. Then GitHub automatically provides a dashboard with the roadmap status. No maintenance other than the individual Issues or PRs.

IMO using milestones seems to be the proper way. The project README could have a link to this list along with some text inviting to contribute.

It may be interesting to have specific milestones for feature roadmap and maybe wishlist, such as 8.0-roadmap and 8.0-wishlist.

Thoughts?

max3903 commented 9 years ago

:+1: for 2

and the next topic after a roadmap is the specification. I would use one issue for each item in the list of the roadmap.

nhomar commented 9 years ago

I like the idea. It sound pretty good.

And important is also understand very well with example what a milestone means. It should be cool even have a repository to show how should look a dummy module/repository following the methodology.

:+1: For me.

dreispt commented 9 years ago

@nhomar +1 for # 1, 2 or 3?

nhomar commented 9 years ago

I like the three of them..... we need is a clear guideline.

But I thin Milestone is not usable for roadmap, mileston is to mark the moment when you will achieve a set of roadmap tasks.

Then let's say Mileston mixed with either 1 or 2 my vote can count as +1 for the need of a methdology.

max3903 commented 9 years ago

Milestones are used as the Odoo version in some projects. One example here: https://github.com/OCA/server-tools/milestones

It is nicer than using labels, as labels should not be growing over time.

elicoidal commented 9 years ago

I prefer the 2. Easy to implement, separate from README (this file is used for many purpose of which the apps store) and flexible enough. If I understood properly, 3 means we should have a 8.0-milestone repo for all OCA modules which doesnot make sense for 90% of the modules. A link in the README would be good enough for who is interested.

dreispt commented 9 years ago

@elicoidal With 3 we use a repo milestone to tag Issues in the roadmap. No generic repo involved. Have close look at the example.

IMO, compared to a Roadmap issue with a checklist, using milestones has the advantage that the list is automatically maintained. As a bonus, if a Roadmap Issue has a check list in it, you also can get to immediately see it's status.

elicoidal commented 9 years ago

OK: I rechecked and indeed it seems like a good. Deserves a thorough guide though.

dreispt commented 9 years ago

Odoo uses a "RDWIP" tag for their roadmap, but don't use milestones. In my opinion tags should be used for Issue/PR triage and status, and milestones are more suitable for the roadmap. But only one Milestone is allowed for each Issue/PR. Se we need different milestones for "series maintenance" and "series roadmap". For example: 8.0 for maintenance, and 8.0-roadmap for the roadmap.

dreispt commented 9 years ago

@max3903 @nhomar @elicoidal Reviving this discussion:

From the above, I feel that using "tags" (either Labels or Milestones) to mark "roadmaps" has the advantage of an automatically maintained status list, when compared to using a manually maintained Roadmap Issue. I'm inclined to use Milestones, but no strong opinion there.

Here is my proposed description of the process, open for suggestions: https://github.com/OCA/maintainer-tools/pull/104/files

max3903 commented 9 years ago

I think we lack some feedbacks and experiences to determine today the best way to handle this and make it standard. Let's try the different options on few projects and see how contributors responds to each.

dreispt commented 9 years ago

@max3903 Sounds good to me. Can an admin create a 8.0-roadmap milestone on OCA/project-service so that I can try that there?

max3903 commented 9 years ago

@dreispt done https://github.com/OCA/project/milestones

sbidoul commented 9 years ago

I lend towards option 2 (issues) with a correct tag (enhancement for instance). Plus a link in the README pointing to a search of all issues and PR's tagged enhancement.

I think that we should not use 8.0 and 7.0 as milestone names. I prefer tags for that (so we can for instance say a bug affects both 7.0 and 8.0). When we do proper release management, milestones should correspond to the names of the next planned releases.

max3903 commented 9 years ago

@sbidoul Number of tags should not grow over time, milestones should.

If a bug impacts many versions, it should be written in the bug description (affects version 7.0 and 8.0) and the milestone should be set to the oldest one (7.0).

sbidoul commented 9 years ago

@max3903 I agree the number of labels should not grow over time. Still, using milestone for indicating the Odoo series does not feel right. I think milestones should be used to convey when an issue will be worked on (eg sprint, target release, etc).

In most github projects milestones relate to releases of the project itself. If you use milestones in an OCA project to indicate the Odoo series, the milestone indicates a release of another project (ie Odoo), and you prevent yourself to use milestones to organize releases of the the OCA project itself.

Using labels to convey the Odoo series gives us that freedom to use milestone for release management, and since there is an Odoo release every 12-18 month only, the list of labels will not grow that much.

sbidoul commented 9 years ago

So we could have milestones such as ideas, roadmap (ideas the PCS agrees to work on), in progress (someone is working on it). If the PSC is sufficiently organized to do release management, then it can create milestones for the future releases.