Summary
    Baseline v1
    Empty

    Functional overview

    Why do we do that ?

    The goal is to address a tracability / auditability issue. When something is happing on a project (good or bad) it's hard to tell why it's happening. We can observe that a burndown doesn't go down or a burn-up stay alarmfully flat but why ?

    Tuleap Baseline aims to give an insight of what changed between 2 points in the time.

    Let say you have a 6 month long project. At T0 you did an handshake and all stakeholders agreed around a Budget+Feature+Time perimeter. 1 month (T1) later you do the project review and the team annonce they will need 1 more month  to complete the project. Stakeholders are not happy but if you are able to show them that 3 more requirements/stories/bugs were added in between and that the main story acceptance criteria were rewritten at 80%, the discussion will be easier to drive.

    In Tuleap Baseline, T0 and T1 are 2 snapshots (or baselines) and what you observe between the 2 snapshots is a "Diff" (we should find a better term, maybe snapdiff).

    In one line: Tuleap Baseline will save your a** during your next customer / steering meeting ;)

    Behaviour

    Perimeter of v1

    The first version of Tuleap Baseline will

    • be based on artifacts only. Later versions will support other objects will be included in the BL like document versions, deliverys, code, etc).
    • leverage the release definition we have in Agile Dashboard Scrum. Later version will allow to select any kind of artifact and to select how their relative artifacts (links) are consumed.

    Set a baseline/snapshot

    It's possible to set a baseline from the Planning (and maybe from the Artifact view of the Release artifact).

    When a baseline is set, it's attached to a "changeset" of an artifact (think of follow-up comments) as well as all changesets of the linked artifacts following the Planning definition. Only the "Backlog" is taken into account (for instance for agile project epic, stories, bugs). The milestones (sprints, sub-releases, etc) are excluded of the snapshot (otherwise it will polluate the output).

    Once set the baselines are visible in the artifact history (follow-up comments) next to the follow-up comment when the baseline was set.

    Observe a baseline

    A baseline can be observed. It means that you can get a textual representation of all the artifact like a document.

    # Release 1.0
    
    Status: On going
    Start date: 2019-01-01
    Duration: 120
    Scope: ... some text ...
    
    ## Implement some stuff
    
    Title: Implement some stuff
    Status: Todo
    Estimated effort: 30
    ...

    The stucture of the document (titles) is given by the level of depth in artifact tree and the fields that are displayed (and in which order) are selected in the "Baseline" configuration. This configuration is done tracker per tracker.

    This HTML document can be exported in PDF.

    Compare two baselines

    The same way you can observe a baseline, you select 2 of them (related to the same release) and obtain a diff between the 2 (as a diff).

    # Release 1.0
    
    Status: no change
    Start date: no change
    Duration: 120 -> 150
    Scope: no change
    
    ## Implement some stuff and some other stuff
    
    Title: Implement some stuff -> Implement some stuff and some other stuff
    Status: no change
    Estimated effort: 30 -> 50
    ...

    Note: the exact format to be really usable is yet to be precised. Do we need to base the diff on the "Observe" configuration (what about fields that changed outside that scope) ? Do we need to display fields that didn't change ? If yes, how to we display that (either "no change" or use colors or use of strike ...).

    It's possible to "persist" the diff. It becomes then an "object" with and ID, an URL and a cross ref. This way we can make a reference to this diff if we change things in the scope of project (eg. "Remove some acceptance criteria after review of diff #...").

    Known issues / Questions

    • Currently attachments are permanently deleted. This can cause issue if we want to retrieve artifact at a given changeset.
    • How does a diff behave on a user selectbox if a user was selected and became suspended?
    • Should it be a plugin (plugins/baseline, plugins/baseline_trackers, …) or part of the core?
    • Reverse links are not snapshotted in the artifact (eg: fixed_in in request/release trackers)
    Progress
    Empty
    Empty
    Closed
    Details
    #12142
    Nicolas Terray (nterray)
    2019-05-24 13:23
    2018-08-17 15:06
    Attachments
    Empty
    References
    Referencing epic #12142

    Git commit

    tuleap/tuleap/stable

    Add helper to serialize DateTime to JSON 7d2f045166
    Format ProjectResource according style standards 6010b87850
    tasks #12142: fix tests in grunt watch 913d2654e2
    Update documentation 384cfab27a
    Prevent baseline deletion when associated to saved comparison(s) 95931ace26
    File cleaning and fix copyrigth 1b9f237edc
    Show comparison comment in content pane 42b340d456
    fix: Parse Date picker in backend format cb2ab5328f
    Revert "Add initial effort to baseline and comparison pages" 073cbee308
    Do not show all artifacts filtered message when no artifact in baseline f2a347a125
    Expand / collapse baseline artifacts in comparison page 40a2c01c73
    Extract <collapsable-content> 10e1e2ba66
    Display snapshot date in the baseline page 758c831ff0
    Rename <home-page> to <index-page> 2a3a1ba3ad
    Add initial effort to baseline and comparison pages a52922dfd1
    Extract component <trackers-multi-select> fe71eff38c
    Expand / collapse baseline artifacts 5dcf3acc13
    Add snapshot_date parameter to POST baselines 5d65fbb952
    Enable time in NewBaselineModal datePicker e9a2308954
    Fix font size in baselines table header 6a48f5b3d7
    Filter trackers in baseline page 17b15a32db
    Store baseline content in VueX c0cb70bc31
    Add optional date picker for baseline creation 364eb045dd
    Factorize artifact skeleton between baseline and comparison 7346174ac5
    Fix baseline margins 3d1134ce2d
    Remove nested tlp-pane-container in baseline page fc2953a43d
    Fix query count limit on comparison 56d9b8553e
    Rename some variables f7cee56a6b
    Make the name of a comparison optional 4560d54508
    Optimize http queries in comparison page 47c15bdda5
    Remove author and name column from comparison list 594b748e6a
    Delete comparison after confirmation b8ac33b37e
    Rename FieldComparison properties a177a3b666
    DELETE baselines_comparisons/:id 845146c4f9
    Render real statistics in statistics component 6633d177cf
    Add delete button + confirmation modal in comparison list c335189d5d
    Fix the visible space of the milestone title in comparison list 54c8ca55bb
    Move comparisons authorizations in domain services 3f62ba633b
    Display baslines in comparisons list 0bb3e32b13
    Add missing copyright 291df70414
    Improve new comparison modal UI 56a2740abf
    Fix home page UI 0d2948da81
    Rename <baselines-table> to <baselines-list> 79c09a399c
    Show comparisons list af21b7003f
    Create store module dedicated to dialog interface b6b2e75481
    Refactor baselines loading a8863a5b82
    Fix comparison layout 063d98f0fb
    Remove dead code d70e307f4c
    Rename store variables used in specs to $store 633f15c5f9
    Rename <BaselinesPage> to <HomePage> 38b31a0e58
    Group Vue components in baselines-list d781f01c0b
    Rename <BaselineTable*> to <BaselinesTable*> af24d2ad27
    Rename <BaselineButton> to <ActionButton> 8b65cd2f17
    Load comparison data with single chunk b8e43cf521
    Create REST resource dedicated to baselines comparisons 5d7c90174a
    Replace "you're" by "you are" in translations 284fdb3258
    Move baseline authorizations in domain 1444b56e7a
    GET projects/:id/baselines_comparisons f81d70fea2
    Add missing copyright 1eb1a9fb24
    Disable cancel button in modal during operation 2e151600c5
    Save author and creation date of comparison e7d75a1972
    Load baseline data in single chunk bfd823346e
    Show saved comparison cca94f3941
    Fix UI of baselines list page f2e905549f
    Fix UI of new baseline modal 8ad93788f3
    Fix UI of new comparison page 039f44e01a
    Fix UI of comparison page 3c5ff65730
    GET baselines/comparisons/:id 573c8d6072
    Save comparison 31104451ba
    POST baselines/comparison 2d665991e6
    Remove parameter assignment 8f698b7ad4
    Factorize current user build in dedicated trait 4cc6417a4f
    Create Project factory d539e5e1d9
    Delete baseline ca358c004e
    Factorize modals 8b01bd2f92
    Fix variation of new baseline button width 4761f81034
    Fix component name of ArtifactComparison bf2e5cbcdc
    Fix translation 0f19a815a4
    Remove custom css class for breadcrumb db448bb2d7
    Do not use business layer in controller to map entities 2db39edd5a
    Rename phpunit/Baseline to Domain d2f708c591
    Create global notification b0e94c85c2
    Setup Karma tests in the CI pipeline 6b5e5686b2
    Fix time zone manipulations in front bc644c0e4a
    Fixup not pertinent right on artifact cdc6725a2f
    Factorize breadcrumb 693c54f7d4
    Refactor 403 and 404 rest exceptions d76cdc7e45
    Enable VueX strict mode in development babc822c09
    Assert http code in all rest tests 8555fcb3cb
    Add missing translation e66b5ea606
    Clear translations 09caf2cbdf
    Replace DateTime by DateTimeInterface or DateTimeImmutable bcbd9c174d
    Rename include/Baseline to Domain 7d2ad77bfd
    Fix console error when navigating from baseline page to baseline page 016aeb0a2d
    Document backend architecture 10fda7eaba
    Update data model documentation b1d9981808
    Make milestones clickeables in Baselines list 0dce83aa54
    Fix the name of the ContentBody component a115b30c9f
    Store baslines in global state dba3ae5406
    Filter baseline artifacts to get only artifacts from backlog 721238ed21
    Reduce technical debt on BaselineArtifactRepositoryAdapter cef20ada58
    Fix GET baselines/:id and GET baselines/:id/artifacts when user cannot access baseline artifact 462b10e9db
    add delete baselines/$id 1b5e647fc8
    Remove concatenation used to build a SQL query string 1aa50707d7
    Fix artifacts comparison 9307e303cd
    fix Artifacts component name 10be03634d
    Fix mandatory form fields in red in Firefox dd6702799c
    Fix radio buttons trimming in scrollable list 085142477c
    Standardize empty message UI 8ed0855f81
    Remove code smells 99cab1ee8c
    Remove CurrentUserProvider from BaselineService's dependency 883da39f59
    Add baseline icon for service 52e4bd70f4
    Fix html validity with <span> children f9dac1abd1
    Update document title when navigating 40554fadd8
    Remove useless code in ContainerBuilderFactory c0d1222aa8
    Rename Vue components a84002e98b
    Refactor BaselineContent spec ba9e3300f1
    Fix some front tests 4fadd00dab
    Fix baseline access when plateform does not allow anonymous access 10cc02bb4a
    Show author badge 6e876680fa
    Fix html injection vulnerability dc3f585654
    Fix BaselineLabelTest by defining snapshot_date dynamically cf18d3adc0
    Limit deep tree of Artifacts 0c4f6189e1
    Reverse milestone order to follow agile dashboard order 2877948483
    Add missing OPTIONS d3aa61f1ed
    Harmonize date format with Tuleap c4307ecab4
    Baseline service scope must be system 2ea532aa4d
    Reload NewComparisonModal when is opened 1c31dc5140
    Fix tracker_name returned by GET baselines/:id/artifacts 8947070dfe
    Highlight diffs in baseline comparison 9e20a7896d
    Display milestones in baselines list 6646316aec
    Create new-baseline folder in front sources b1b74c64b4
    Fix baseline and comparison styling 6d96fbfdf2
    Use baseline label skeleton in baseline view 486930953b
    Formate date for humans e020ba35d1
    Prevent baseline and comparison conflict with field contents 709eae1008
    Display artifact titles of compared baseline (instead of reference) 260b35d545
    Add status field in baseline comparisons 0a3d54e290
    Translate semantic field labels 597dec2541
    Fix javascript warning in baseline page 33e82536c6
    Add link to all artifacts shown in baselines and comparisons 2aca42873b
    Extract ArtifactLabel component 7bce3a8e48
    Compare descriptions between baselines b6963f2d86
    Show field values as html 7c81a139ff
    Show comparison content with only artifacs tree d1158096e3
    Add status in BaselineArtifact view 6b51481b77
    Prevent comparison between baselines with different root artefacts 59eef4d58b
    Fix page not found when refreshing baseline or comparison page c6428406e7
    Format baselinePlugin.class.php d3070f7a97
    Move modals buttons at the top right in baseline home page d6f53602df
    Fix some translations 688afc07bd
    Create baselines comparison page f5cb1ff5aa
    Fix NewComparisonModal when baselines is not loaded 185814ad1e
    Improve baseline UI 78c838a414
    Improve dev UX with return types declaration 47001de7cf
    Fix baseline statistics margin on small screen fcbd409d73
    Fix linked artifact ids on GET baselines/:id/artifacts 3a4478d426
    Fix GET baselines/:id/artifacts when given id does not exist cbabb5e644
    Replace custom router by Vue Router 7945f08cec
    Comparison creation modal c18d89418e
    Split styling file 1ccc67dd1c
    Show artifacs tree in baseline page 0aaaaf6a0e
    GET /baselines/{id}/artifacts a22655826a
    Refresh baselines list after creating a new one dcc9d83389
    Sort baselines with newest as first position a430c48b05
    Make baseline is clickeable 58c8e34ef6
    Remove unused translations f9e60f1509
    Permit all operations for super admins and project admins 618aa8d665
    Document that count of baselines is security agnostic 2e0d65272d
    Make baselines linked to an artifact (instead of a milestone) 01f660fd38
    Implement all permissions in AdapterPermissions, including baseline ones 043a1c69b8
    Create BaselineArtifact entity 8a1b45479d
    Show baseline statistics 914476fcaf
    Fix AdapterPermissions method names consistancy 8ec1b862f0
    Fix project permissions 1fafccbd1a
    Show baseline id, name, date and owner 46c8fe0e22
    Factorize model creation in tests with factories 2c05b61def
    Remove duplicate strict_types 7011e5b1fe
    Refactor permissions cf4d103d77
    Optimize author fetching 07967a7b18
    Add missing translations 65637d0f56
    Fix author in baslines view 2cf5abdc80
    Add missing copyright 74b63da405
    Add router component 6ebf4610f9
    Replace dropdown actions by a single button ab8119f580
    Fix error handling in baselines page 7c04b94c3a
    GET baselines/:id (api explorer crash) 7e4d9e7271
    Fix case in class usage 1c3e29d852
    Add missing declare(strict_types=1) 455edb04d7
    Show all baselines c5884b606a
    Fix ClockAdapterTest name 329c9cf179
    Implement GET /projects/:id/baselines in Baseline plugin 3111c69962
    Refactor MilestoneRepositoryStub 8303ca6898
    Sort milestones in new baseline modal like agile dashboard 600e90242d
    Format NewBaselineMilestoneSelect.vue 6dcd66a8c3
    Create service to get all baslines of a given project 27daa80d68
    Fix Clock implementation bbbf300527
    Fix false positif risk on ClockImpl test d12f3724d3
    Extract container initialization from integration test 7085b85a96
    Rename a dependency of CurrentUserProviderAdapter 1ac67b7988
    Fix horizontal scrollbar in new baseline modal dfbe24e5ed
    Fix linting for `new baseline modal` ff25c3f46f
    Fix translation for `new baseline modal` 6642d4de26
    Translate error messages in new baseline modal 83a7e2f230
    Downgrade prettier 0975a05aae
    Fix PHP styling 72f8861b65
    Rename creation_date attribute to snapshot_date in POST /baselines response 73c0b41a2a
    Measure test coverage c09d4610ae
    Standardize repository methods 0725829d4c
    Add pdp-di dependency injection library d66c0dd787
    Update documentation 12192e9e4c
    Create security roles dedicated to baseline plugin 27e2c12f1f
    frontent: add new baseline modal 01d6f9992c
    Fix git hooks aa2395953f
    Suffix adapters with Adapter b698201a0e
    Fix ChangesetNotFoundException a4bdbfec62
    Fix hook chain 5dad1a70f3
    POST /baselines df0e930747
    Refactor BaselineControllerTest 5966dd5b1d
    Link baseline to a milestone (instead of a release) 8841538c91
    Refactor permissions 29cb947e70
    Fix BaselineController styling fa49506e1b
    Add Baseline creation service f5e9eacbcc
    Fix sonarscanner Makefile commandes d8d3880d96
    Analyze sources with SonarQube eee9810d6c
    Frontent: show artifact semantics fields 186983e505
    Backend: return the last modification artifact title, description and status (semantics fields) before given one date. fd27bccfee
    Document Baseline data model ac2f29b3e4
    Fix git hook chain script 0c8c08fa34
    Automate git hooks configuration 2dba1421cd
    Create empty rest route baselines/?artefactId=:id&date=:date 4b22f9fdb7
    Include assets in RPM packaging d79a6cf256
    Fix baseline homepage 801e961ad4
    Bootstrap vue component 31a1ba46cd

    Follow-ups

    User avatar

    The v1 of the baseline is completed (not exactly with that said perimeter). It's time to move on and defined the content of v2.


    • Description
      Something went wrong, the follow up content couldn't be loaded
      Only formatting have been changed, you should switch to markup to see the changes
    • Status changed from On going to Closed
    • links
    • Permissions set to all_users
    • Category set to
    User avatar
    • Description
      Something went wrong, the follow up content couldn't be loaded
      Only formatting have been changed, you should switch to markup to see the changes
    User avatar
    • Summary
      -Baseline 
      +Baseline v1 
    • Description
      Something went wrong, the follow up content couldn't be loaded
      Only formatting have been changed, you should switch to markup to see the changes
    User avatar
    • Description
      Something went wrong, the follow up content couldn't be loaded
      Only formatting have been changed, you should switch to markup to see the changes
    User avatar
    • Description
      Something went wrong, the follow up content couldn't be loaded
      Only formatting have been changed, you should switch to markup to see the changes
    User avatar
    • Description
      Something went wrong, the follow up content couldn't be loaded
      Only formatting have been changed, you should switch to markup to see the changes