{"id":15671,"date":"2014-11-06T11:16:28","date_gmt":"2014-11-06T19:16:28","guid":{"rendered":"https:\/\/www.backblaze.com\/blog\/?p=15671"},"modified":"2025-12-12T14:47:11","modified_gmt":"2025-12-12T22:47:11","slug":"backblaze-subversion-time-to-change","status":"publish","type":"post","link":"https:\/\/www.backblaze.com\/blog\/backblaze-subversion-time-to-change\/","title":{"rendered":"Backblaze and Subversion, Time to Change?"},"content":{"rendered":"<p id=\"bzdropcap\">Our recent post on <a title=\"Source Code Control systems\" href=\"https:\/\/www.backblaze.com\/blog\/how-do-you-do-source-code-control\/\" target=\"_blank\" rel=\"noopener noreferrer\">Source Code Control<\/a> led many to ask, what does Backblaze use? The short answer is Subversion (SVN). The longer questions are: why did we pick it, how has it worked out, and should we switch?<\/p>\n<h2>What Most Companies Use for Version Control<\/h2>\n<p>According to the folks at Duck Software Open Hub (formerly Ohloh.net), Backblaze is not alone in using SVN; in fact, SVN is still the most popular repository among the registered Open Hub users as you can see in the chart below:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-15831\" src=\"https:\/\/www.backblaze.com\/blog\/wp-content\/uploads\/2014\/10\/blog-source-control-share2.jpg\" alt=\"blog-source-control-share2\" width=\"720\" height=\"405\" srcset=\"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2014\/10\/blog-source-control-share2.jpg 720w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2014\/10\/blog-source-control-share2-300x169.jpg 300w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2014\/10\/blog-source-control-share2-560x315.jpg 560w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2014\/10\/blog-source-control-share2-220x124.jpg 220w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/p>\n<h2>Why SVN for Backblaze?<\/h2>\n<p>Backblaze has used SVN since we started in 2007. It was selected and set up by <a title=\"Brian Wilson\" href=\"https:\/\/www.backblaze.com\/company\/about.html\" target=\"_blank\" rel=\"noopener noreferrer\">Brian Wilson<\/a>, our CTO. On his personal blog, Brian, <a title=\"Setting up our Subversion server\" href=\"http:\/\/www.ski-epic.com\/2007_small_business_setup\/setting_up_subversion_on_windows_2003_server.html\" target=\"_blank\" rel=\"noopener noreferrer\">documented his experience in getting SVN up and running<\/a> for Backblaze. Some of the article specifics are a bit outdated as the server used was running Windows Server 2003, but the overall process still works. As a side note, the Dell Optiplex server Brian used was only recently retired from service.<\/p>\n<p>Brian chose SVN for Backblaze even though he had not used SVN before. Previously he had worked with Perforce and CVS. Using Perforce was out because we would have to pay for the licenses and when you are bootstrapping a company from your own pocket, such things are luxuries. He asked around and several of his friends suggested SVN. In mid-2007, SVN was becoming well known in the developer community, while CVS seemed to be languishing. In hindsight, either choice probably would have worked for Backblaze, but Brian went with SVN and never looked back.<\/p>\n<p>Brian installed and used SVN even though at the time he was the only engineer. Why? Rule #1 of Brian&#8217;s <a title=\"Writing Cross Platform Code\" href=\"https:\/\/www.backblaze.com\/blog\/10-rules-for-how-to-write-cross-platform-code\/\" target=\"_blank\" rel=\"noopener noreferrer\">10 rules for how to write cross-platform code<\/a>, \u201cSimultaneously develop\u2014don\u2019t port.\u201d He would write code initially on his PC, check it into SVN, and then check it on his Mac to make sure it worked. This allowed him to quickly develop our cross-platform \u201cbase\u201d libraries (Rule #5) that we continue to use today.<\/p>\n<h3>Our Experience Running Subversion<\/h3>\n<p>As Backblaze has grown since 2007, not only have we added more engineers to SVN, but we\u2019ve also had more departments get on board. Today, our tree manages contributions from engineering, operations, web development, and even marketing. Subversion has been a good fit for Backblaze as we are fairly linear in our development practices. We rarely (if ever) branch our code, instead adding things in a continuous fashion. That\u2019s not as crazy as it seems, as noted by Martin Fowler, a self-described <a title=\"Martin Fowler on Continuous Integration\" href=\"http:\/\/martinfowler.com\/bliki\/VersionControlTools.html\" target=\"_blank\" rel=\"noopener noreferrer\">champion of continuous integration<\/a>:<\/p>\n<blockquote><p>\u201cSubversion encourages a simple central repository model, discouraging large scale branching. In an environment that\u2019s using Continuous Integration, which is how most of my friends like to work, that model fits reasonably well. As a result Subversion is a good choice for most environments.\u201d<\/p><\/blockquote>\n<h3>\u201cIf It Ain\u2019t Broke\u2026\u201d<\/h3>\n<p>I polled some of the engineers at Backblaze to get their sense as to whether they\u2019d consider changing from SVN. There was some enthusiasm for moving to GIT and a couple of votes for Mercurial, but the most prevalent sentiment was \u201cif it ain\u2019t broke, don\u2019t fix it.\u201d There was also a realization that at some point change could be inevitable as the team continued to grow in size and product continued to increase in scope, but right now the team can still \u201cGrok\u201d the system using SVN.<\/p>\n<h2>Would You Switch From Subversion?<\/h2>\n<p>On the <a title=\"Replacing Subversion with...\" href=\"http:\/\/programmers.stackexchange.com\/questions\/35074\/im-a-subversion-geek-why-should-i-consider-or-not-consider-mercurial-or-git-or\" target=\"_blank\" rel=\"noopener noreferrer\">Stack Exchange network<\/a> there is a great discussion on why someone might consider changing from SVN and consider another system (mostly GIT or Mercurial in this case). The discussion is a couple of years old, but still worth reviewing. In addition, the discussion includes references to other resources worth reading, as well.<\/p>\n<p>For the moment, Backblaze is sticking by SVN, but just for fun let\u2019s make you the Backblaze CTO. As CTO, you are charged with looking into your crystal ball to determine what we should do over the next couple of years. Below are a handful of high-level requirements to get you started.<\/p>\n<ul>\n<li>The version control system should be open-source, but reasonably well supported by the community.<\/li>\n<li>We don\u2019t branch very much today, not because it\u2019s hard with SVN, but because we don\u2019t need to branch very much.<\/li>\n<li>We have well defined teams for the Mac client, Windows client, server functions, operations, and mobile services. Code check-in conflicts do not occur very often and when they do they are mostly obvious and easy to solve.<\/li>\n<li>About 10% of our Engineering group lives and works out of state, visiting our headquarters in San Mateo once a month or so.<\/li>\n<li>We have non-engineers (i.e. marketing and operations) using SVN today.<\/li>\n<\/ul>\n<p>Based on your experience, what other things should we be considering? What source code control system do you use? Why did you choose that one? Is it everything you thought it would be? We\u2019d love to hear your thoughts.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Our recent post on Source Code Control led many to ask, what does Backblaze use? The short answer is Subversion (SVN). The longer questions are: why did we pick it, how has it worked out, and should we switch? What Most Companies Use for Version Control According to the folks at Duck Software Open Hub&hellip; <a class=\"more-link\" href=\"https:\/\/www.backblaze.com\/blog\/backblaze-subversion-time-to-change\/\">Continue reading <span class=\"screen-reader-text\">Backblaze and Subversion, Time to Change?<\/span><\/a><\/p>\n","protected":false},"author":12,"featured_media":15831,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","jetpack_post_was_ever_published":false},"categories":[131],"tags":[373,470],"class_list":["post-15671","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-backblaze-bits","tag-developer","tag-newsletter","entry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Mercurial vs. Git: Why We Use the Subversion Version Control System<\/title>\n<meta name=\"description\" content=\"Today, Backblaze uses SVN for source code control. If you were the Backblaze CTO, what would you do? And more important, what&#039;s you plan moving forward...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.backblaze.com\/blog\/backblaze-subversion-time-to-change\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mercurial vs. Git: Why We Use the Subversion Version Control System\" \/>\n<meta property=\"og:description\" content=\"Today, Backblaze uses SVN for source code control. If you were the Backblaze CTO, what would you do? And more important, what&#039;s you plan moving forward...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.backblaze.com\/blog\/backblaze-subversion-time-to-change\/\" \/>\n<meta property=\"og:site_name\" content=\"Backblaze Blog | Cloud Storage &amp; Cloud Backup\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/backblaze\" \/>\n<meta property=\"article:published_time\" content=\"2014-11-06T19:16:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-12T22:47:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2014\/10\/blog-source-control-share2.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"720\" \/>\n\t<meta property=\"og:image:height\" content=\"405\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Andy Klein\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@backblaze\" \/>\n<meta name=\"twitter:site\" content=\"@backblaze\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andy Klein\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Mercurial vs. Git: Why We Use the Subversion Version Control System","description":"Today, Backblaze uses SVN for source code control. If you were the Backblaze CTO, what would you do? And more important, what's you plan moving forward...","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.backblaze.com\/blog\/backblaze-subversion-time-to-change\/","og_locale":"en_US","og_type":"article","og_title":"Mercurial vs. Git: Why We Use the Subversion Version Control System","og_description":"Today, Backblaze uses SVN for source code control. If you were the Backblaze CTO, what would you do? And more important, what's you plan moving forward...","og_url":"https:\/\/www.backblaze.com\/blog\/backblaze-subversion-time-to-change\/","og_site_name":"Backblaze Blog | Cloud Storage &amp; Cloud Backup","article_publisher":"https:\/\/www.facebook.com\/backblaze","article_published_time":"2014-11-06T19:16:28+00:00","article_modified_time":"2025-12-12T22:47:11+00:00","og_image":[{"width":720,"height":405,"url":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2014\/10\/blog-source-control-share2.jpg","type":"image\/jpeg"}],"author":"Andy Klein","twitter_card":"summary_large_image","twitter_creator":"@backblaze","twitter_site":"@backblaze","twitter_misc":{"Written by":"Andy Klein","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.backblaze.com\/blog\/backblaze-subversion-time-to-change\/#article","isPartOf":{"@id":"https:\/\/www.backblaze.com\/blog\/backblaze-subversion-time-to-change\/"},"author":{"name":"Andy Klein","@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#\/schema\/person\/9ac7e0bf0bd16852f8bfef352ce5fa8c"},"headline":"Backblaze and Subversion, Time to Change?","datePublished":"2014-11-06T19:16:28+00:00","dateModified":"2025-12-12T22:47:11+00:00","mainEntityOfPage":{"@id":"https:\/\/www.backblaze.com\/blog\/backblaze-subversion-time-to-change\/"},"wordCount":832,"commentCount":37,"publisher":{"@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.backblaze.com\/blog\/backblaze-subversion-time-to-change\/#primaryimage"},"thumbnailUrl":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2014\/10\/blog-source-control-share2.jpg","keywords":["Developer","Newsletter"],"articleSection":["Backblaze Bits"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.backblaze.com\/blog\/backblaze-subversion-time-to-change\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.backblaze.com\/blog\/backblaze-subversion-time-to-change\/","url":"https:\/\/www.backblaze.com\/blog\/backblaze-subversion-time-to-change\/","name":"Mercurial vs. Git: Why We Use the Subversion Version Control System","isPartOf":{"@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.backblaze.com\/blog\/backblaze-subversion-time-to-change\/#primaryimage"},"image":{"@id":"https:\/\/www.backblaze.com\/blog\/backblaze-subversion-time-to-change\/#primaryimage"},"thumbnailUrl":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2014\/10\/blog-source-control-share2.jpg","datePublished":"2014-11-06T19:16:28+00:00","dateModified":"2025-12-12T22:47:11+00:00","description":"Today, Backblaze uses SVN for source code control. If you were the Backblaze CTO, what would you do? And more important, what's you plan moving forward...","breadcrumb":{"@id":"https:\/\/www.backblaze.com\/blog\/backblaze-subversion-time-to-change\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.backblaze.com\/blog\/backblaze-subversion-time-to-change\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.backblaze.com\/blog\/backblaze-subversion-time-to-change\/#primaryimage","url":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2014\/10\/blog-source-control-share2.jpg","contentUrl":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2014\/10\/blog-source-control-share2.jpg","width":720,"height":405},{"@type":"BreadcrumbList","@id":"https:\/\/www.backblaze.com\/blog\/backblaze-subversion-time-to-change\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Backblaze and Subversion, Time to Change?"}]},{"@type":"WebSite","@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#website","url":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/","name":"Backblaze Cloud Solutions Blog","description":"Cloud Storage &amp; Cloud Backup","publisher":{"@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#organization","name":"Backblaze","url":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/www.backblaze.com\/blog\/wp-content\/uploads\/2017\/12\/backblaze_icon_transparent.png?fit=512%2C512&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.backblaze.com\/blog\/wp-content\/uploads\/2017\/12\/backblaze_icon_transparent.png?fit=512%2C512&ssl=1","width":512,"height":512,"caption":"Backblaze"},"image":{"@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/backblaze","https:\/\/x.com\/backblaze","https:\/\/www.youtube.com\/user\/Backblaze","https:\/\/en.wikipedia.org\/wiki\/Backblaze"]},{"@type":"Person","@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#\/schema\/person\/9ac7e0bf0bd16852f8bfef352ce5fa8c","name":"Andy Klein","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2019\/04\/andy.jpg","url":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2019\/04\/andy.jpg","contentUrl":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2019\/04\/andy.jpg","caption":"Andy Klein"},"description":"Andy Klein is the former Principal Cloud Storage Storyteller at Backblaze. He has over 25 years of experience in technology marketing and during that time, he has shared his expertise in cloud storage and computer security at events, symposiums, and panels at RSA, SNIA SDC, MIT, the Federal Trade Commission, and hundreds more. He currently writes and rants about drive stats, Storage Pods, cloud storage, and more.","url":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/author\/andy\/"}]}},"jetpack_featured_media_url":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2014\/10\/blog-source-control-share2.jpg","_links":{"self":[{"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/posts\/15671","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/comments?post=15671"}],"version-history":[{"count":0,"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/posts\/15671\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/media\/15831"}],"wp:attachment":[{"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/media?parent=15671"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/categories?post=15671"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/tags?post=15671"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}