How do you develop and advocate for an open source project you created by yourself? How does your project gain public recognition? How can you leverage your company's reputation?
MySQL community member • Author of: ◦ openark-kit ◦ mycheckpoint (discontinued) ◦ common_schema ◦ Outbrain Propagator ◦ Outbrain Orchestrator • Occasional code contributor to MySQL - related projects. Bug reporter.
of python scripts which complement or enhance MySQL feature set • Modeled after Maatkit (predecessor of Percona Toolkit) • Notable tools: oak-online-alter-table, oak- chunk-update, oak-hook-general-log, oak- security-audit • Announced 2009 • To date: 2K-3K downloads per release
Revolutionary, a real game changer • Allows for online, non-blocking, throttleable table refactoring. • For some 18 months, it seemed like I was its only production user
called out for comments on their idea for online-schema-change. • After presenting oak-online-alter-table and some quick discussions, they adopted the general approach by openark-kit. • FB eventually forked and rewrote in PHP. • They say it revolutionized their deployment cycles. • Released as Facebook’s OSC
routines, views & scripting interpreter, completely residing within the database server • Distribution is a SQL file • Introduces QueryScript: SQL oriented scripting language ◦ QueryScript has the language constructs to support your common-yet -very-complex operations ◦ It is MySQL-aware, and mitigates locks and pitfalls commonly found in existing solutions
> 2.5K downloads (some 0.1k are mine :P) • Mature • Reviewed in High Performance MySQL 3rd Edition: "The common_schema is to MySQL as jQuery is to javaScript"
and rotate your partitions • Find and eliminate redundant indexes • Audit your security setup • Find and destroy locking/locked transactions • Find and destroy blocking/idle transactions • Much much more...
open source from day #1. • Fine balance: comply with company’s needs or generalize it for the greater audience? • Good to be public on the above. People like to know where the product is headed. They mostly like to know whether feature X will be supported. They like to know if X will not be supported.
multi-everything topology: • Multi-server: push your schema & data changes to multiple instances in parallel • Multi-role: different servers have different schemas • Multi-environment: recognizes the differences between development, QA, build & production servers • Multi-technology: supports MySQL, Hive (Cassandra on the TODO list) • Multi-user: allows users authenticated and audited access • Multi-planetary: TODO
of its kind • Visualize topologies, see what’s wrong • Refactor topologies; move slave around safely & visually • Supports command line, web API and web interface actions
to the size of the task) Documentation! • People actually do read it. Make it as comprehensive as possible. • common_schema boasts some > 150 “man pages”. Documenting took by far more time resource than coding. • Proper documentation is the only thing that grants you the right to say: “RTFM!”
to the size of the task) Pick a License! • Consider Apache, GPL, BSD, MIT, WTFPL among others. • Use https://tldrlegal.com/ for human friendly license breakdown