Ddev

Europe/Zurich
2/R-014 (CERN)

2/R-014

CERN

10
Show room on map
Zoom Meeting ID
62504856418
Host
Federico Stagni
Useful links
Join via phone
Zoom URL

# DIRAC Development Meeting (Ddev)

- **At CERN:** Federico,  Alexandre, Chris
- **On Zoom:** Alexandre, Luisa, Stella, Heloise, Loris, Natthan, Janusz, Hideki, Ueda, Jorge, Mazen, Ryan
- **Apologies:** Andrei


## Product Goals & Roadmaps

- Transition to DiracX:

```mermaid
flowchart LR
    subgraph CWL["CWL"]
        CWL1("CWL submission endpoint")
        CWL2("CWL production system")
        CWL3("Transformation system machinery"):::blocked
        CWL4("Use CWL natively in new matcher"):::blocked
    end

    subgraph Core["Core"]
        CoreTasks("Tasks")
        Core2("RSS")
        Core3("DMS")
    end

    subgraph WMS["WMS"]
        WMS1("Matcher"):::blocked
        WMS2("Pilot authentication")
        WMS3("Pilot submission"):::blocked
    end

    CWL3 --> CWL4
    CoreTasks --> Core2 --> Core3
    CoreTasks --> WMS1
    CoreTasks --> CWL3
    WMS1 --> CWL4
    CoreTasks --> WMS3

    click CoreTasks "https://www.github.com" "This is a tooltip for a link"

    classDef done fill:#B2DFDB,stroke:#00897B,color:black,stroke-width:2px;
    classDef blocked fill:#BBBBBB,stroke:#222222,color:black,stroke-width:2px;

    subgraph Legend
        L2("Completed"):::done
        L1("Ready for work")
        L3("Blocked"):::blocked
    end
```

