project
project copied to clipboard
[RFC] project_milestone roadmap
Context
The fine folks at Numigi (@jjbreard2 @TumbaoJu) presented a talk at the OCA Days 2023 last week regarding their work extending project_milestone. Additions are to be found in their company's project and sale repositories.
I believe this is valuable work since while we have @patrickrwilson's project_milestone and project_template_milestone as a fine base to work with, I feel we could really use some OCA-ized extra functionality.
Problem
Not only Numigi, but my company has been doing extra work on milestones as well. This creates overlapping features, and nothing's been committed to OCA yet. I'm personally at fault for this since I never executed on publishing our work to the wider world, leading to inefficiencies.
Existing Solutions
For 12.0 and 14.0 Numigi have created:
- project_milestone_estimated_hours / project_milestone_spent_hours / project_milestone_remaining_hours / project_milestone_time_kpi : modules to help manage project on a higher level than tasks
- sale_project_milestone : enable to create a milestone from a sale validation with various options
- project_milestone_timeline_dynamic : enables to have a dynamic timeline view of milestones, with milestone dependencies, allowing for easier planning at a milestone level
At Therp, we've kept our modifications totally to ourselves up until now in a private repo, focusing more on tying milestones in with our internal planning. A descriptive feature list from READMEs gives us:
- On project.milestone we added aggregate, computed fields showing how much time was planned, spent, and remains on their constituent tasks. I gather there is quite the overlap with the work done by Numigi here but we calculate planned time bottom-up instead of setting it on the project.milestone record
- We changed the domain on the taskt milestone_id field, so that we can select generic Milestones with no project set by default
- we clear out the task milestone_id field when changing project_id on a task
- we base the task's planned end date [cf. project_forecast_line] on its deadline, which is (re-)set by its milestone's target_tate The above features mostly have to do with internal ease-of-planning
- we added portaluser access and a simple portal view for project.milestone records
Lastly, what Odoo S.A. has been doing since 16.0 is having Project Milestones work together with Sale Orders; sale_project links them together. I haven't yet tested Numigi's sale_project_milestone, but does it provide roughly the same capabilities regarding the milestone invoicing policy on products?
Alternatives
I'm still unsure whether or not our own custom work on Milestones stemmed from an unwillingness to either properly use or understand Subtasks. In my own functional investigation I ran into usability problems, but at least tasks already have full-on Portal integration, which OCA's project_milestone lacks at the moment. Bottom line: are milestones used enough to warrant investing our time and energy some more?
At the same time, we ourselves decided to forego using OCA/agile's project_scrum. It had been in use before, but its canonical way of handling sprints and heavy use of agile jargon clashed with the more generic approach milestones provide. We even tailored them to external (strict, project-linked) and internal (generic, free to use) records to facilitate setting dates on tasks en-masse for planning purposes.
Roadmap
Some ideas:
- we at the very least commit a combined-effort
project_milestone_hours
-type module where planned, spent, and remaining hours are tracked on project.milestone records. We provide for a selection option to either aggregateplanned_hours
from constituent project.task records, or set 'master' planned hours on the milestone itself in which tasks have to fit. - we possibly add some general usability features to OCA milestones: archiving, staging, and a chatter for example?
- we go with Numigi's sale_project_milestone, project_milestone_time_kpi, and project_milestone_timeline_dynamic
- we discuss portal availability and where to add this access
Simplest target version right now looks like 14.0 to me?
@OSevangelist you had some questions/input after the talk as well. Feel free to comment!