added interactive tour of a brooklyn blueprint in docs under "learn more". lots of snazzy css/js. needs testing in more browsers though.
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/24f07994 Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/24f07994 Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/24f07994 Branch: refs/heads/master Commit: 24f079940c7905bd4bef45467b35396c737ead52 Parents: 640a980 Author: Alex Heneveld <[email protected]> Authored: Wed Jan 14 09:25:30 2015 +0000 Committer: Alex Heneveld <[email protected]> Committed: Thu Jan 15 16:33:00 2015 +0000 ---------------------------------------------------------------------- docs/_includes/base-scss.scss | 29 ++- docs/style/css/base.scss | 249 +++++++++++++++++++++----- docs/website/learnmore/blueprint-tour.md | 192 ++++++++++++++++++++ docs/website/learnmore/index.md | 30 ++-- docs/website/learnmore/theory.md | 10 +- docs/website/learnmore/yaml-explained.md | 8 - 6 files changed, 447 insertions(+), 71 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/24f07994/docs/_includes/base-scss.scss ---------------------------------------------------------------------- diff --git a/docs/_includes/base-scss.scss b/docs/_includes/base-scss.scss index f6d850f..d102394 100644 --- a/docs/_includes/base-scss.scss +++ b/docs/_includes/base-scss.scss @@ -1,12 +1,35 @@ $fonts: "Lato", "Helvetica Neue", Helvetica, Arial, sans-serif; -$text_color: #393939; +// colors /* this green is approx what is in the logo (taken from image picker) */ $brooklyn_green: #6db34b; +$bootstrap_theme_green_gradient_upper: #5cb85c; +$bootstrap_theme_green_gradient_lower: #48a648; +$vibrant_bg_green: $bootstrap_theme_green_gradient_lower; +$vibrant_fg_green: #483; -$a_color: #483; +$white_fa: #fafafa; +$white_f5: #f5f5f5; +$white_ee: #eee; +$white_dd: #ddd; // for borders and tooltip bg +$gray_aa: #aaa; +$gray_88: #888; +$gray_66: #666; + +$blackish: #393939; + +$bootstrap_blue_border: #428bca; + +// roles for colors + +$text_color: $blackish; + +$a_color: $vibrant_fg_green; $a_hover_color: $brooklyn_green; -$code_bg_color: #e8eded; \ No newline at end of file +//$code_bg_color: #e8eded; +$code_bg_color: $white_f5; + +$footer_icon_gray: $gray_88; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/24f07994/docs/style/css/base.scss ---------------------------------------------------------------------- diff --git a/docs/style/css/base.scss b/docs/style/css/base.scss index 9034e20..01a7122 100644 --- a/docs/style/css/base.scss +++ b/docs/style/css/base.scss @@ -11,7 +11,7 @@ body { font-family: $fonts; font-weight: 300; font-size: 17px; - background-color: #ffffff; + background-color: white; color: $text_color; } h1, h2, h3, h4, h5, h6 { font-family: Avenir, $fonts; } @@ -39,7 +39,7 @@ a[id]:empty, a[name]:empty { font-weight: 300; } .btn-default { - color: #666; + color: $gray_66; } .panel-heading { h4 { @@ -50,9 +50,9 @@ a[id]:empty, a[name]:empty { .panel-body { margin: 0px; font-size: 95%; - color: #606060; + color: $gray_66; padding: 15px; - background-color: #fafafa; + background-color: $white_fa; border-radius: 5px; p:first-child { margin-top: 0px; @@ -95,13 +95,14 @@ a[id]:empty, a[name]:empty { margin-top: -16px; padding-bottom: 6px; margin-bottom: 24px; - border-bottom: 1px dotted #aaa; + border-bottom: 1px dotted $gray_aa; font-weight: 300; font-size: 36px; text-transform: uppercase; } /* headings get a tooltip showing the permalink URL, a la github jekyll */ +/* install subset of font-awesome */ @font-face { font-family: 'FontAwesome'; src: url('{{ site.path.style }}/deps/font-awesome-4.2.0/fonts/fontawesome-webfont.eot'); @@ -121,6 +122,9 @@ a[id]:empty, a[name]:empty { .fa-link:before { content: "\f0c1"; } +.fa-play-circle-o:before { + content: "\f01d"; +} /* * This code is courtesy Ben Balter, modified by Parker Moore for jekyllrb.com * http://ben.balter.com/2014/03/13/pages-anchor-links/ @@ -149,14 +153,14 @@ a.header-literal-anchor { display: inline !important; } .tooltip .tooltip-inner { color: $text_color; - background-color: #ccc; + background-color: $white_dd; font-weight: 500; } .tooltip.top .tooltip-arrow { - border-top-color: #ccc; + border-top-color: $white_dd; } .tooltip.bottom .tooltip-arrow { - border-bottom-color: #ccc; + border-bottom-color: $white_dd; } /* WEBSITE MENUS @@ -252,12 +256,12 @@ a.header-literal-anchor { display: inline !important; } .navbar div.dropdown_section_header hr { margin: 4px 12px; - border-color: #ddd; + border-color: $white_dd; } .navbar div.dropdown_new_section hr { margin: 6px 0px; - border-color: #ddd; + border-color: $white_dd; } /* pop-up top-menu */ @@ -265,14 +269,14 @@ a.header-literal-anchor { display: inline !important; } .navbar-default .navbar-nav > li > a:focus, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus { - background-color: #f5f5f5; + background-color: $white_f5; color: $brooklyn_green; } .top-menu { font-size: 14px; font-weight: 400; .dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus { - background-color: #f5f5f5; + background-color: $white_f5; background-image: none; color: $brooklyn_green; } @@ -311,20 +315,11 @@ a.header-literal-anchor { display: inline !important; } a.breadcrumb { padding-left: 70px; } div.sub-item { - background-color: #48a648; - border-left: 1px solid #428bca; - /* - border-bottom: 1px solid #428bca; - border-top: 1px solid #428bca; - border-right: 1px solid #428bca; - */ - /* - padding-bottom: 6px; - padding-right: 6px; - */ + background-color: $bootstrap_theme_green_gradient_lower; + border-left: 1px solid $bootstrap_blue_border; } div.sub-item:last-child { - border-bottom: 1px solid #ddd; + border-bottom: 1px solid $white_dd; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; } @@ -332,7 +327,7 @@ a.header-literal-anchor { display: inline !important; } border-bottom-right-radius: 4px !important; } a.with-sub-item { - /* border-bottom: 1px solid #ddd; */ + /* border-bottom: 1px solid $white_dd; */ border-bottom: 0; } a.sub-item { @@ -344,18 +339,12 @@ a.header-literal-anchor { display: inline !important; } padding-bottom: 8px; } a.sub-item.list-group-item.active { -// background-image: -webkit-linear-gradient(top, #5cb85c 0%, #48a648 100%); -// background-image: linear-gradient(to bottom, #5cb85c 0%, #48a648 100%); - -// background-image: -webkit-linear-gradient(top, #ff0000 0%, #0000ff 100%); -// background-image: linear-gradient(to bottom, #6ca06c 0%, #589058 100%); - - background-color: #f5f5f5; + background-color: $white_f5; // the below is needed to achieve the above, since bg-image is already set - background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #f5f5f5 100%); - background-image: linear-gradient(to bottom, #f5f5f5 0%, #f5f5f5 100%); + background-image: -webkit-linear-gradient(top, $white_f5 0%, $white_f5 100%); + background-image: linear-gradient(to bottom, $white_f5 0%, $white_f5 100%); - border-color: #ddd; + border-color: $white_dd; color: $text_color; text-shadow: none; // not sure why the bottom border is visible at all, and stays on hover, but vanishes on 'active'; @@ -390,12 +379,12 @@ div#footer { width: 100%; padding-top: 1em; padding-bottom: 1em; - background-color: #f5f5f5; + background-color: $white_f5; text-align: center; font-size: 80%; } .octicon-footer { - color: #777; + color: $footer_icon_gray; font-size: 130%; position: relative; top: 2px; @@ -417,23 +406,28 @@ a:hover .octicon-footer { @mixin code() { font-family: Consolas, Lucida Console, Monaco, monospace; @include nowrap(); - font-size: 85%; + font-size: 14px; /* override color and bg-color on 'code' from bootstrap, and a touch more padding on top since font-size is smaller */ color: $text_color; background-color: $code_bg_color; } -pre { +@mixin pre() { @include code(); padding: 0.4em 0.8em; overflow-x: scroll; /* override border and line-height on 'pre' from bootstrap */ border: none; border-radius: 2px; - line-height: 1; + line-height: 1.4; + font-size: 13px; +} + +pre { + @include pre(); code { /* override settings on 'pre code' from bootstrap */ - @include code(); + @include pre(); line-height: 1; /** and no padding since pre already has some */ padding: 0px; @@ -484,3 +478,176 @@ div.feather.landing { max-width: 100%; } } + +/* YAML EXPLAINED + ----------------------------------------------------------------------- */ + +$explained_code_bg_color: $gray_66; +$explained_code_fg_color: $white_dd; +$explained_code_highlight_bg_color: $vibrant_bg_green; +$explained_code_highlight_fg_color: $white_fa; +$explained_text_highlight_fg_color: $text_color; +$explained_text_highlight_bg_color: $white_fa; + +$code_width: 57%; +$annotation_width: 41%; + +div.annotated_blueprint { + margin-top: 60px; + div.code_scroller { + background-color: $code_bg_color; + border: 0.4em solid $explained_code_bg_color; + border-left: 0; + border-right: 0; + border-radius: 3px; + width: $code_width; + margin-right: 0px; + margin-left: auto; + background-color: $explained_code_bg_color; + color: $explained_code_fg_color; + overflow-x: scroll; + div { + overflow-x: visible !important; + overflow-y: visible !important; + } + div.code_viewer { + width: auto; + height: 100%; + div.block { + display: flex; + align-items: center; + z-index: -10; + } + div.block > div:last-child { + @include pre(); + border: 0; + border-radius: 0; + padding: 0px 0.6em; + background-color: $explained_code_bg_color; + color: $explained_code_fg_color; + min-width: 100%; + margin-top: 3px; + margin-bottom: 3px; + } + div.block > div.annotations_wrapper1 { + font-family: $fonts; + div.annotations_wrapper2 { + // seems we have to use abs positioning because other techniques + // (translation, negative margins, etc) don't show up outside the scroll-x + position: absolute; + transform: translateX(-100%) translateY(-50%); + width: $annotation_width; + + display: flex; + align-items: center; + div.annotations { + // positioning and sizing + height: auto; + width: 100%; + padding: 8px 8px; + color: $explained_text_highlight_fg_color; + + div.short { + font-size: 125%; + text-align: right; + } + div.long { + display: none; + + font-size: 85%; + p { margin: 8px 0 8px 0; } + p:first-child { margin-top: 0; } + p:last-child { margin-bottom: 0; } + } + } + div.connector { + height: 7px; + width: 24px; + } + } + } + div.block:hover > div:last-child { + background-color: $explained_code_highlight_bg_color; + color: $explained_code_highlight_fg_color; + // TODO the bg color doesn't apply to regions which are only visible after a scroll-right :( + // to fix this i think we can us JS to set width of div.block to the width of this, the code last-child + } + div.block:hover { + z-index: 30 !important; + div.annotations_wrapper1 { + z-index: 30 !important; + } + div.annotations { + background-color: $explained_text_highlight_bg_color; + border: 4px solid $explained_code_highlight_bg_color; + border-radius: 8px; + text-align: center; + div.short { + font-size: 100% !important; + text-align: center !important; + color: $text_color; + margin-bottom: 8px; + font-weight: bold; + z-index: 10; + } + div.long { display: inherit !important; } + } + div.connector { + background-color: $explained_code_highlight_bg_color; + } + } + // highlighting of key code segments + div.block > div:last-child .ann_highlight { + font-weight: bold; + color: #e8f0e0; + } + div.block:hover > div:last-child .ann_highlight { + color: #f8fff8; + } + } + } + div.code_viewer:hover { + div.annotations div.short { + color: $gray_aa; + } + } + + // have an initial notice + div.code_scroller { + div.initial_notice { + height: 0; + width: 0; + overflow-x: visible; + overflow-y: visible; + } + div.initial_notice > div { + z-index: 10; + background-color: transparentize($gray_aa, 0.1); + position: relative; + width: 0; + height: 0; + display: flex; + align-items: top; + } + div.initial_notice > div > div { + padding-top: 24px; + font-size: 125%; + font-weight: bold; + text-align: center; + width: 100%; + .ann_light { + padding-top: 12px; + font-weight: 300; + } + .ann_play { + display: block; + padding-top: 24px; + padding-bottom: 24px; + font-size: 600%; + } + } + } + div.code_scroller:hover div.initial_notice { + display: none; + } +} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/24f07994/docs/website/learnmore/blueprint-tour.md ---------------------------------------------------------------------- diff --git a/docs/website/learnmore/blueprint-tour.md b/docs/website/learnmore/blueprint-tour.md new file mode 100644 index 0000000..c202d19 --- /dev/null +++ b/docs/website/learnmore/blueprint-tour.md @@ -0,0 +1,192 @@ +--- +layout: website-normal +title: A Quick Tour of a Brooklyn Blueprint +title_in_menu: Blueprint Tour +--- + + +<div class="jumobotron annotated_blueprint" markdown="1"> + <div class="code_scroller"> + <div class="initial_notice"><div><div> + Hover over an element to learn more + <div class="ann_light">This message will self-destruct in <span id="countdown">3s</span></div> + <div class="ann_play fa fa-play-circle-o"></div> + </div></div></div> + <div class="code_viewer"> + +<div class="block"> + <div class="annotations_wrapper1"><div class="annotations_wrapper2"><div class="annotations"> + <div class="short"> + Describe your application + </div> + <div class="long"><p> + Start by giving it a name, + optionally adding a version and other metadata. + The format is YAML -- a human-friendly extension to JSON -- + following the + <a href="{{ site.path.guide }}/learnmore/theory.html">CAMP</a> standard. + </p><p> + Treat it like source code: use comments, version control it, test it with CI. + </p></div> + </div><div class="connector"><div> </div></div></div></div> +<div><span class="ann_highlight"># java chatroom with ruby chatbot and couchbase backend (example)</span> +name: Chatroom with Chatbot +services:</div></div> + +<div class="block"> + <div class="annotations_wrapper1"><div class="annotations_wrapper2"><div class="annotations"> + <div class="short"> + Compose blueprints + </div> + <div class="long"><p> + Choose your building blocks from a large curated catalog, + and compose them together to form new blueprints + you can deploy and share. + </p><p> + Customize with config keys, such as the initial size + and, for Couchbase, the data buckets required. + </p></div> + </div><div class="connector"><div> </div></div></div></div> +<div><span class="ann_highlight">- type: couchbase-cluster</span> + initialSize: 3 + createBuckets: [{ bucket: chatroom }] + id: chat-couchbase</div></div> + +<div class="block"> + <div class="annotations_wrapper1"><div class="annotations_wrapper2"><div class="annotations"> + <div class="short"> + Run scripts and recipes + </div> + <div class="long"><p> + Use bash, with variables supplied by Brooklyn; + or Chef recipes, with attributes passed from config; + or package managers, dockerfiles, etc. + </p></div> + </div><div class="connector"><div> </div></div></div></div> +<div>- type: bash-server + launch.command: | +<span class="ann_highlight"> wget http://example.com/couchbase-chat/chat-bot/{server.rb,Gemfile,install_ruby_and_libs.sh} + bash install_ruby_and_libs.sh + ruby ./server.rb $COUCHBASE_URL</span></div></div> + +<div class="block"> + <div class="annotations_wrapper1"><div class="annotations_wrapper2"><div class="annotations"> + <div class="short"> + Configure locations + </div> + <div class="long"><p> + Give generic VM properties or specific images and flavors. + Networking topologies and geographic constraints are also supported. + </p></div> + </div><div class="connector"><div> </div></div></div></div> +<div> provisioning.properties: +<span class="ann_highlight"> osFamily: ubuntu + minRam: 4gb</span> +</div></div> + +<div class="block"> + <div class="annotations_wrapper1"><div class="annotations_wrapper2"><div class="annotations"> + <div class="short"> + Inject dependencies + </div> + <div class="long"><p> + Connect entities with each other using + <i>sensors</i> published at runtime to give + just-in-time resolution for + shell variables, template expansion, REST calls, + and any other "happens-before" or "on-change" behaviour. + </p></div> + </div><div class="connector"><div> </div></div></div></div> +<div> shell.env: + COUCHBASE_URL: +<span class="ann_highlight"> $brooklyn:entity("chat-couchbase"). + attributeWhenReady("couchbase.cluster.connection.url")</span></div></div> + +<div class="block"> + <div class="annotations_wrapper1"><div class="annotations_wrapper2"><div class="annotations"> + <div class="short"> + Extend using Java + </div> + <div class="long"><p> + Create new entities, policies, and "effector" operations + using Java or JVM bridges to many languages, workflow systems, + or PaaSes. + </p><p> + Add new blueprints to the catalog, dynamically, + with versions and libraries handled + under the covers automatically with OSGi. + </p></div> + </div><div class="connector"><div> </div></div></div></div> +<div>- type: <span class="ann_highlight">brooklyn.entity.webapp.ControlledDynamicWebAppCluster:1.1.0</span> + war: http://example.com/couchbase-chat/chatroom.war + java.sysprops: + chat.db.url: $brooklyn:entity("couchbase").attributeWhenReady("couchbase.cluster.connection.url")</div></div> + +<div class="block"> + <div class="annotations_wrapper1"><div class="annotations_wrapper2"><div class="annotations"> + <div class="short"> + Attach management logic + </div> + <div class="long"><p> + Set up policies which subscribe to real-time metric sensors + to scale, throttle, failover, or follow-the-{sun,moon,action,etc}. + Cloud should be something that <i>applications</i> consume, not people! + </p></div> + </div><div class="connector"><div> </div></div></div></div> +<div> brooklyn.policies: + - type: <span class="ann_highlight">brooklyn.policy.autoscaling.AutoScalerPolicy</span> + brooklyn.config: + metric: $brooklyn:sensor("brooklyn.entity.webapp.DynamicWebAppCluster", "webapp.reqs.perSec.windowed.perNode") + metricLowerBound: 400 + metricUpperBound: 600</div></div> + +<div class="block"> + <div class="annotations_wrapper1"><div class="annotations_wrapper2"><div class="annotations"> + <div class="short"> + Run across many locations + </div> + <div class="long"><p> + Blueprints are designed for portability. + Pick from dozens of clouds in hundreds of datacenters. + Or machines with fixed IP addresses, localhost, + Docker on <a href="http://clocker.io">Clocker</a>, etc. + </p><p> + And you're not limited to servers: + services, PaaS, even networks can be locations. + </p></div> + </div><div class="connector"><div> </div></div></div></div> +<div>location: + <span class="ann_highlight">jclouds:aws-ec2</span>: + region: us-east-1 + identity: <i>AKA_YOUR_ACCESS_KEY_ID</i> + credential: <i>[access-key-hex-digits]</i></div></div> + + </div></div> +</div> + +<script language="JavaScript" type="application/javascript"> + +{% comment %} +I've done all I could manage with pure CSS. Just one thing, the bg color +on hover doesn't apply full width to the row if it extends the code_scroller. +Fix it with JS. + +Also resize the warning to be full size, and after first hover get rid of it. +{% endcomment %} + +$(function() { + maxCodeWidth = Math.max.apply(Math, $(".annotated_blueprint div.block > div:last-child").map(function(){ return this.scrollWidth; }).get()); + $(".annotated_blueprint div.block").width(maxCodeWidth); +}) + +$(".annotated_blueprint .code_scroller .initial_notice > div").height($(".annotated_blueprint .code_scroller .code_viewer").height()); +$(".annotated_blueprint .code_scroller .initial_notice > div").width($(".annotated_blueprint .code_scroller").width()); +$(".annotated_blueprint .code_scroller").hover(function() { + $(".annotated_blueprint .initial_notice").css("display", "none"); +}); +$(function() { + setTimeout(function() { $(".annotated_blueprint .initial_notice").hide(400); }, 3000); + setTimeout(function() { $(".annotated_blueprint #countdown").text("2s"); }, 1000); + setTimeout(function() { $(".annotated_blueprint #countdown").text("1s"); }, 2000); +}); +</script> http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/24f07994/docs/website/learnmore/index.md ---------------------------------------------------------------------- diff --git a/docs/website/learnmore/index.md b/docs/website/learnmore/index.md index 8035e07..a2e1c6f 100644 --- a/docs/website/learnmore/index.md +++ b/docs/website/learnmore/index.md @@ -2,27 +2,27 @@ layout: website-normal title: Learn More children: -# - yaml-explained.md +- blueprint-tour.md - { path: theory.md, title_in_menu: Theory } -- catalog/ +- { path: catalog/, title_in_menu: Browse Catalog } --- <!-- TODO have a list of resources here? or start w yaml explained? -What's a blueprint (image showing yaml with hovers for detail) -Intro video (2m video) -Features list (cf http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2FwhatsNew%2Fplatform_whatsnew.html -- though maybe with smaller screenshots at left and bigger text for summary!) -Supported software, clouds, and policies -The Theory -(based on existing top-level content; -introduction, core entities, glossary (maybe)) -News -infoq - http://www.infoq.com/news/2014/06/clocker -Adam Davis: The case for application-driven cloud computing (Gluecon keynote) http://www.cloudsoftcorp.com/blog/2014/06/adam-davis-case-application-driven-cloud-computing/ -[showing video at min 14] -FAQ (in time) - +Got a minute? blueprint-tour +Got two minutes? watch the video +Four minutes? read the features list + cf http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2FwhatsNew%2Fplatform_whatsnew.html -- though maybe with smaller screenshots at left and bigger text for summary!) +More time? + Browse the catalog of Supported software, clouds, and policies + Read on the Theory behing brooklyn + Read the Brooklyn News + infoq - http://www.infoq.com/news/2014/06/clocker + Adam Davis: The case for application-driven cloud computing (Gluecon keynote) http://www.cloudsoftcorp.com/blog/2014/06/adam-davis-case-application-driven-cloud-computing/ + [showing video at min 14] + twitter feed + selected blog posts --> {% include list-children.html %} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/24f07994/docs/website/learnmore/theory.md ---------------------------------------------------------------------- diff --git a/docs/website/learnmore/theory.md b/docs/website/learnmore/theory.md index 8175494..5f8d97f 100644 --- a/docs/website/learnmore/theory.md +++ b/docs/website/learnmore/theory.md @@ -173,10 +173,12 @@ model. ### Standards -Finally we note some emerging standards in this area. OASIS CAMP (Cloud -Application Management for Platforms) and TOSCA (Topology and Orchestration -Specification for Cloud Applications) both define YAML application models -similar to Brooklyn's. CAMP focuses on the REST API for interacting with such a +Finally we note some emerging standards in this area. OASIS CAMP +(<a href="https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=camp#technical">Cloud Application Management for Platforms</a>) +and TOSCA +(<a href="https://www.oasis-open.org/committees/tosca/">Topology and Orchestration Specification for Cloud Applications</a>) +both define YAML application models similar to Brooklyn's. +CAMP focuses on the REST API for interacting with such a management layer, and TOSCA focuses on declarative support for more sophisticated orchestration. Currently Brooklyn uses a YAML which complies with CAMP's syntax and exposes many of the CAMP REST API endpoints. We would like to http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/24f07994/docs/website/learnmore/yaml-explained.md ---------------------------------------------------------------------- diff --git a/docs/website/learnmore/yaml-explained.md b/docs/website/learnmore/yaml-explained.md deleted file mode 100644 index 6ada16c..0000000 --- a/docs/website/learnmore/yaml-explained.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -layout: website-normal -title: YAML Explained ---- - -<div class="jumobotron" markdown="1"> - -TODO