- CWL integration:
![](https://codimd.web.cern.ch/uploads/upload_190b20d13cb4b3543a96af631ca1967d.png)


## Refinements 

### Needs triage
https://github.com/orgs/DIRACGrid/projects/30/views/7

**Goal: build a shared understanding of the project.**

> DIRAC
- [Deterministic proxy files for CEs](https://github.com/DIRACGrid/DIRAC/issues/8453)
- [CPUTimeLeft issue](https://github.com/DIRACGrid/DIRAC/issues/8416)
- [Sub not cleaned when user is removed](https://github.com/DIRACGrid/DIRAC/issues/8191)

> WebAppDIRAC

> diracx
- [Provide documentation to deploy diracx in a container](https://github.com/DIRACGrid/diracx/issues/798)
- [Input validation (numbers)](https://github.com/DIRACGrid/diracx/issues/506)
- [Use ujson or orjson by default](https://github.com/DIRACGrid/diracx/issues/456)
- [Recover lost doc](https://github.com/DIRACGrid/diracx/issues/751)
- [Can't use 2 different clients within the same test](https://github.com/DIRACGrid/diracx/issues/788)
- [Add tests for job hearbeat and commands](https://github.com/DIRACGrid/diracx/issues/445)
- [Support upserts to multiple documents in OS](https://github.com/DIRACGrid/diracx/issues/401)

- [Autorest & mypy](https://github.com/DIRACGrid/diracx/issues/302)
- [Multicore accounting](https://github.com/DIRACGrid/diracx/issues/294)
- [Changelog PR](https://github.com/DIRACGrid/diracx/issues/685)
    - see my latest comment
- [CLI tests](https://github.com/DIRACGrid/diracx/pull/104)
    - oldest PR in diracx. [name=Chris] will ressurect it later.
- [RSS](https://github.com/DIRACGrid/diracx/issues/790)

> Pilot
- [FillingMode can't be disabled](https://github.com/DIRACGrid/Pilot/issues/275)
- [Python2 drop issue](https://github.com/DIRACGrid/Pilot/issues/276)
    - what do we need exactly here to have a working `dirac.cern.ch` CVMFS repo?

> diracx-charts

> dirac-cwl
- [assigning an output sandbox to a job from the api](https://github.com/DIRACGrid/dirac-cwl/issues/92)
- [dirac-cwl executor tests](https://github.com/DIRACGrid/dirac-cwl/issues/116)

**Should we close these ones (as not planned)?**
> DIRAC
- [Add doc on how to write scripts that interact with DIRAC](https://github.com/DIRACGrid/DIRAC/issues/7115)
    - Does anyone want to write such a documentation? Would it be useful? (I don't think anyone has complained so far)


### [Temporary Section] In progress, predating the new organization

https://github.com/orgs/DIRACGrid/projects/30/views/8

Various people still need to deal with old and staled PRs. We will take them into account in the next sprints. 

> diracx
- [feat (JobDB): pydantic datetime validation](https://github.com/DIRACGrid/diracx/pull/477)
    - Plan to be processed after LHCb Week (Sprint8: Feb 19th - March 5th)

> DIRAC
- [Summary tables](https://github.com/DIRACGrid/DIRAC/pull/8199)


### External dependencies

https://github.com/orgs/DIRACGrid/projects/30/views/9

---

[Planning Poker](https://en.wikipedia.org/wiki/Planning_poker)
Story points values (based on Fibo)
- `1pt`: Trivial, very clear (small bug fix, config change)
- `2pts`: Small, well understood (small feature, clear requirements)
- `3pts`: Medium, some unknowns (moderate feature)
- `5pts`: Large, significant complexity (major feature, integration)
- `8pts`: Very large, many unknowns (should probably be split)
- `13+pts`: TOO BIG - must split!
- `?`: not enough knowledge to answer (remember it's ok to ask any questions)

## Sprints

### Planning (Velocity and Planning Poker)

- Backlog: https://github.com/orgs/DIRACGrid/projects/30/views/3
- Current Sprint: https://github.com/orgs/DIRACGrid/projects/30/views/1

![](https://codimd.web.cern.ch/uploads/upload_e90e7429bc3075363711670a978a7593.png)


**Average Velocity: 3.07 x FTEs** *Last update: Jan 21st*

#### :warning: Velocity is a planning tool, not a performance target

- Velocity going down is NOT bad
- Velocity going up is NOT always good (might mean over-estimation)
- Velocity varies sprint-to-sprint
- We track it to improve estimation, not to judge people

**What affects velocity:**
- Estimation accuracy (we're still learning)
- Complexity of work

**Our focus:** Delivering value and hitting commitments, not maximizing velocity numbers.

### March 5th (IN PROGRESS):

#### Target and Context
- Chris & Christophe working on the foundations (`diracx-tasks`)
- Clean up existing issues/PRs
- CTAO can submit CWL workflows with input/output data using the RUCIO FC as jobs

#### Availability

- [name=alexandre] 70%
- [name=natthan] 20%
- [name=luisa] 
- [name=loris] 60%
- [name=stella] 20%
- [name=jorge] 70%
- [name=ryan] 5%
- [name=federico] 10%
- [name=heloise] 40%
- [name=christophe]
- [name=chris] 10%
- [name=janusz] 10%
- [name=mazen] 10%

4 FTEs * 4 = 16 story points

Expected Story Points: 47
Persons: 4
Expected Velocity: 11.7

#### Sprint Planning: 

- Backlog: https://github.com/orgs/DIRACGrid/projects/30/views/3
- Sprint: https://github.com/orgs/DIRACGrid/projects/30/views/1

### February 19th (DONE):

Expected Story Points: 65
Persons: 4
Expected Velocity: 16 :warning: 

*38 Story Points / 4.4 people = 8.6 velocity*

Comments:
- French holidays
- [name=Alexandre] was more available than expected, but did not manage to quickly follow all the PRs.
- A few tasks have been delayed (10 SP): waiting for further discussion on scheduling and diagrams for new LHCb workflows
- Lot of "unplanned" items: expected as long as we have to deal with the large backlog of old items.

#### Sprint review: https://github.com/orgs/DIRACGrid/projects/30/views/11

Related to our goals:
- **DIRAC to DiracX transition:**
    - More DiracX documentation
    - Mattermost notifications about PRs to review
    - Renovate in place to auto-update the dependencies
    - Proxy registry for `diracx-charts` (avoid rate limits, ...)
    - Follow latest sqlalchemy changes

- **CWL integration:**
    - New dirac hints design pre-approved by CTAO and LHCb and integrated into the code: not used by default yet
    - `dirac-cwl` python and conda-forge packages

- **DIRAC maintenance:**
    - [Certification documentation for developers](https://github.com/DIRACGrid/DIRAC/issues/8449)


#### Sprint retrospective

*The sprint is a boat :boat: ; we are trying to reach an island (target); identify anchors (what slowed you down), wind (what helped), and rocks ahead (risks for next sprint)*

:warning: **Focus on the process, not people. We're here to improve together! 🚀**

**:anchor: Anchors (what slowed you down)**
- *Example: Unclear requirements on X; Waiting for Y delayed Z; ...*
- As a reviewer: hard to follow PRs that are ready to be reviewed. Should be mitigated with the system [name=Chris] set up during the sprint.

**:cloud: Wind (what helped)**
- *Example: Good communication in weekly meetings; Quick code reviews; Clear acceptance criteria on user stories; ...*

**🪨 Rocks (risks for next sprint)**
- *Example: Team member K on vacation; Dependency on external API L; Technical debt in M; ...*
- LHCb week

---

### Previous Sprints
#### Summary

- February 5th (DONE):
  - *29 Story Points / 3.1 people = 9.4 velocity*
  - Comments:
    - LHCb-CERN had a computing workshop
    - Various people worked on old PRs I did not take into account :warning:


- January 21st (DONE):
  - *6 Story Points / 2.5 people = 2.4 velocity*
  - Comments:
    - LHCb-CERN had a team retreat, LHCb-Spain had a conference.

- January 7th:
  - *15 Story Points / 3.9 people = 3.8 velocity*
  - Comments:
    - No specific comment, the sprint was split by the holidays.

- December 10th (DONE):
  - *6 Story Points / 3 people = 2 velocity*
  - Comments:
    - About the same as the previous sprint: still a gap between expected/actual availability

- November 26th (DONE):
  - *6 Story Points / 3 people = 2 velocity*
  - Comments:
    - Much lower than the previous sprint because it included tasks started before the sprint.
    - Lots of "almost done" PRs: we are improving the description of the tasks and their size but still not enough (each task should bring value though).

- November 10th (DONE):
  - *22 Story Points / 4.3 people = 5.1 velocity*


#### Actionable Results from the Retrospective

- **Action:** Better view of the PRs ready to be reviewed vs needing changes.
  - Owner: developers
  - When: Sprint8
  - Status: 19/02/26 In Progress
- **Action:** Better communicate when a PR is going to be big, as soon as possible. Split the work in this case.
  - Owner: developers
  - When: Sprint6
  - Status: 21/01/26 DONE
- **Action:** Better use of the mattermost channel to get reviews on a given PR
  - Owner: everyone
  - By when: Sprint3
  - Status: 04/02/26 DONE
- **Action:** Define estimates and velocity based on Sprint2's results, taking into account external contributions (bonus Story Points) and availability
  - Owner: alexandre
  - By when: Sprint3
  - Status: DONE
- **Action:** Better define the scrum roles
  - Owner: alexandre
  - By when: Sprint5
  - Status: DONE
- **Action:** Better define `DONE` criteria (what should be included into the PR, and how to make sure we are not introducing too much technical debt)
  - Owner: everyone
  - By when: Sprint2
  - Status: DONE
- **Action:** Avoid planning dependent tasks in a same sprint
  - Owner: everyone
  - By when: Sprint2
  - Status: DONE

## AOB

 

There are minutes attached to this event. Show them.
    • 10:00 12:00
      Dirac(X) developers (Ddev): Dirac(X) developers
      Convener: Alexandre Franck Boyer (CERN)