You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 19 Next »


This is just a draft version put together to capture the feedback provided during the meeting and present my point of view based on my experience in other open source projects

Current state

  • Patches are submitted via gerrit
  • Architecture is described on a wiki and (sometimes) later migrated to read the docs
  • We have a waterfall-ish development model with clearly distinguish planning, designing, implementation and testing phases
  • There is a lot of paper work to be done at every milestone
  • Features for every release are described globally (per release) and approved by TSC in the beginning of each release
  • We have 2-3 releases per year

Glossary

Feature - a high level design of new functionality that impacts multiple components. Has to be approved by subcommittees, impacted PTLs and TSC. Just technical details, no resource allocation.

Spec - a detailed level design design of a change that is planned but focused on a single component. Has to be approved by impacted project Team. Just technical details, no resource allocation.

Best practice - "codding standard" (may be code related, security related, configuration related etc.) recognized by the community that should be followed. Approved by TSC, has to be followed by any new code entering the tree.

Global requirement - best practice chosen by the TSC to be applied to whole ONAP code base during a given release.

Assumptions

  1. DON'T BREAK THE MASTER!
  2. TSC defines the vision and sets the direction for ONAP project
  3. Architecture team consists of best ONAP specialists that can clearly asses whether the proposed feature is aligned with long term ONAP vision and is aligned with ONAP design principles
  4. Security Team consists of best ONAP security specialists that can clearly asses whether the proposed feature does not compromise ONAP security standards
  5. Anyone is free to propose a new feature into ONAP
  6. Anyone is free to asses the proposed feature form a technical point of view
  7. Based on recommendations from subcommittees TSC makes the final decision whether the new feature should be approved or not.
  8. Anyone is free to propose new best practice
  9. TSC makes the final decision whether the new feature should be approved or not.
  10. All approved best practices are checked in gerrit review and enforce for any new code that is entering the tree
  11. Global requirements are mandatory for all projects. If project fails to deliver global requirements it is descoped from the release (previous release containers are used).
  12. Before project meets all global requirements for given release it cannot make backward incompatible changes that are impacting other components.
  13. Project may release a new docker image at any point of the release (taken into account previous point)
  14. PTL is free to define additional rules and quality metrics that has to be met before the patch can be merged
  15. Anyone is free to submit any patch at any point of the time
  16. It's PTL & committers responsibility to make sure that patches they merge for a given branch obey to the rules set by TSC (best practices, release phase)
  17. PTL and committers are responsible for the project condition
  18. PTL and committers have a full control over what and when should be merged (ie. They can prevent functional patches from being merged until global requirements for their project are met

Proposal

  1. Main requirements artifacts are: Specifications, Features and Global Requirements
  2. Split  the set of work items into Global Requirements set by the TSC and Specifications and Features from the projects and use case teams that are set by the working teams.
  3. Global Requirements are created and managed by the TSC
  4. Specirfications and Features are created and managed by the working team , including cross project commitments.
  5. Global Requirements are specific to a release.
  6. Specifications and Features can span releases and can scheduled to be "available" once all items are complete and tested. This is the part that is "getting on the train" and can be flexibly scheduled.

Development

  • Keep 3 releases in a year:
    • W8
    • W24
    • W43
  • Divide the release in 3 sections:
    • R - 16 Release kickoff  (example April 2020 for Guillan after Frankfurt signoff)
      • Start estimating which global requirements can be met in this release (security metrics, python upgrade, infra etc)
      • Start socializing global requirements with PTLs so that every one knows what should be done
      • Ideas for global requirements should be provided before the kickoff, this time slot is only for choosing ideas for this release
      • Project/Use Case requirements work is ongoing during this phase as well.
    • R - 14 Global requirements defined
      • TSC approves a list of global requirements that has to be address by the teams in this release
    • R - 10 Spec freeze   (example August 2020 for Guillan)
      • All features that are going to be implemented in this release should be approved (Global and Specification and Features from Project/Use Case)
    • R - 5 Feature freeze  (example September 2020 for Guillan)
      • End of accepting patches containing new features for this release
      • Start of bug fixing period
      • Release branch is being created for all participating projects
        • particularly OOM so that we can start to focus on the release package of helm charts and corresponding docker containers
    • R - 3 Beginning of RC-phase (example October 2020 for Guillan)
      • RC every end of week
      • Bug fixes submitted for both master and release branch
      • Feature development may continue for approved specs in the master branch
    • R - 0 - final testing, release notes and Sign-off  (example October 2020 for Guillan)
    • R - 16 of next release (example November 2020 for H release)
  • Assumptions:
    • Architecture (spec) work is being done continuously
    • Every spec has below stages in its life cycle:
      • Proposed
        • The spec has been proposed by the author for a review by affected parties
      • Approved
        • The spec has been reviewed by interested parties and approved
        • In this point we agree that the design is good and if we find the resources it can be implemented
      • Scoped for the release
        • There is a volunteer to work on this particular spec within this release
        • The work may be continued in next release with PTL and TSC consent.
      • Implemented
        • The spec has been fully implemented and should be mentioned in the release notes
      • Dropped
        • The spec has been dropped because no one is willing to work on it or it became out of the date

Glossary

global requirements - must have requirements for projects like security, python upgrade etc

Calendar

As Frankfurt is going to be release on 23rd of April we need to adjust our release schedule for next year. I propose to extend the G release and start it on 30th of April and have Sign-off on 22nd of October. After that we would continue as defined in the proposal.

Please move the calendar to March to see the impact of our proposal on the release cycle.

  1. EDIT THE CALENDAR

    Customise the different types of events you'd like to manage in this calendar.

    #legIndex/#totalLegs
  2. RESTRICT THE CALENDAR

    Optionally, restrict who can view or add events to the team calendar.

    #legIndex/#totalLegs
  3. SHARE WITH YOUR TEAM

    Grab the calendar's URL and email it to your team, or paste it on a page to embed the calendar.

    #legIndex/#totalLegs
  4. ADD AN EVENT

    The calendar is ready to go! Click any day on the calendar to add an event or use the Add event button.

    #legIndex/#totalLegs
  5. SUBSCRIBE

    Subscribe to calendars using your favourite calendar client.

    #legIndex/#totalLegs

  • No labels