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>