Lessons from 15 years of NBD

Slides:



Advertisements
Similar presentations
Nucleus CMS is an open-source blog management software package written in PHP, with a MySQL backend.open-sourceblogPHPMySQL PURE PUBLISHING. Communication.
Advertisements

Concepts of Version Control A Technology-Independent View.
14 January 2011 Upgrading Your Geant4 Release J. Perl 1 Upgrading Your Geant4 Release Joseph Perl, SLAC.
G51FSE Version Control Naisan Benatar. Lecture 5 - Version Control 2 On today’s menu... The problems with lots of code and lots of people Version control.
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
Module CC3002 Post Implementation Issues Lecture for Week 6 AY 2013 Spring.
Information Systems and Network Engineering Laboratory II DR. KEN COSH WEEK 1.
Copyright © 2015 – Curt Hill Version Control Systems Why use? What systems? What functions?
CVS – concurrent versions system Network Management Workshop intERlab at AIT Thailand March 11-15, 2008.
What makes for a quality RFC? An invited talk to the MPLS WG Adrian Farrel IETF-89 London, March 2014.
Byzantine fault-tolerance COMP 413 Fall Overview Models –Synchronous vs. asynchronous systems –Byzantine failure model Secure storage with self-certifying.
Benchmark 2 progress report and future directions Sergey Lyskov
Information Systems and Network Engineering Laboratory I DR. KEN COSH WEEK 1.
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
Dealing with Technical Debt LUG 2016 Developer Day Ben Evans.
Chapter 25 – Configuration Management 1Chapter 25 Configuration management.
1 February 6, Patches William Cohen NCSU CSC 591W February 6, 2008.
How To Get Involved In Open Source Nick Burch Senior Developer, Alfresco Software VP ConCom, ASF Member.
And how to avoid it Tom “spot” Callaway Presented by Fedora Engineering Manager This presentation is licensed under a Creative Commons Attribution-Share.
Sitecore upgrades The Past, The Present, The Future.
Giving Back Contributing to Debian and the New Maintainer Process Christine Spang January 15th, 2007 The SIPB, Massachusetts Institute of Technology.
Advanced Higher Computing Science
CompSci 230 Software Construction
Process Overview.
ID Tracker States: An Internet Draft’s Path Through the IESG
Information Systems and Network Engineering Laboratory II
Tracking and Squashing Bugs
Cleveland SQL Saturday Catch-All or Sometimes Queries
IPv6 investigation within Informatics George Ross
Version Control with Subversion
A Simple Introduction to Git: a distributed version-control system
Software Packaging and Releasing
Subversion Reasons to use How it works Subversion important commands
Version control, using Git
INTRODUCTION TO NETWORKS AND COMMUNICATIONS
Software Documentation
Quality Control in the dCache team.
CVS revisions UML diagram
Collaborative Writing Journeys
Concurrent Version Control
How to Upgrade Your Geant4 Release
IPv6 investigation within Informatics George Ross
LO Adding and subtracting with negative numbers RAG
Lesson 14 Sharing Documents
January 2014 doc.: IEEE /0084r0 January 2014
Objects First with Java
Screen Writing Brylee Huber.
Upgrading Condor Best Practices
Git Best Practices Jay Patel Git Best Practices.
Final Research Question
Coding Concepts (Basics)
Chapter 25 – Configuration Management
Doc.: IEEE /XXXr0 10 May 2011 Sep 19, 2007 Project: IEEE P Working Group for Wireless Personal Area Networks (WPANs)‏ Submission Title:
All About Gump Presentation
Git CS Fall 2018.
Version Control System - Git
Doc.: IEEE /XXXr0 10 May 2011 Sep 19, 2007 Project: IEEE P Working Group for Wireless Personal Area Networks (WPANs)‏ Submission Title:
WebDriver on Windows 10 Greg
CS5123 Software Validation and Quality Assurance
MAINTAINING SERVER AVAILIBILITY
Networking Workshop (2)
What makes for a quality RFC?
Descriptive Writing Mentor Project
Diffie/Hellman Key Exchange
Dealing with Non-Fiction
Vendor Software Lessons From Consulting Vendor Software.
System Center Third Party Tools Ivanti Patch and RCT Recast April 2019.
5 Actionable Way to Increase App Installs -:Introductions:- If you have finally created an amazing app and you want to get it published for earning money.
Life Hacks: dbatools Edition
Presentation transcript:

Lessons from 15 years of NBD Wouter Verhelst <wouter@debian.org> http://grep.be/ Debconf 2016 2016-07-04 May have oversold this a bit; not much comparison between little NBD and Debian. Still would be interesting, I think

Little history 2001-02: wouter@debian.org 2001-03 (or -04): got an m68k mac with 68LC040 with broken mask revision 2001-04: bought an m68k mac with 80MB of diskspace https://lists.debian.org/debian- 68k/2001/04/msg00162.html: first time playing with NBD for builds over 10Mbit network Timestamp on initial changelog entry of NBD: Sat, 2 Jun 2001 12:44:24 +0200

Lesson Beware of the m68k macs you buy, you might end up maintaining NBD in fifteen years Be careful what you play with, you might end up maintaining a network storage system for fifteen years Playing with stuff is a good way to figure out new things to maintain in Debian – even if the said stuff isn’t very useful at first sight

Documentation Originally: no docs, at all 2005-10-25: doxygen comments 2005-11-22: blog post describing protocol with request for ethereal dissector 2011-04-08: informal protocol description added to code repository 2011-05-17: first significant external contribution 2014-10-21: STARTTLS spec 2014 – 2016: more protocol-related commits than functionality commits

Lesson Writing documentation is too hard, so don’t do it Writing documentation takes time, so postpone it Writing documentation takes time away from actual work, so don’t do it Writing documentation makes people send you patches, so don’t do it Writing documentation allows other people to understand and help out, so do it!

Naming things Original protocol had no way for proper negotiation 2010 (during debconf): wrote (and implemented) a different negotiation During discussion, informally referred to negotiations as “old” and “new” style Later that year: found a minor imperfection with “new” style Needed a “fix”, informally referred to that as “fixed new style” 2016: Official names are now “oldstyle”, “newstyle”, and “fixed newstyle”

Lesson Be careful what you name things, because you’re going to be stuck with the name for quite a while Choosing a good name is usually a good thing

Deprecating Oldstyle protocol was broken, so newstyle was created (in 2010) Intend was always to drop oldstyle when that would be reasonable January 2016: issue with mixed negotiation implementation → dropped oldstyle Lots of compatibility issues with third-party implementations (mostly fixed now)

Lesson If you’re going to deprecate something, make (and publish) a plan If you’re going to deprecate something, don’t wait six years If you’re going to deprecate something, make it clear in the documentation, in the code, in the comments In your .sig Try not to deprecate at all?

Security issues CVE-2005-3534 CVE-2011-0530 CVE-2013-6410 CVE-2011-0530: reintroduction of CVE-2005-3534

Lessons Writing a server? Prepare for security fixes Security bugs are nothing to be ashamed about, we’re all humans Even so, try to prepare with proper design (fork-per- child, state machines, …) Fix bugs on all branches

Debian-specific NBD features Debconf config for nbd-client/nbd-server Init script Installer support Systemd nbd unit