ONAP Open Source Practice Codifying Upstream First with Lessons from OpenDaylight, OPNFV and OpenStack Marcus Williams - Intel Dec 12 , 2017.

Slides:



Advertisements
Similar presentations
DR. STRANGEBLOG Or, how I learned to stop worrying and love classroom technology.
Advertisements

Register Laulima Workshop for Instructors Solutions to help you engage your students through Laulima.
The “Lifecycle” of Software. Chapter 5. Alternatives to the Waterfall Model The “Waterfall” model can mislead: boundaries between phases are not always.
IS 214 Needs Assessment and Evaluation of Information Systems Managing Usability © Copyright 2001 Kevin McBride.
Transitioning to XP or The Fanciful Opinions of Don Wells.
Oct. 30, 2003CS WPI1 CS 509 Design of Software Systems Lecture #9 Thursday, Oct. 30, 2003.
When will our bugs be fixed? When will our new features be added? When will the next release come out? Is my server up-to-date? Users Committers Program.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
Every day 83 million people attend 11.5 million meetings.
Approaches to ---Testing Software Some of us “hope” that our software works as opposed to “ensuring” that our software works? Why? Just foolish Lazy Believe.
Rapid Prototyping Model
Implementing Total Quality Management
CSE 486/586 CSE 486/586 Distributed Systems PA Best Practices Steve Ko Computer Sciences and Engineering University at Buffalo.
COMP 208/214/215/216 Lecture 2 Teams and Meetings.
Created by: Maria Abrahms Modified Date: Classification: How to get it done Contributing to OpenStack.
Computer Science and Engineering The Ohio State University  Widely used, especially in the opensource community, to track all changes to a project and.
Process is continuously improving Have Definition of Done (DoD) DoD achievable within each iteration Team respects DoD The bottom line Delivering working,
INFO 637Lecture #91 Software Engineering Process II Post Mortem and Teamwork INFO 637 Glenn Booker.
Laulima Workshop for Instructors Solutions to help you engage your students through Laulima.
INFO 424 Team Project Practicum Week 2 - Launch report, Project tracking, Review report Glenn Booker Notes largely from Prof. Hislop.
Laulima Workshop for Instructors Solutions to help you engage your students through Laulima.
Software Testing and Maintenance 1 Code Review  Introduction  How to Conduct Code Review  Practical Tips  Tool Support  Summary.
Mtivity Client Support System Quick start guide. Mtivity Client Support System We are very pleased to announce the launch of a new Client Support System.
The Internet As A Tool for Communication Mark Grabe.
Conducting Business Meetings Satorre, Joshua Jerem T. ENSP2 Instructor: Mr. Xavier Aquino Velasco - Associate/Lecturer III, FEU Tech.
Optimum Client Data Management Mike Mahone, RAB Executive VP.
Version Control and SVN ECE 297. Why Do We Need Version Control?
Tuckman’s 5 Stages of Group Development
Managing Agile Software Development Teams Using Scrum AKA: Wrangling Developers for Fun and Profit!
Value in Webinars ID: Andrea Hildreth Client: Walden University, Capstone Project.
Summative Evaluation Shasta Davis. Dimension: Preparation (Score- 4) Plans for instructional strategies that encourage the development of critical thinking,
Team Contracts We can work together! Copyright © Texas Education Agency, All rights reserved. 1.
Open source development model and methodologies.
Development process Douglas Schilling Landgraf
Chapter 3, Project Organization and Communication
Software Project Configuration Management
Continuous Delivery- Complete Guide
PROGRESSIVE COMMUNICATIONS
Open-O Project Proposal Template
Let the group project commence!
Working in Groups in Canvas
FORGE AHEAD Program Transformation of Indigenous Primary Healthcare Delivery : Community-driven Innovations and Strategic Scale-up Toolkits Module.
Jerry Yerardi • Michelle Bautista • Paolo Mercado
Managing Client’s Projects in Opensource and Being Profitable
Submitting Requests to IT
Best Practices for Engaging with Others
Taking an Iteration Down to Code
Project Management Tips
Active vs. Passive Learning and other styles of learning
X in [Integration, Delivery, Deployment]
COMP 208/214/215/216 Lecture 2 Teams and Meetings.
The Importance (and Challenges) of Teams
June HR Lunch & Learn: Introduction to Learning Circles
Are you ready to become a Young Professional?
Team Meetings Unit 3 Employability and Professional Development
Fishbowl Discussion Directions:
Git started with git: 2018 edition
Bulloch Information Session
Customer Satisfaction Survey: Volunteer Training Overview
Dave Scott – Middle School Principal – Kristin School
Handout 5: Feedback and support
Topic Leader Training 2012.
Naming & Code Reviews.
Akraino Sub-Committees
Evaluation Measures, Ongoing Improvements and Enhancement
Unit 14 Emergency Planning IS 235
Results from the 2019 Diversity Survey
Employee Cybersecurity Program
Dave Scott – Middle School Principal – Kristin School
DPDK Community Survey Results
Presentation transcript:

ONAP Open Source Practice Codifying Upstream First with Lessons from OpenDaylight, OPNFV and OpenStack Marcus Williams - Intel Dec 12 , 2017

