{"id":3419,"date":"2013-10-02T11:13:58","date_gmt":"2013-10-02T01:13:58","guid":{"rendered":"https:\/\/www.flamingspork.com\/blog\/?p=3419"},"modified":"2014-10-08T09:16:09","modified_gmt":"2014-10-07T23:16:09","slug":"the-end-of-bazaar","status":"publish","type":"post","link":"https:\/\/www.flamingspork.com\/blog\/2013\/10\/02\/the-end-of-bazaar\/","title":{"rendered":"The end of Bazaar"},"content":{"rendered":"<p>I&#8217;ve used the <a href=\"http:\/\/bazaar.canonical.com\/\">Bazaar<\/a> (bzr) version control system since roughly 2005. The focus on usability was fantastic and the team at Canonical managed to get the entire MySQL BitKeeper history into Bazaar &#8211; facilitating the switch from BitKeeper to Bazaar.<\/p>\n<p>There were some things that weren&#8217;t so great. Early on when we were looking at Bazaar for MySQL it was certainly not the fastest thing when it came to dealing with a repository as large as MySQL. Doing an initial branch over the internet was <strong>painful<\/strong> and a much worse experience than BitKeeper was. The work-around that we all ended up using was downloading a tarball of a recent Bazaar repository and then &#8220;bzr pull&#8221; to get the latest. This was <strong>much<\/strong> quicker than letting bzr just do it. Performance for initial branch improved a <strong>lot<\/strong> since then, but even today it&#8217;s still not great &#8211; but at least it isn&#8217;t terrible like it once was.<br \/>\nThe integration with <a href=\"http:\/\/launchpad.net\">Launchpad<\/a> was brilliant. We never really used it for MySQL but for <a href=\"http:\/\/www.drizzle.org\">Drizzle<\/a> the combination was crucial and helped us get releases out the door, track tasks and bugs and do code review. Parts of launchpad saw great development (stability and performance improved immensely) and others did not (has anything at all changed in blueprints in the past 5+ years?). Not running your own bugs db was always a win and I&#8217;m really sad to say that I still think Launchpad is the best bug tracker out there.<br \/>\nFor both Drizzle and Percona, Bazaar was the right option as it was what MySQL was using, so people in the community already knew the tools. These days however&#8230; Git is the tool that there&#8217;s large familiarity with &#8211; even to the extent that Twitter maintains their MySQL branch in Git rather than in bzr.Is Bazaar really no longer being developed? Here are graphs (from github actually) on the activity on Bazaar itself over the years:<a href=\"https:\/\/i0.wp.com\/www.flamingspork.com\/blog\/wp-content\/uploads\/2013\/10\/Screenshot-from-2013-10-02-103219.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"3420\" data-permalink=\"https:\/\/www.flamingspork.com\/blog\/2013\/10\/02\/the-end-of-bazaar\/screenshot-from-2013-10-02-103219\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.flamingspork.com\/blog\/wp-content\/uploads\/2013\/10\/Screenshot-from-2013-10-02-103219.png?fit=924%2C184&amp;ssl=1\" data-orig-size=\"924,184\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"Screenshot from 2013-10-02 10:32:19\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.flamingspork.com\/blog\/wp-content\/uploads\/2013\/10\/Screenshot-from-2013-10-02-103219.png?fit=584%2C116&amp;ssl=1\" class=\"aligncenter size-medium wp-image-3420\" alt=\"Screenshot from 2013-10-02 10:32:19\" src=\"https:\/\/i0.wp.com\/www.flamingspork.com\/blog\/wp-content\/uploads\/2013\/10\/Screenshot-from-2013-10-02-103219.png?resize=300%2C59&#038;ssl=1\" width=\"300\" height=\"59\" srcset=\"https:\/\/i0.wp.com\/www.flamingspork.com\/blog\/wp-content\/uploads\/2013\/10\/Screenshot-from-2013-10-02-103219.png?resize=300%2C59&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.flamingspork.com\/blog\/wp-content\/uploads\/2013\/10\/Screenshot-from-2013-10-02-103219.png?resize=500%2C99&amp;ssl=1 500w, https:\/\/i0.wp.com\/www.flamingspork.com\/blog\/wp-content\/uploads\/2013\/10\/Screenshot-from-2013-10-02-103219.png?w=924&amp;ssl=1 924w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><a href=\"https:\/\/i0.wp.com\/www.flamingspork.com\/blog\/wp-content\/uploads\/2013\/10\/Screenshot-from-2013-10-02-103341.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"3421\" data-permalink=\"https:\/\/www.flamingspork.com\/blog\/2013\/10\/02\/the-end-of-bazaar\/screenshot-from-2013-10-02-103341\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.flamingspork.com\/blog\/wp-content\/uploads\/2013\/10\/Screenshot-from-2013-10-02-103341.png?fit=940%2C558&amp;ssl=1\" data-orig-size=\"940,558\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"Screenshot from 2013-10-02 10:33:41\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.flamingspork.com\/blog\/wp-content\/uploads\/2013\/10\/Screenshot-from-2013-10-02-103341.png?fit=584%2C347&amp;ssl=1\" class=\"aligncenter size-medium wp-image-3421\" alt=\"Screenshot from 2013-10-02 10:33:41\" src=\"https:\/\/i0.wp.com\/www.flamingspork.com\/blog\/wp-content\/uploads\/2013\/10\/Screenshot-from-2013-10-02-103341.png?resize=300%2C178&#038;ssl=1\" width=\"300\" height=\"178\" srcset=\"https:\/\/i0.wp.com\/www.flamingspork.com\/blog\/wp-content\/uploads\/2013\/10\/Screenshot-from-2013-10-02-103341.png?resize=300%2C178&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.flamingspork.com\/blog\/wp-content\/uploads\/2013\/10\/Screenshot-from-2013-10-02-103341.png?resize=500%2C296&amp;ssl=1 500w, https:\/\/i0.wp.com\/www.flamingspork.com\/blog\/wp-content\/uploads\/2013\/10\/Screenshot-from-2013-10-02-103341.png?w=940&amp;ssl=1 940w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a>You can easily see the drop off in commits and code changes. The last commit to trunk was 2 months ago and although there was the 2.6.0 release in August, in my opinion it wasn&#8217;t a very strong one (the first one I&#8217;ve had problems with in years).So&#8230; <a href=\"http:\/\/git-scm.org\/\">git<\/a> is the obvious successor and with such a strong community around <a href=\"http:\/\/github.com\">GitHub<\/a>, it kinda makes sense. I&#8217;m not saying that GitHub has caught up to Launchpad in terms of features or anything &#8211; it&#8217;s just that with Bazaar clearly no longer really being developed&#8230;. it may be the only option.In fact, in my experiment of putting a mirror of <a href=\"http:\/\/github.com\/percona\/percona-server\">Percona Server on GitHub<\/a>, we already have a pull request mere days after I <a href=\"http:\/\/www.mysqlperformanceblog.com\/2013\/09\/27\/experimental-git-mirrors-of-percona-xtrabackup-percona-server-more-plus-oracle-mysql-git-mirror\/\">blogged about it<\/a>. Migrating all of Percona development over to Git and Github may take some time, but it&#8217;s certainly time that we kicked the tyres on it and worked out how we&#8217;d do it without interrupting releases or development.I&#8217;ve also thrown up a <a href=\"http:\/\/github.com\/stewartsmith\/drizzle\">Drizzle tree<\/a> and although it required some munging to get the conversion to happen, I&#8217;m kind of optimistic about it and I think that after a round of merging things, I&#8217;m tempted to very strongly advocate for us switching (which I don&#8217;t think there&#8217;ll be any opposition to).When will Oracle move over their MySQL development? This I cannot say (as I don&#8217;t know and don&#8217;t make that call for them). There is a lot of renewed interest in code contribution by Oracle and moving to Git and GitHub may well be a very good way to encourage people.<br \/>\nThe downside of git? Well&#8230; With BZR you could get away with not understanding pretty much every single bit of the internals. With git, I wish I was so lucky.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve used the Bazaar (bzr) version control system since roughly 2005. The focus on usability was fantastic and the team at Canonical managed to get the entire MySQL BitKeeper history into Bazaar &#8211; facilitating the switch from BitKeeper to Bazaar. &hellip; <a href=\"https:\/\/www.flamingspork.com\/blog\/2013\/10\/02\/the-end-of-bazaar\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[76,75,14,423],"tags":[],"class_list":["post-3419","post","type-post","status-publish","format-standard","hentry","category-code","category-drizzle-work-et-al","category-mysql","category-percona"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5a6n8-T9","jetpack-related-posts":[{"id":3043,"url":"https:\/\/www.flamingspork.com\/blog\/2012\/06\/28\/hacking-the-jenkins-bzr-plugin\/","url_meta":{"origin":3419,"position":0},"title":"Hacking the Jenkins BZR plugin","author":"Stewart Smith","date":"2012-06-28","format":false,"excerpt":"For Drizzle and for all of the projects we work on at Percona we use the Bazaar revision control system (largely because it's what we were using at MySQL and it's what MySQL still uses). We also use Jenkins. We have a lot of jobs in our Jenkins. A lot.\u2026","rel":"","context":"In &quot;code&quot;","block_context":{"text":"code","link":"https:\/\/www.flamingspork.com\/blog\/category\/code\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1749,"url":"https:\/\/www.flamingspork.com\/blog\/2009\/11\/16\/bazaar-importmbox-plugin\/","url_meta":{"origin":3419,"position":1},"title":"Bazaar importmbox plugin","author":"Stewart Smith","date":"2009-11-16","format":false,"excerpt":"Releasing and announcing software is win! I've had this bumming around for a bit, and for me (and I think others hacking on MySQL) it's been rather useful. Simple plugin that takes each email in an mbox, applies the patch and commits it with the correct author to a bzr\u2026","rel":"","context":"In &quot;drizzle&quot;","block_context":{"text":"drizzle","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/drizzle-work-et-al\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2380,"url":"https:\/\/www.flamingspork.com\/blog\/2011\/05\/21\/xtrabackup-bazaar-repositories-upgraded-to-2a-format\/","url_meta":{"origin":3419,"position":2},"title":"xtrabackup bazaar repositories upgraded to 2a format","author":"Stewart Smith","date":"2011-05-21","format":false,"excerpt":"I have just upgraded the xtrabackup bazaar code repositories to the 2a format. This means that bzr 1.16 is required to access the source code repositories now. If you get an error like the one below when working with a local branch, you'll need to run \"bzr upgrade\" in it\u2026","rel":"","context":"In &quot;percona&quot;","block_context":{"text":"percona","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/percona\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3149,"url":"https:\/\/www.flamingspork.com\/blog\/2012\/08\/27\/new-jenkins-bazaar-plugin-release\/","url_meta":{"origin":3419,"position":3},"title":"New Jenkins Bazaar plugin release","author":"Stewart Smith","date":"2012-08-27","format":false,"excerpt":"I've just uploaded version 1.20 of the Bazaar plugin for Jenkins. This release is based on feedback from users and our experiences at Percona. Do a lightweight checkout instead of a heavyweight checkout (if \"Checkout\" is enabled) Fix bug: lightweight checkout \"update\" would always fail as bzr update didn't accept\u2026","rel":"","context":"In &quot;code&quot;","block_context":{"text":"code","link":"https:\/\/www.flamingspork.com\/blog\/category\/code\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3655,"url":"https:\/\/www.flamingspork.com\/blog\/2014\/01\/14\/converting-mysql-trees-to-git\/","url_meta":{"origin":3419,"position":4},"title":"Converting MySQL trees to git","author":"Stewart Smith","date":"2014-01-14","format":false,"excerpt":"I have put up a set of scripts on github: https:\/\/github.com\/stewartsmith\/bzr-to-git-conversion-scripts. Why do I need these? Well... if only bzr fast-export|git fast-import worked flawlessly for large, complex and old trees. It doesn't. Basically, when you clone this repo you can run \".\/sync-BLAH.sh\" and it'll pull BZR trees for the project,\u2026","rel":"","context":"In &quot;code&quot;","block_context":{"text":"code","link":"https:\/\/www.flamingspork.com\/blog\/category\/code\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1183,"url":"https:\/\/www.flamingspork.com\/blog\/2008\/08\/27\/building-mysql-cluster-on-windows-for-windows\/","url_meta":{"origin":3419,"position":5},"title":"Building MySQL Cluster on Windows (for Windows)","author":"Stewart Smith","date":"2008-08-27","format":false,"excerpt":"You will need: CMake (at least 2.4.7) Bazaar (the newer the better - 1.6 was just released - at least use that) Gnu Bison Visual Studio (Express works, but I'm talking about 2005 here) ... and all this installed on a Microsoft Windows machine. ... and to hate yourself, you\u2026","rel":"","context":"In &quot;mysql&quot;","block_context":{"text":"mysql","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/mysql\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/3419","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/comments?post=3419"}],"version-history":[{"count":2,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/3419\/revisions"}],"predecessor-version":[{"id":3852,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/3419\/revisions\/3852"}],"wp:attachment":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/media?parent=3419"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/categories?post=3419"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/tags?post=3419"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}