github.com/comcast/canticle@v0.0.0-20161108184242-c53cface56e8/website/about.html (about) 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="utf-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1"> 7 <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --> 8 <meta name="description" content=""> 9 <meta name="author" content=""> 10 <link rel="icon" href="favicon.ico"> 11 12 <title>Canticle</title> 13 14 <!-- Bootstrap core CSS --> 15 <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> 16 <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/ie-emulation-modes-warning.js"></script> 17 18 <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> 19 <!--[if lt IE 9]> 20 <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> 21 <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> 22 <![endif]--> 23 24 <!-- Custom styles for this template --> 25 <link href="carousel.css" rel="stylesheet"> 26 </head> 27 <!-- NAVBAR 28 ================================================== --> 29 <body> 30 <nav class="navbar navbar-inverse navbar-fixed-top"> 31 <div class="container"> 32 <div class="navbar-header"> 33 <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> 34 <span class="sr-only">Toggle navigation</span> 35 <span class="icon-bar"></span> 36 <span class="icon-bar"></span> 37 <span class="icon-bar"></span> 38 </button> 39 <a class="navbar-brand" href="index.html"><img height="40" src="cant.png" /></a> 40 </div> 41 <div id="navbar" class="navbar-collapse collapse"> 42 <ul class="nav navbar-nav"> 43 <li><a href="index.html">Home</a></li> 44 <li class="active"><a href="about.html">About</a></li> 45 <li class="dropdown"> 46 <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Quick Start Guides<span class="caret"></span></a> 47 <ul class="dropdown-menu"> 48 <li><a href="quickstart.html#library">Library</a></li> 49 <li><a href="quickstart.html#project">Project</a></li> 50 <li><a href="quickstart.html#workspace">Workspace</a></li> 51 </ul> 52 </li> 53 <li class="dropdown"> 54 <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Docs<span class="caret"></span></a> 55 <ul class="dropdown-menu"> 56 <li class="dropdown-header">Canticle</li> 57 <li><a href="docs.html#cant"><code>cant</code></a></li> 58 <li role="separator" class="divider"></li> 59 <li class="dropdown-header">Commands</li> 60 <li><a href="docs.html#cantget"><code>cant get</code></a></li> 61 <li><a href="docs.html#cantsave"><code>cant save</code></a></li> 62 <li><a href="docs.html#cantvendor"><code>cant vendor</code></a></li> 63 <li><a href="docs.html#cantgenversion"><code>cant genversion</code></a></li> 64 <li role="separator" class="divider"></li> 65 <li class="dropdown-header">Internals</li> 66 <li><a href="docs.html#canticlefile">Canticle Files</a></li> 67 <li><a href="docs.html#vcs">VCS Commands</a></li> 68 </ul> 69 </li> 70 </ul> 71 <ul class="nav navbar-nav pull-right"> 72 <li class="icon-bar"><a title="sauce" href="http://github.com/Comcast/Canticle"><img src="https://assets.github.com/images/icons/emoji/octocat.png" /></a></li> 73 <li class="icon-bar"><a title="sauce" href="http://careers.stackoverflow.com/company/comcast-viper"><img src="ComcastFrog-VIPER-black.svg" /></a></li> 74 </ul> 75 </div> 76 </div> 77 </nav> <!-- /navbar --> 78 79 80 <!-- Marketing messaging and featurettes 81 ================================================== --> 82 <!-- Wrap the rest of the page in another container to center all the content. --> 83 84 <div class="container marketing"> 85 86 <div> 87 <h1>About Canticle</h1> 88 <h2>Licensing</h2> 89 <p>Canticle is an open source dependency management project 90 initially developed 91 by <a href="http://corporate.comcast.com/">Comcast's</a> <a href="http://careers.stackoverflow.com/company/comcast-viper">VIPER</a> 92 team. It 93 is <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache 94 2.0 licensed</a>.</p> The Comcast VIPER logo and Comcast name 95 are property of Comcast. The Github Octocat is property of 96 Github. The Canticle Logo is issued 97 under <a href="https://creativecommons.org/licenses/by-nc/4.0/legalcode">CC 98 BY-NC</a>. The Git, Subversion, Mercurial, Bazaar, and Docker 99 names and logos are property of their respective owners. They 100 are used here to reference compatibility with these projects, 101 not to imply endorsement.</p> 102 103 <h2>Getting Help</h2> 104 <p>The best way to ask for help is on the <a href="http://github.com/Comcast/Canticle">Canticle github site</a>.</p> 105 106 <h2>Project Status: <code>Beta</code></h1> 107 <p>Canticle is currently in beta. However, Comcast VIPER uses 108 it to manage hundreds of thousands of lines of go code that 109 span tens of projects.</p> 110 <h2>Limitations</h2> 111 <p>Canticle currently <i>does not</i> support the go1.5 vendor 112 or gb vendor folders. Support for this feature will be added 113 in the future.</p> 114 <p.>The branches behavior of the save command is currently 115 only supported for git. Support is planned for this soon.</p> 116 </div> 117 118 <hr class="featurette-divider"> 119 <div id="Rationale"> 120 <h1>Rationale</h1> 121 <h2>Desired Features</h2> 122 <p>Canticle was originally built to support: 123 <ul> 124 <li>Vendoring - <span class="text-muted">Keeping an internal copy of external code.</span></li> 125 <li>Version Locking - <span class="text-muted">Using a specific version of a dependent library.</span> 126 </li> 127 <li>Vanity Import Paths - <span class="text-muted">Using the import paths as they where originally written and intend.</span></li> 128 <li>Single Copy - <span class="text-muted">Not using multiple copies of a library internally.</span></li> 129 <li>Build Information - <span class="text-muted">Making sure any build can be 130 exactly replicated using information embedded in it.</span></li> 131 </ul> 132 </p> 133 <h2>Canticle's Take</h2> 134 <p>Vendoring and version locking are are necessities for 135 reproduce-able builds. Vendoring means keeping a copy of 136 external code internally. It <i>doesn't</i> mean keeping a 137 copy of the external code <i>in your code</i>. Canticle let's 138 you keep a copy of the code in your <i>internal vcs</i> 139 without checking it in with your code.</p> 140 <p>For example you can keep one copy of the go-mysql-driver in 141 your internal Gitlab or Github. Canticle then makes it so all 142 projects rely on the internal copies of that library. If your 143 projects need to rely on different versions the version 144 locking features take care of that.</p> 145 <p>You don't end up with multiple import paths or multiple 146 copies of the repo in the code base. You don't end up with 30 147 copies of code you must update when a critical bug is 148 found. Change sets to an opensource project can be pulled in 149 continuously <i>without</i> loosing build predictability 150 (through <a href="docs.html#cantgenversion">genversion</a>).</p> 151 <p>Keeping copies of external libraries code base in a 152 projects VCS is simply not sustainable. Either libraries 153 fall quickly out of sync or require periodic updates of that 154 copied code. This makes a mess out of commit history. It is a 155 painful and error prone processes.</p> 156 <p>Even worse it simply does not support some uses cases. If 157 12 microservices rely on a single core library (say 158 protocolbuffer schema) that library <i>can't</i> be copied 159 into every project and kept up to date in a usable 160 manner. That means one change requires manually updating code 161 in 12 places. The Canticle workspace concept is built to work 162 with this and with continuously deployed systems.</p> 163 <p>Canticle's vendoring system was inspired by the <code>go 164 get</code> syntax websites use to map a logical library into a 165 VCS command. A Canticle file basically says fetch the 166 "SourcePath" into the "Root" of a project at the 167 "Revision".</p> 168 <p>Canticle is also designed to support something no existing 169 tool does, large multi-team workspaces. Maintaining a version 170 lock and vendor file for a single project is not sustainable 171 when a code base spans tens of independent libraries and 172 projects. Canticle's workspace concept supports this.</p> 173 174 </div> 175 176 <!-- FOOTER --> 177 <footer> 178 <p class="pull-left"> </p> 179 <p class="pull-right"><a href="#">Back to top</a></p> 180 </footer> 181 182 </div><!-- /.container --> 183 184 185 <!-- Bootstrap core JavaScript 186 ================================================== --> 187 <!-- Placed at the end of the document so the pages load faster --> 188 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 189 <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> 190 <!-- Just to make our placeholder images work. Don't actually copy the next line! --> 191 <!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> 192 <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/ie10-viewport-bug-workaround.js"></script> 193 </body> 194 </html>