Tracking FreeBSD in a Commercial Environment

Similar documents
Tracking FreeBSD in a Commercial Setting

CPSC 491. Lecture 19 & 20: Source Code Version Control. VCS = Version Control Software SCM = Source Code Management

Review Version Control Concepts

Ingegneria del Software Corso di Laurea in Informatica per il Management (D)VCS. Davide Rossi Dipartimento di Informatica Università di Bologna

Git Workflows. Sylvain Bouveret, Grégory Mounié, Matthieu Moy

SOFTWARE CONFIGURATION MANAGEMENT

ONAP Release Planning

X.Org and XFree86 Version Numbering Schemes

GIT : BEST PRACTICES GUIDE BY ERIC PIDOUX DOWNLOAD EBOOK : GIT : BEST PRACTICES GUIDE BY ERIC PIDOUX PDF

GIT TUTORIAL. Creative Software Architectures for Collaborative Projects CS 130 Donald J. Patterson

Organising benchmarking LLVM-based compiler: Arm experience

Reducing the pain of Yocto development upgrades. Michael Brown NGM Firmware Lead Technologist Dell EMC Embedded Linux Conference 2017

Home Page. Title Page. Contents. Page 1 of 17. Version Control. Go Back. Ken Bloom. Full Screen. Linux User Group of Davis March 1, Close.

Systems Software. Recitation 1: Intro & Revision Control. Quite different from 213. Our Philosophy. Partly-free lunch

Lessons Learned with Time Based Releases for the EFL

The Cost of Going it Alone Dave Neary

2/8/18. Overview. Project Management. The First Law. What is Project Management? What Are These Changes? Software Configuration Management (SCM)

Project Management. Overview

Visualizing Git Workflows. A visual guide to 539 workflows

Software configuration management

Version control CSE 403

2/9/2013 LAB OUTLINE INTRODUCTION TO VCS WHY VERSION CONTROL SYSTEM(VCS)? II SENG 371 SOFTWARE EVOLUTION VERSION CONTROL SYSTEMS

CSC 2700: Scientific Computing

Contribute To Linux Mainline

Version Control. 1 Version Control Systems. Ken Bloom. Linux User Group of Davis March 1, 2005

Configuration Management

Practical C Programming

A Brief History of FreeBSD/mips

KTH Royal Institute of Technology SEMINAR 2-29 March Simone Stefani -

Kernel driver maintenance : Upstream vs. Industry

Subversion Branching and Merging. Jan Skalický

Why BSD? Michael W Lucas

A Practical Introduction to Version Control Systems

Git Like You Mean it. Alan Ott SCaLE 16x March 8-11, 2018

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read)

Subversion Repository Layout

Outline. Introduction to Version Control Systems Origins of Git Git terminology & concepts Basic Git commands Branches in Git Git over the network

Versioning. Jurriaan Hage homepage: Slides stolen from Eelco Dolstra.

Push up your code next generation version control with (E)Git

February 2 nd Jean Parpaillon

Branching and Merging

Continuous Integration. Johannes Seitz

Source Control. Comp-206 : Introduction to Software Systems Lecture 21. Alexandre Denault Computer Science McGill University Fall 2006

Outline. Introduction to Version Control Systems Origins of Git Git terminology & concepts Basic Git commands Branches in Git Git over the network

TDDC88 Lab 4 Software Configuration Management

Source Code Management

Accessing OSIRIS and using OSIRIS through GitHub

The Rock branching strategy is based on the Git Branching Model documented by Vincent Driessen.

Version Control. Second level Third level Fourth level Fifth level. - Software Development Project. January 11, 2017

Roles and Responsibilities of Maintainers

Version Control Systems

git-pr Release dev2+ng5b0396a

Version Control for PL/SQL

The HiKey AOSP collaborative experience

A L A TEX-oriented intro to Git

Version control CSE 403

Are you Really Helped by Upstream Kernel Code?

Russell Doty Red Hat

Call for Discussion: Project Skara Investigating source code management options for the JDK sources

Version Control. Ioannis N. Athanasiadis. with slides from Solution Perspective Media and Software Carpentry

Git for Subversion users

Building and Running an Open-Source Community: The FreeBSD Project. Marshall Kirk McKusick

Warmup. A programmer s wife tells him, Would you mind going to the store and picking up a loaf of bread? Also, if they have eggs, get a dozen.

