-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update Milestone process #107
Conversation
Each epic should have an owner per affected subteam (research, js-waku, go-waku, nwaku). | ||
Each epic should have an owner per subteam. | ||
Most epics will have a unique owner (e.g. a Waku Research team member owns a `E:Research` epic). | ||
For _Dogfood_ and _QA_ epics, one owner per client should be set. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Dogfood is a separate epic to ensure it happens. It also encourage interoperability testing so that dogfooding happens across all clients.
We need to try and see if it works.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we envision a new repo dedicated for the dogfood epics?
Edit: I see the detail now of a specific issue within a team's epic for dogfooding ✔️.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think all epic will have to continue to live in pm repo as per #107 (comment)
For example, when PoC is near completion then breaking down the work should be started. | ||
an is encouraged to use client PM call as a forum to check epics to be assigned, for example when a given epic is near completion. | ||
|
||
#### Handovers |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I do not think we need a strict handover process. However, I believe it is worth mentioning.
It helps ensure the quality of the output.
It also means that once a team has handed over, then can close an epic.
Work may happen after a handover, especially in terms of maintenance and support but it is now out of the hand of the team that handed over.
README.md
Outdated
|
||
| Handover | Expectations when handing over | Expectations when accepting handover | | ||
|-------------------------------|-----------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------| | ||
| Research to development teams | - RFC PR is merged <br /> - PoC PR is merged | - RFC content and PoC are reviewed <br /> - Own code and functionality <br /> - Own minor RFC changes | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Regarding RFC, the aim is to ensure that researcher can focus on the next task.
It does not mean that they are totally out of the loop, but that dev engineers are taking ownership and can process with small RFC adjustment raised through implementation and interop.
In case of major issue with a protocol discovered at a late stage, then we can review on an adhoc basis on how to handle it.
- MUST have a matching GH issue in the https://github.com/waku-org/pm repo with `milestone` label assigned. | ||
- MUST have a GH Milestone in https://github.com/waku-org/pm repo, to which relevant _Epics_ are added. | ||
- SHOULD have a roadmap to delivery done at planning phase, the GH milestone is then used to track progress. | ||
- MUST have a matching GitHub issue in the https://github.com/waku-org/pm repo with `milestone` label assigned. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I believe one of the limitation we have is that a GitHub milestine is only on one repo and hence we need the related epics to be in the same repo.
I don't think there is a way to get the epic issue in the subteam repo.
|
||
### GitHub Usage | ||
|
||
A _Milestone_: | ||
- MUST have a matching GH issue in the https://github.com/waku-org/pm repo with `milestone` label assigned. | ||
- MUST have a GH Milestone in https://github.com/waku-org/pm repo, to which relevant _Epics_ are added. | ||
- SHOULD have a roadmap to delivery done at planning phase, the GH milestone is then used to track progress. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Having a roadmap in the milestone description that is not updated is not great so I removed this and expect to only use github fields for planning. Let's see how it goes.
- OR MAY be tracked as a single GH issue | ||
- that MUST be labelled with related _Epic_ label (`E:...`), | ||
- OR MAY be tracked as a GH Pull Request | ||
- that MUST be labelled with related _Epic_ label (`E:...`), | ||
- that MUST have a reference to the related GitHub _Task_ or _Epic_ issue |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nobody label their PR.
I don't think it impacts project management too much so that fine.
But I do expect a reference to the relate issue to appear in a PR so that context is provided.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IMO, a Task with sub-Tasks is an Epic. Then, I don't see the need for a Task to keep a list of other Tasks
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We are abusing the word "epic" to have a common terminology across dashboards.
README.md
Outdated
| `E:Research` | Waku Research | PoC, RFC, Protocol Simulations/Studies | Initial work done by the research team to create or change a protocol. Engineering-only Milestones may not have such epic | | ||
| `E:nwaku` | nwaku | MVP quality software | Bring software to MVP level, proceed with re-architecture of PoC if needed, ensure functionality is usable, refine APIs, auto-generated/API documentation, ensure interoperability works | | ||
| `E:js-waku` | js-waku | MVP quality software, including all supported env (e.g. React Native) | Implement protocol in js-waku, same as nwaku. | | ||
| `E:go-waku` | go-waku | MVP quality software, include all supported bindings (i.e. C and Rust) | Implement protocol in go-waku. May not always be relevant - need to conclude multiple client discussion. Otherwise, same as nwaku. | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No matter how the multiple client discussion goes. I propose to ensure that Rust and C bindings are considered as support and included in any work
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we include this in the same epic than go-waku or have a dedicated one? I 'd suggest same epic @waku-org/go-waku-developers
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But I am wondering whether the priority would be same for C-bindings and rust similar to Golang API's for all milestongs. Maybe it is better to decide per milestone and based on SDK usage whether to deprioritize something?
Some milestones may not have changes in these bindings as well.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think there is a fair question of scope for each client. Which we are trying to clarify with the multiple client implement.
e.g. if js-waku is only for the browser then relay and service node side of req-res protocol do not need to be implemented.
go-waku scope is currently library for Status so strictly speaking it does not need RLN or autosharding either.
Once we set a scope for a client or binding then it will be clear whether a milestone should be done on such client.
For now, Rust is awkward. Created by Nomos for Nomos but used by TheGraph. TheGraph is valuable user but they do not see intending to use The Waku Network.
Also, our focus was on building The Waku Network, over having an array of language available (see how #42 is planned for later).
However, once we decide that Rust or any specific client should be fully supported, then I think it should be included in milestone work and not be considered a second class citizen.
If we push documentationf or the Rust bindings on docs.waku.org then we should aim for parity, and not wait for a project to tell us "hey this js-waku functionality, would be useful for us in Rust" before we decide to implement.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In general this LGTM. One clarification from my side - this seems to imply that the Epics-per-milestone is only used to distribute the responsibilities towards the same milestone to different subteams. In other words, we won't also use epics to break the milestone into smaller deliverables (that may also span several teams) as I've done in https://www.notion.so/Waku-Research-Milestones-2024-56b1d8c869f14acc934c2d2b2564fa2a ? For example, the Milestone delivery of Store Sync can be broken down into distinct phases: (1) improved Store protocol (2) basic sync protocol. Both of these phases would in turn require effort to be scheduled for each of the subteams. In my mind it make sense to use Epics to also indicate this further breakdown of the milestone.
@jm-clius I agree with your point that Epics should breakdown into appropriately sized batches of work. Using the Milestone you referenced as a rough template of what the work might break down to coming out of the Research phase would be a similar breakdown into Epics as described in the Research doc https://www.notion.so/Waku-Research-Milestones-2024-56b1d8c869f14acc934c2d2b2564fa2a.
If the feature moves forward out of the nwaku mvp implementation, the Epics would breakdown by subteams and phases. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! Thanks for it! 💯
.github/ISSUE_TEMPLATE/milestone.md
Outdated
- research: | ||
- js-waku: | ||
- nwaku: | ||
- go-waku: | ||
- QA: | ||
- Docs: | ||
- Eco-Dev: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How should we use this list?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This was meant to have the link tot he various github issues but I opted to remove it as it is dupe info.
README.md
Outdated
|
||
| Name | Number of | Timeframe | Team Scope | Owner | Description | | ||
|--------------|-----------------------|------------------------------------------------|-------------------------------------------------|------------------------|-------------------------------------------------------| | ||
| Deliverable | 3-5 per year | Set yearly for grant request | Waku Team | Waku Lead | TBD | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think is better to just have three possible terms: Milestone; Epic; and Taks. The simpler the better
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Deliverable is something asked by C&J for grant reason.
For now, this can be ignored. I'll actually remove it from the doc for simplicity purposes.
README.md
Outdated
| `E:QA` | Vac/DST | RFC-based + functionality based tests, both unit and integration tests. | Test engineers take over and complete unit tests + add scenarios in integration test framework. In future, also add scenario to benchmark suite. | | ||
| `E:Dogfood` | js-waku, go-waku, nwaku | Lab example updates, own nodes updated, etc. | Each dev team proceed by dogfooding the feature/API by using it themselves. Whether it is running their own node, or updating a selected number of examples. | | ||
| `E:Docs` | Doc | Documentation (not auto-generated) | Document the new feature across all implementations, using the dogfooding output as handover material from engineering teams. | | ||
| `E:Eco-Dev` | Eco Dev | Dev Rel assets (examples, video tutorial, etc), comms plan (X threads, blog posts) | Dev Rel can now prepare assets to push the feature to developers, comms can prepare copies to communicate about it, BD can push it to projects and partners. | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shall we restrict to only use low-case in our labels?
| `E:QA` | Vac/DST | RFC-based + functionality based tests, both unit and integration tests. | Test engineers take over and complete unit tests + add scenarios in integration test framework. In future, also add scenario to benchmark suite. | | |
| `E:Dogfood` | js-waku, go-waku, nwaku | Lab example updates, own nodes updated, etc. | Each dev team proceed by dogfooding the feature/API by using it themselves. Whether it is running their own node, or updating a selected number of examples. | | |
| `E:Docs` | Doc | Documentation (not auto-generated) | Document the new feature across all implementations, using the dogfooding output as handover material from engineering teams. | | |
| `E:Eco-Dev` | Eco Dev | Dev Rel assets (examples, video tutorial, etc), comms plan (X threads, blog posts) | Dev Rel can now prepare assets to push the feature to developers, comms can prepare copies to communicate about it, BD can push it to projects and partners. | | |
| `E:qa` | Vac/DST | RFC-based + functionality based tests, both unit and integration tests. | Test engineers take over and complete unit tests + add scenarios in integration test framework. In future, also add scenario to benchmark suite. | | |
| `E:dogfood` | js-waku, go-waku, nwaku | Lab example updates, own nodes updated, etc. | Each dev team proceed by dogfooding the feature/API by using it themselves. Whether it is running their own node, or updating a selected number of examples. | | |
| `E:docs` | Doc | Documentation (not auto-generated) | Document the new feature across all implementations, using the dogfooding output as handover material from engineering teams. | | |
| `E:eco-dev` | Eco Dev | Dev Rel assets (examples, video tutorial, etc), comms plan (X threads, blog posts) | Dev Rel can now prepare assets to push the feature to developers, comms can prepare copies to communicate about it, BD can push it to projects and partners. | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just made client name lowercase for now. I think whatever reads best as these are then used in insight dashboards.
The dashboards are then supposed to be public.
@chair28980 what do you prefer?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@fryorcraken i prefer lowercase 😄
- OR MAY be tracked as a single GH issue | ||
- that MUST be labelled with related _Epic_ label (`E:...`), | ||
- OR MAY be tracked as a GH Pull Request | ||
- that MUST be labelled with related _Epic_ label (`E:...`), | ||
- that MUST have a reference to the related GitHub _Task_ or _Epic_ issue |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IMO, a Task with sub-Tasks is an Epic. Then, I don't see the need for a Task to keep a list of other Tasks
Can (1) be done, delivered and useful to developers and users without (2)? If so, then I would consider (1) as a milestone. and (2) as a different milestone. The idea is to have minimal scope for the milestone so we can push them from research to dev rel asap. In the case of (1) and (2). If I remember correctly as soon as (1) is done in go-waku and nwaku, Status will want to use it. Likely before (2) is finished. IMO, this also makes it simpler to understand what is done, and what remains to be done. |
I also accept we need some flexibility for research. Thinking incentivization for example. Research can focus on having a bear minimum PoC but then consider that such PoC would be useless without some addition. In this case, the "research epic" is not really completed. The work can continue with a second PoC. Once a useful PoC is out, then the scope of the PoC makes the milestone scope and gets pushed across to dev, docs, dev rel etc. Remaining work can then be scoped in a new milestone. |
@Ivansete-status (not sure why I could not comment).
Similarly to above. The aim is to scope epics to a specific team. Now, to achieve your team epic (e.g. This framework is very flexible on how your organize the task. Whether it's a bunch of GitHub issues on the repo, or just a check list in the epic issue, or both. As long as:
This way nobody has to remember to set epic labels in PRs. |
I agree with this approach but note that it deviates from the approach of approach of fewer, larger milestones. |
It can. This is just an example, though. There are other milestones with interdependent "subcomponents" that becomes a bit difficult to schedule as individual milestones with clear user benefits. Take the milestone to provide basic service protocol incentivization: we could divide this into milestones each for Store, Filter, Lightpush, etc. but this now becomes a breakdown that does not quite match the practical reality. We're more likely to complete this as a Store PoC, followed by generalisation to all service protocols and then concerted dogfooding to come up with a blueprint for productionisation. Each of these could be communicated as a milestone in its own right, but the "clear user benefit" IMO is best expressed as the overall goal of "basic service protocol incentivization". Some of these fine-grained milestones may also not even impact any team other than the Research team - PoCs for example can be done up to production plan without any other team involvement. Epics would then allow us to differentiate which tasks, towards the same milestone, belong to which teams. That said, this is mostly a matter of semantics and organisation, so I'm also happy to use finer-grained milestones. |
I think it's important to go back to the reason why the new process is designed as it is and I realized I may have not expressed it clearly. The attributes I am aiming for are:
I understand that you are saying that research may need several PoC before we can handover to dev. I think it's fine if we have a system where a team may have several epics under a milestone. E.g: Milestone: Store Incentivization
Then, once All PoC are done and ready to be handed over:
The point of having a process and some guidelines is to make it easy to operate with the wanted attributes (see above), and hard to go against the attributes. In the case you mentioned, there are 2 paths:
I would argue that (1) is the preferred path. |
I am merging to also re-org the files and avoid conflicht with weekly update but we can do more changes down the line. |
No description provided.