Err on the side of too much communication ONAP is a Cross-Geo, Multi-Team, Multi-Company, Multi-Time-zone, diverse set of people with varying skill levels working in concert to develop and release a very complex Open Source platform and set of software built on other Open Source software that is developed by an even larger set of Cross-Geo, Multi-Team, Multi-Company, Multi-Time- zone, diverse sets of people What could go wrong? We prevent things going wrong by communicating often and with vigor: Asynchronous Communication Email Lists Gerrit Synchronous Communication IRC

https://lists.onap.org (Email Lists) When in doubt, send it out (cc’ed to the list) Keeps people in the loop with minimal effort Creates a record of discussions, decision points and troubleshooting Encourages others to participate in said issue, bug, feature, discussion In Open Source, Siloed conversations = BAD Siloed conversations encourage duplication of effort Siloed conversations create knowledge desserts and concentrate understanding among a few Rare instances where list should not be used Siloed conversations: Examples of non-list conversations: Sensitive discussion between committers/PTLs

Insert Synchronous Communication Tool Name Here Use public synchronous communication for immediate communication or communication that doesn’t merit sending to the list Synchronous communication builds the team Again, Siloed conversations = BAD Rare instances where private <Insert Synchronous Communication Tool Name Here> should be used Pick a tool and standardize IRC? Slack? HipChat? Does your company block said tool? Become and evangelist to get them to see the light.

Gerrit As Code Merge Record Constraint – All code review on a specific change is kept in one gerrit review (more on this later) Gerrit can be used as code merge record Historical Record Why did this code get in? (It introduced a bug that brought down the whole process…) Learning tool for future contributors Learn process of committing Learn the type of code wanted by committers Facilitates blaming the person who broke it (Just kidding, kind of) Eases rollback when things go wrong

Everyone is a Code Reviewer Everyone can contribute to code reviews Commit Process (commit message standards, keeping reviews in the same gerrit review, documentation) General good coding practices Internal Consistency of a chunk of code Even +1 with no comments is helpful Positive comments are also useful – “+1 – I really liked your use of recursion here.”

+2, +2, +1 is the new +2? Higher standards for merging code = Better code? Higher standards have higher cost Probably produce better code Varying standards used to merge code across open source projects: OpenStack Kolla requires +2, +2, +1 Often resolves as two committers +2 and one contributors +1 OpenDaylight Integration requires only +2 but committers often wait for another +1 or +2 before merge

Dummy's Guide to Reviewing with Gerrit Reviewing has high cost At each chance encourage contributors to make smaller manageable contributions to facilitate easy, thorough and quick review If pressured for time reduce time cost by turn reviewing process into iterative process Review patch to find two or three issues and post constructive comments about issues Wait for contributor to update patch Review patch again Rinse and repeat until patch is ready for merge Keep each code contribution on a single subject in the same gerrit review Discourage contributors from abandoning patches, to push new patches when they are just updating to address feedback from a review Usually a side-effect of lack of knowledge of git or the review process Higher cost for committer, as they don’t have review history to inform review -1 or -2 Stops review process until updates from contributor

No Self-Commits No Self-Commits (In case of emergency self-commit) Self-Committing is BAD for Open Source It single handedly defeats one of Open Sources greatest strengths: Code Review If you are thinking about self-committing – ask yourself these questions: 1) Have I tried to contact all of the committers who could merge this? 2) Is it absolutely urgent that I get this code in right now?

Upstream First. What's that? Code should be submitted upstream as early as possible in the development cycle so that feedback can be given and direction adjusted to adhere to project standards and code feedback The original author(s) of the code should be involved in the process and modify code to fit upstream standards, practice and feedback The author of the code should contribute and interact with the project/community where his code is pushed – ensuring a healthy community and give/take balance

ONAP is littered with committers Seriously. Approved Project pages are filled with committers from project creation but only a few on each project are active We should remove excess committers to make room for merit based promotions In the future we should be very careful about committers in project proposals

Hey, I have Committer Issues (duties) Participate in meetings Show up Take meeting minutes Have an opinion Review code Make sure project process is followed (commit messages, keep commits in single gerrit, engender knowledge of the process) Become an expert in an area of the code and be a rockstar reviewer for that area Make constructive comments and explain how contributors can fix issues Help document the process Document how the project team works in gerrit, wiki, email lists, in person Submit Code Help Develop across the project (no just your assigned silo) Role model code submission practices Fill in the gaps Help the PTL by volunteering Make sure nothing is missed by the project

What happened in that meeting? I was bungee jumping… Projects should take weekly meeting minutes and cc the list An Open Source project’s discussions, decisions and meetings should be documented and openly available One off meetings should also be summarized and sent to the list by a participant Lowers bar to entry for new contributors Allows others outside the project to stay abreast of projects status, discussion and decisions and to contribute when warranted Documents project decisions and facilitates future review for project participants Serves as a resource for those who miss project meetings

Learn from Projects that Came before None of the issues ONAP faces are new Let’s look to other Open Source Projects as a guide to extending and improving ONAP open source practices

Thank You Marcus Williams – Network Software Engineer – Intel IRC: mgkwill Twitter: mgkwill Web: www.mgkwill.com