Version Control System GIT

Getting the files for the first time...2. Making Changes, Commiting them and Pull Requests:...5. Update your repository from the upstream master...

Tools for SW Projects

contribution-guide.org Release

5 REASONS YOUR BUSINESS NEEDS NETWORK MONITORING

Revision Control and GIT

About SJTUG. SJTU *nix User Group SJTU Joyful Techie User Group

Using GitHub to Share with SparkFun a

Improving Your Life With Git

FreeBSD and Git. Ed Maste - FreeBSD Vendor Summit 2018

FREEBSD BASED HIGH DENSITY FILERS

Decentralized Version Control Systems

Source control with Subversion A user perspective

Introduction to Monte Python

Intro to Github. Jessica Young

At a high level, the current OPNFV CI pipeline can be summarized as follows:

FAQ Q: Where/in which branch do I create new code/modify existing code? A: Q: How do I commit new changes? A:

The Embedded Linux Problem

CESSDA Expert Seminar 13 & 14 September 2016 Prague, Czech Republic

Welcome! Virtual tutorial will start at 15:00 GMT. Please leave feedback afterwards at:

Managing Source Code With Subversion

CS 390 Software Engineering Lecture 5 More Git

Version Control. Second level Third level Fourth level Fifth level. - Software Development Project. January 17, 2018

Git and Gerrit Workflows. Enforcing Manual & Automated Review

Managing build infrastructure of a Debian derivative

Version control CSE 403

Version Control with Git ME 461 Fall 2018

AgileSCM Release 4.1. AgileSCM Release 4.0. AgileSCM Release 3.2. New Features. Bug Fixes. New Features. Bug Fixes

git-flow Documentation

Is Server-To-Server Header Bidding Right For You? What You Need To Know

API RI. Application Programming Interface Reference Implementation. Policies and Procedures Discussion

Versioning with git. Moritz August Git/Bash/Python-Course for MPE. Moritz August Versioning with Git

Tracking FreeBSD in FreeNAS by Using Git for Newbies. Alfred Perlstein

Linux System Management with Puppet, Gitlab, and R10k. Scott Nolin, SSEC Technical Computing 22 June 2017

Keeping Up With The Linux Kernel. Marc Dionne AFS and Kerberos Workshop Pittsburgh

Git. Christoph Matthies Software Engineering II WS 2018/19. Enterprise Platform and Integration Concepts group

Revision control. INF5750/ Lecture 2 (Part I)

Transcription:

Tracking FreeBSD in a Commercial Environment imp@freebsd.org The FreeBSD Project BSDCan 2009 Ottawa, Canada 8 May 2009

Outline Background and Context 1 Background and Context 2 Theory Reality 3 Upgrading Bad FreeBSD Experience 4 5

Outline Background and Context 1 Background and Context 2 Theory Reality 3 Upgrading Bad FreeBSD Experience 4 5

FreeBSD Based Development Develop an initial product based on FreeBSD Development on product continues Development on FreeBSD continues Product needs a newer FreeBSD Now what?

FreeBSD Based Products Product includes BSD May be used unmodified May have extensive local changes May include custom software May have custom settings

Outline Background and Context Theory Reality 1 Background and Context 2 Theory Reality 3 Upgrading Bad FreeBSD Experience 4 5

FreeBSD Branching Model Theory Reality Main development branch Current Periodic major releases Major release creates new stable branch (aka RELENG X) Minor releases done from stable branch Security/Errata branches

FreeBSD Code Work Flow Theory Reality Patches Submitted to the Project Code reviewed Code goes into Current Code refined, if necessary, based on testing Code merged to RELENG X branch New release off RELENG X called X.Y

Theory Reality Theoretical Release Schedule New major release every 18-24 months Branch active 24 months Branches terminate after 3 years Gradual reduction in activity Usually one stable branch active, plus current Worst case, two branches are active

Theory Reality Theoretical Release Schedule

Actual Release Schedule Theory Reality Major releases not evenly spaced Branches can live for a long time Some branches get more attention Pent up demand and code freezes distort graph On the average, especially lately, we match theory Graphs can be misleading

Actual Release Schedule Theory Reality

Full Development Graph Theory Reality

Outline Background and Context Upgrading Bad FreeBSD Experience 1 Background and Context 2 Theory Reality 3 Upgrading Bad FreeBSD Experience 4 5

