Forking Successfully
Colin Charles, Chief Evangelist, Percona Inc.

colin.charles@percona.com / byte@bytebot.net 

http://bytebot.net/blog/ | @bytebot on Twitter

OSCON London, United Kingdom

17 October 2016
whoami
• Chief Evangelist (in the CTO office), Percona Inc
• Founding team of MariaDB Server (2009-2016),
previously at Monty Program Ab, merged with SkySQL
Ab, now MariaDB Corporation
• Formerly MySQL AB (exit: Sun Microsystems)
• Past lives include Fedora Project (FESCO),
OpenOffice.org
• MySQL Community Contributor of the Year Award winner
2014
Agenda
• Forks
• GitHub generation
• GNU Emacs and XEmacs
• MySQL, MariaDB Server, and Percona Server
• Drizzle?
• Other forks
To fork, or not to fork,
that is the question
Fork
In software engineering, a project fork happens
when developers take a copy of source code from
one software package and start independent
development on it, creating a distinct and separate
piece of software.
https://en.wikipedia.org/wiki/Fork_(software_development)
GitHub generation
• Watch: Notifications for active participants
• Star: Bookmarking + “light” appreciation
• Fork: a copy of a repository; make your changes
• Pull request: encouraging to merge your
changes with the upstream project
First open source fork…
• POSTGRES?
• 1986, when Michael Stonebraker wanted the
‘after Ingres’ database
• Today this has given you PostgreSQL
GNU Emacs and
XEmacs
1991
Copyright Assignment
(and Contributor License Agreements)
Last stable release of
XEmacs
January 2009
Feature Parity
(or the death of a fork)
MySQL
World’s most popular open source database
GPL MySQL
2000
October 2005: Oracle
acquires Innobase Oy
(“InnoDB Friday”)
October 2005 - late 2005
• October 2005: 5.0 becomes GA*
• Late 2005: Maria project starts
MySQL fast-forward
• January 2008: acquired by Sun Microsystems
• June 2008: Drizzle — fork of MySQL 6.0 — modular, fast,
microkernel architecture, UTF8, etc.
• November 2008: Percona Server (patchset ~July)
• April 2009: Oracle proposes acquisition of Sun Microsystems
(and MySQL)
• January 2010: Oracle completes acquisition of Sun
Microsystems
• October 2009: MariaDB 5.1 Beta release
MariaDB
• Developed at Monty Program Ab
• February 2010: MariaDB 5.1 GA release
• November 2010: MariaDB 5.2 GA release
• February 2012: MariaDB 5.3 GA (GIS, replication
improvements, optimiser)
• April 2012: MariaDB 5.5 GA
• November 2012: Announcement of MariaDB Foundation
Community Developed.
Feature Enhanced.
Backward Compatible.
Community Developed
• MariaDB: takes external contributors/committers,
Google Summer of Code
• MySQL: contributions welcome, commits not
• MySQL Community Contributor Award
Program
• Percona: bug reports/feature requests welcome,
commits not (pull requests accepted)
Distribution matters
• Being available matters
• Linux distributions, clouds, containers, etc.
• Security matters - fix those CVEs quickly, and
say what got fixed
Branch or Fork?
• MySQL 5.5 — Percona Server 5.5 — MariaDB
Server 5.5 - drop-in compatible
• MySQL 5.6 — Percona Server 5.6 - drop-in
compatible
• MySQL 5.7 — Percona Server 5.7 - drop-in
compatible
Drizzle
• Drizzle: 2008 - 2012 (R.I.P.)
• Aggressive about standards — utf8 was first
class, FRM files were gone, no MEDIUMINTs,
etc.
• Drizzle - single company open source project
(Rackspace). Most went on to work at
OpenStack
LibreOffice/OpenOffice.org
• LibreOffice started as ooo-build for the large
codebase
• Document Foundation backed (28 Sep 2010)
• March 2015 LWN.net - “LibreOffice has won the
battle for developer participation”
• Apache Foundation got OpenOffice.org -> Apache
OpenOffice
• Lack of active developers and code contributions
There are others!
Nagios and Icinga
OpenSSL and
LibreSSL
node.js and io.js
Hudson and Jenkins
OwnCloud and
NextCloud
SugarCRM and
SuiteCRM
OpenBSD and
NetBSD
Oracle Enterprise Linux
and CentOS and Red Hat
Enterprise Linux
To watch
• Docker
• MariaDB MaxScale
Bitcoin
And the hard fork
Android
Those who cannot
remember the past are
condemned to repeat it.
George Santayana
Why are you forking?
Naming
• Pick a good one that focuses on values
• Beware of trademarks
Takeaways
• Community matters
• Developers matter
• Limit end-user friction
• Sustainable development methodology
• Fork as a last resort
• Clear fork focus
As a user what should you
use?
• Think about innovation today
• Beware vendor lock-in - freedom from vendor
independence is crucial
• Ensure you are well supported
Thank you!
Colin Charles
colin.charles@percona.com / byte@bytebot.net
http://bytebot.net/blog | @bytebot on twitter
slides: slideshare.net/bytebot

Forking Successfully - or is a branch better?