How 2 contribute to Mozilla code base

Slides:



Advertisements
Similar presentations
Introduction To GIT Rob Di Marco Philly Linux Users Group July 14, 2008.
Advertisements

Simple Git Steve Pieper. Topics Git considerations and Slicer Git as if it were svn Git the way it is meant to be.
Version Control What it is and why you want it. What is Version Control? A system that manages changes to documents, files, or any other stored information.
Version Control Systems Phil Pratt-Szeliga Fall 2010.
Version Control with git. Version Control Version control is a system that records changes to a file or set of files over time so that you can recall.
Introduction to Git and Github Joshua imtraum.com.
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
Welcome to the 3 rd Junior Session Prepared by Eslam Mohammed Diaa El-Din Twitter
With Mercurial and Progress.   Introduction  What is version control ?  Why use version control ?  Centralised vs. Distributed  Why Mercurial ?
Git – versioning and managing your software L. Grewe.
Version control Using Git Version control, using Git1.
ITEC 370 Lecture 16 Implementation. Review Questions? Design document on F, feedback tomorrow Midterm on F Implementation –Management (MMM) –Team roles.
Version Control Systems academy.zariba.com 1. Lecture Content 1.What is Software Configuration Management? 2.Version Control Systems (VCS) 3.Basic Git.
Information Systems and Network Engineering Laboratory II DR. KEN COSH WEEK 1.
NON FS CITRIX CLIENT INSTALLATION – ACCESSING ROSS FROM NON AGENCY NETWORK (Utilizing Rental PCs on Non Agency Network) ISSUES: Utilizing ROSS Production.
1 Applied CyberInfrastructure Concepts ISTA 420/520 Fall
Mercurial – Revision Control System. Overview of Revision Control Systems (IBM) Rational ClearQuest Perforce Centralized systems – CVS, Subversion/SVN.
Version Control Systems. Version Control Manage changes to software code – Preserve history – Facilitate multiple users / versions.
Version Control System Lisa Palathingal 03/04/2015.
Intro to Git presented by Brian K. Vagnini Hosted by.
It’s not just an insult from Harry Potter!. What is Git? Distributed Version Control System (DVCS) – Compared to a Centralized Version Control System.
Introduction to Git - Chirag Dani. Objectives Basics of Git Understanding different “Mindset of Git” Demo - Git with Visual Studio.
Installing git In Linux: sudo apt-get install git In Windows: download it from run the setuphttp://git-scm.com/download/win.
DIGITAL REPOSITORIES CGDD Job Description… Senior Tools Programmer – pulled August 4 th, 2011 from Gamasutra.
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
Jun-Ru Chang Introduction GIT Jun-Ru Chang
GitHub A web-based Git repository hosting service.
GIT Version control. Version Control Sharing code via a centralized DB Also provides for Backtracking (going back to a previous version of code), Branching.
Version Control Systems
Source Code Control For CSE 3902 By: Matt Boggus.
CS5220 Advanced Topics in Web Programming Version Control with Git
M.Sc. Juan Carlos Olivares Rojas
Git primer Landon Cox January 19, 2017.
Source Control Systems
Discussion #11 11/21/16.
I Don’t Git It: A beginner’s guide to git Presented by Mathew Robinson
Version Control Systems
Git and GitHub primer.
11 Version control (part 2)
CReSIS Git Tutorial.
LECTURE 2: Software Configuration Management
Version Control.
Discussion 11 Final Project / Git.
Version control, using Git
Version Control System using Git
Development and Deployment
Version Control Systems
Version Control System
An introduction to version control systems with Git
Version Control with Git accelerated tutorial for busy academics
Akshay Narayan git up to speed with RCS Akshay Narayan
LECTURE 3: Software Configuration Management
SIG: Open Week 1: GitHub Tim Choh.
Getting Started with Contribution to Openstack
Revision Control Daniel Daugherty
Collaboration Work Flow with Git
Advantages Project Career Divide & Conquer Collaboration
GitHub A Tool for software collaboration James Skon
Git CS Fall 2018.
Version Control System - Git
Introduction to Version Control with Git
Introduction to Git and GitHub
Patrick Cozzi University of Pennsylvania CIS Fall 2012
Version Control with Git and GitHub
Version/revision control via git
Git GitHub.
VERSION CONTROL SVN (SubVersioN)
Introduction to The Git Version Control System
PyWBEM Python WBEM Client: Overview #2
Introduction To GitHub
Presentation transcript:

How 2 contribute to Mozilla code base 2017/09/11 Yangyi Peng FT2 Team https://freetimeteam.org/

Outline Preface Add feature to Firefox Contribute to Mozilla flow Lesson Learned

Preface Why add a new feature for Firefox?

structure Implement the W3C webdriver in rust. Needed by geckodriver. webdriver-rust Client call minimize window command Process the minimize window command Server send the minimize window command to Marionette. Window Call minimize()

Add feature to Firefox Add minimize command in webdriver-rust https://github.com/mozilla/webdriver-rust Add minimize command support in geckodriver https://github.com/mozilla/geckodriver Add code in Marionette Should clone mozilla-central code base. https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Simple_Firefox_build

Contribute to Mozilla flow A. We should download the code base: webdriver-rust git clone https://github.com/mozilla/webdriver-rust.git geckodriver git clone https://github.com/mozilla/geckodriver.git mozilla-central a. download bootstrap.py: https://hg.mozilla.org/mozilla-central/raw-file/default/python/mozboot/bin/bootstrap.py b. python bootstrap.py c. sudo apt-get install mercurial d. hg clone https://hg.mozilla.org/mozilla-central e. hg clone mozilla-central mozilla-clean

Contribute to Mozilla flow B. Sign in the Bugzilla to create bug for above components. You can sign in with your github account.

Contribute to Mozilla flow C. Build each component and verify them in our local side. webdriver-rust No need to build, just add this part patch in the source code. 2. geckodriver Need to use the local webdriver-rust, use Cargo tool to build the geckodriver binary. Copy the built out geckodriver to the PATH like /usr/bin or /usr/local/bin. mozilla-central Need to run python bootstrap.py, then ./mach build

Contribute to Mozilla flow D. Create the official patches in the clean code base Should notice the sequence of the patches: webdriver-rust https://github.com/mozilla/webdriver-rust/pull/105 geckodriver https://reviewboard.mozilla.org/r/158136/ marionette https://reviewboard.mozilla.org/r/162018/diff/2#index_header test cases https://reviewboard.mozilla.org/r/170192/diff/1#index_header

Contribute to Mozilla flow E. Wait maintainer to review and merge May be need modify patch many times, need be proficient with the Mercurial tool. Or you can configure the git tool for mozilla: https://sny.no/2016/03/geckogit

Lesson Learned Test cases driven coding

Lesson Learned Distribution tool must be skilled

Lesson Learned hg compared with git hg clone git clone hg pull & hg update -C git pull hg update -C -r git reset --hard hg add git add hg remove git rm hg diff git diff hg commit git commit hg status git status hg log git log

Lesson Learned Know how to use local check command ./mach lint testing/marionette/driver.js help to check the Javascript grammar error. ./mach vendor rust help to download all 3rd party dependencies to the source code. ./mach wpt-manifest-update help to update the new configuration of the manifest ./mach marionette test help to run marionette-test [file] …

Lesson Learned D. Do not fear to create Bugs & Patches

Question: Why this code will cause build break? resp.body = { x: win.screenX, y: win.screenY, width: win.outerWidth, height: win.outerHeight, state:state, };

Any Question?