Upgrading Bad FreeBSD Experience Import FreeBSD and other software Make modifications and customizations Maybe develop applications Release the product What happens next? Profit! New Release? Bubble Brust?

Upgrading Bad FreeBSD Experience Source: Doctor Fun by David Farley

Problems Upgrading Upgrading Bad FreeBSD Experience First version is easy, later versions hard Forward porting local modification Forward porting applications Bug fixes Managing change, both upstream and local Conflicts between FreeBSD bug fixes and local bug fixes

Why Upgrade? Background and Context Upgrading Bad FreeBSD Experience New hardware support New features (SMP, threads, devices, gcc, etc) Better performance Bug fixes Easier integration into FreeBSD community

A Bad FreeBSD Experience Upgrading Bad FreeBSD Experience Import FreeBSD code into a product Modify FreeBSD heavily Limited community involvement Release products, make money, celebrate Time passes Pent up demand forces FreeBSD upgrade Major porting effort Few community ties to ease effort

What to do? Background and Context Upgrading Bad FreeBSD Experience How can the pain be avoided Where to find advice on best practices Learn from other s misfortune Leverage the community Plan for upgrades Bug fixes aren t a competitive advantage

Outline Background and Context 1 Background and Context 2 Theory Reality 3 Upgrading Bad FreeBSD Experience 4 5

Background and Context

Grab and Go Background and Context Grab a version of FreeBSD Make changes to FreeBSD Never upgrade or participate in Community

Grab and Go, Pros Easy Simple Management understands No interaction with community

Grab and Go, Cons Upgrades Hard Difficult to add local changes New features of FreeBSD not reflected in products New hardware often needs new OS support No interaction with community

Grab and Upgrade Grab a version of FreeBSD Use unmodified Upgrade as needed

Grab and Upgrade, Pros Easy Simple Management understands

Grab and Upgrade, Cons Difficult to add local changes New hardware can be slow to appear in a release

Tracking Major Branches Import major release sources into local SCM Make local changes to SCM Merge minor releases into SCM Each major branch has its own SCM model

Tracking Major Branches

Tracking Major Branches, Pros Get bug fixes from FreeBSD Local bug fixes tracked Local bug fixes easy to push upstream Stable branches best place to base release

Tracking Major Branches, Cons Multiple Branches Local changes not automatically included on major upgrades Current/stable divergence makes some fixes hard to push upstream Major releases not completely predictable

Mirroring FreeBSD s Development Process Import FreeBSD-current into SCM Maintain branch of current + local changes Make own stable branches Push changes to FreeBSD early and often

Mirroring FreeBSD s Development Process

Mirroring FreeBSD s Development Process, Pros Changes typically easy to merge both directions Continuous porting amortizes upgrade pain Much community involvement Choice of time to cut stable branch

Mirroring FreeBSD s Development Process, Cons Duplicating effort done by FreeBSD s release engineering Internal stable branch gets less testing Management views work as being done twice Harder to get help from community on problems on private branch

Major Porting Effort Start with Grab and Go, no plans to upgrade Lots of time passes Upgrade required for new features/devices/etc Major efforts, much pain, desire to do it better

Outline Background and Context 1 Background and Context 2 Theory Reality 3 Upgrading Bad FreeBSD Experience 4 5

Creating a SVK Repository svk depotmap yoyobsd /path/to/repo svk mirror svn://svn.freebsd.org/base /yoyobsd/mirror/freebsd svk sync /yoyobsd/mirror/freebsd

Creating a company branch svk cp /yoyobsd/mirror/freebsd/stable/7 /yoyobsd/yoyodyne/7 use svk to manage merges, or interacting with mirror etc

Checking out a YoyoBSD branch svn co file:///path/to/repo/yoyodyne/7

Merging Changes from FreeBSD svk sync /yoyobsd/mirror/freebsd svk smerge /yoyobsd/mirror/freebsd/stable/7 /yoyobsd/yoyodyne/7 Note: you can pass -C to check before committing

Optional: Tag it svn cp file:///path/to/repo/mirror/freebsd/stable/7 file:///path/to/repo/freebsd-sync-7/yyyymmdd

Optional: Tag it Real svn repo history works merging works NB: change numbers differ

Questions? Comments? imp@freebsd.org