This repository has been archived by the owner. It is now read-only.
Permalink
Browse files

massive refactor

  • Loading branch information...
V David Zvenyach
V David Zvenyach committed Sep 27, 2015
1 parent 5210ebe commit 53bbb72de31a22191e7eb1fa48e57fc2bac17a25
Showing with 17,085 additions and 63 deletions.
  1. +3 −1 .gitignore
  2. +6 −6 CONTRIBUTING.md
  3. +21 −0 _config.yml
  4. +60 −0 _includes/head.html
  5. +32 −0 _includes/navbar.html
  6. +17 −0 _layouts/main.html
  7. +19 −0 _layouts/recipes.html
  8. +4 −1 {recipes → _recipes-data}/agile.yml
  9. +3 −0 {recipes → _recipes-data}/api-first.yml
  10. +5 −1 {recipes → _recipes-data}/automated-testing.yml
  11. +17 −0 _recipes-data/continuous-deployment.yml
  12. +1 −0 recipes/environments.yml → _recipes-data/hosting-environments.yml
  13. +17 −0 _recipes-data/migrating-to-the-cloud.yml
  14. +2 −1 {recipes → _recipes-data}/modular-design.yml
  15. +1 −0 {recipes → _recipes-data}/open-source.yml
  16. +5 −0 {recipes → _recipes-data}/source-control.yml
  17. +3 −0 {recipes → _recipes-data}/template.yml
  18. +13 −0 _recipes-data/user-centered-design.yml
  19. +33 −0 _recipes/agile-development.md
  20. +27 −0 _recipes/api-first.md
  21. +39 −0 _recipes/automated-testing.md
  22. +25 −0 _recipes/continuous-deployment.md
  23. +29 −0 _recipes/hosting-environments.md
  24. +24 −0 _recipes/migrating-to-the-cloud.md
  25. +31 −0 _recipes/modular-design.md
  26. +33 −0 _recipes/open-source.md
  27. +29 −0 _recipes/source-control.md
  28. +19 −0 _recipes/user-centered-design.md
  29. +39 −0 assets/_scss/all.scss
  30. +95 −0 assets/_scss/components/_accordions.scss
  31. +78 −0 assets/_scss/components/_alerts.scss
  32. +25 −0 assets/_scss/components/_disclaimer.scss
  33. +292 −0 assets/_scss/components/_footer.scss
  34. +179 −0 assets/_scss/components/_forms.scss
  35. +101 −0 assets/_scss/components/_search.scss
  36. +73 −0 assets/_scss/components/_sidenav.scss
  37. +24 −0 assets/_scss/components/_skipnav.scss
  38. +24 −0 assets/_scss/core/_base.scss
  39. +92 −0 assets/_scss/core/_defaults.scss
  40. +10 −0 assets/_scss/core/_grid-settings.scss
  41. +116 −0 assets/_scss/core/_grid.scss
  42. +105 −0 assets/_scss/core/_utilities.scss
  43. +88 −0 assets/_scss/core/_variables.scss
  44. +190 −0 assets/_scss/elements/_buttons.scss
  45. +3 −0 assets/_scss/elements/_figure.scss
  46. +320 −0 assets/_scss/elements/_inputs.scss
  47. +39 −0 assets/_scss/elements/_labels.scss
  48. +82 −0 assets/_scss/elements/_list.scss
  49. +39 −0 assets/_scss/elements/_table.scss
  50. +220 −0 assets/_scss/elements/_typography.scss
  51. +427 −0 assets/_scss/lib/_normalize.scss
  52. +411 −0 assets/_scss/lib/bourbon/_bourbon-deprecated-upcoming.scss
  53. +87 −0 assets/_scss/lib/bourbon/_bourbon.scss
  54. +26 −0 assets/_scss/lib/bourbon/addons/_border-color.scss
  55. +48 −0 assets/_scss/lib/bourbon/addons/_border-radius.scss
  56. +25 −0 assets/_scss/lib/bourbon/addons/_border-style.scss
  57. +25 −0 assets/_scss/lib/bourbon/addons/_border-width.scss
  58. +64 −0 assets/_scss/lib/bourbon/addons/_buttons.scss
  59. +25 −0 assets/_scss/lib/bourbon/addons/_clearfix.scss
  60. +30 −0 assets/_scss/lib/bourbon/addons/_ellipsis.scss
  61. +31 −0 assets/_scss/lib/bourbon/addons/_font-stacks.scss
  62. +27 −0 assets/_scss/lib/bourbon/addons/_hide-text.scss
  63. +26 −0 assets/_scss/lib/bourbon/addons/_margin.scss
  64. +26 −0 assets/_scss/lib/bourbon/addons/_padding.scss
  65. +48 −0 assets/_scss/lib/bourbon/addons/_position.scss
  66. +66 −0 assets/_scss/lib/bourbon/addons/_prefixer.scss
  67. +25 −0 assets/_scss/lib/bourbon/addons/_retina-image.scss
  68. +51 −0 assets/_scss/lib/bourbon/addons/_size.scss
  69. +112 −0 assets/_scss/lib/bourbon/addons/_text-inputs.scss
  70. +34 −0 assets/_scss/lib/bourbon/addons/_timing-functions.scss
  71. +63 −0 assets/_scss/lib/bourbon/addons/_triangle.scss
  72. +29 −0 assets/_scss/lib/bourbon/addons/_word-wrap.scss
  73. +43 −0 assets/_scss/lib/bourbon/css3/_animation.scss
  74. +3 −0 assets/_scss/lib/bourbon/css3/_appearance.scss
  75. +3 −0 assets/_scss/lib/bourbon/css3/_backface-visibility.scss
  76. +42 −0 assets/_scss/lib/bourbon/css3/_background-image.scss
  77. +55 −0 assets/_scss/lib/bourbon/css3/_background.scss
  78. +59 −0 assets/_scss/lib/bourbon/css3/_border-image.scss
  79. +4 −0 assets/_scss/lib/bourbon/css3/_calc.scss
  80. +47 −0 assets/_scss/lib/bourbon/css3/_columns.scss
  81. +4 −0 assets/_scss/lib/bourbon/css3/_filter.scss
  82. +287 −0 assets/_scss/lib/bourbon/css3/_flex-box.scss
  83. +24 −0 assets/_scss/lib/bourbon/css3/_font-face.scss
  84. +4 −0 assets/_scss/lib/bourbon/css3/_font-feature-settings.scss
  85. +10 −0 assets/_scss/lib/bourbon/css3/_hidpi-media-query.scss
  86. +4 −0 assets/_scss/lib/bourbon/css3/_hyphens.scss
  87. +14 −0 assets/_scss/lib/bourbon/css3/_image-rendering.scss
  88. +36 −0 assets/_scss/lib/bourbon/css3/_keyframes.scss
  89. +38 −0 assets/_scss/lib/bourbon/css3/_linear-gradient.scss
  90. +8 −0 assets/_scss/lib/bourbon/css3/_perspective.scss
  91. +8 −0 assets/_scss/lib/bourbon/css3/_placeholder.scss
  92. +39 −0 assets/_scss/lib/bourbon/css3/_radial-gradient.scss
  93. +42 −0 assets/_scss/lib/bourbon/css3/_selection.scss
  94. +19 −0 assets/_scss/lib/bourbon/css3/_text-decoration.scss
  95. +15 −0 assets/_scss/lib/bourbon/css3/_transform.scss
  96. +71 −0 assets/_scss/lib/bourbon/css3/_transition.scss
  97. +3 −0 assets/_scss/lib/bourbon/css3/_user-select.scss
  98. +11 −0 assets/_scss/lib/bourbon/functions/_assign-inputs.scss
  99. +20 −0 assets/_scss/lib/bourbon/functions/_contains-falsy.scss
  100. +26 −0 assets/_scss/lib/bourbon/functions/_contains.scss
  101. +11 −0 assets/_scss/lib/bourbon/functions/_is-length.scss
  102. +21 −0 assets/_scss/lib/bourbon/functions/_is-light.scss
  103. +11 −0 assets/_scss/lib/bourbon/functions/_is-number.scss
  104. +13 −0 assets/_scss/lib/bourbon/functions/_is-size.scss
  105. +69 −0 assets/_scss/lib/bourbon/functions/_modular-scale.scss
  106. +13 −0 assets/_scss/lib/bourbon/functions/_px-to-em.scss
  107. +15 −0 assets/_scss/lib/bourbon/functions/_px-to-rem.scss
  108. +24 −0 assets/_scss/lib/bourbon/functions/_shade.scss
  109. +17 −0 assets/_scss/lib/bourbon/functions/_strip-units.scss
  110. +24 −0 assets/_scss/lib/bourbon/functions/_tint.scss
  111. +22 −0 assets/_scss/lib/bourbon/functions/_transition-property-name.scss
  112. +27 −0 assets/_scss/lib/bourbon/functions/_unpack.scss
  113. +21 −0 assets/_scss/lib/bourbon/helpers/_convert-units.scss
  114. +96 −0 assets/_scss/lib/bourbon/helpers/_directional-values.scss
  115. +43 −0 assets/_scss/lib/bourbon/helpers/_font-source-declaration.scss
  116. +13 −0 assets/_scss/lib/bourbon/helpers/_gradient-positions-parser.scss
  117. +25 −0 assets/_scss/lib/bourbon/helpers/_linear-angle-parser.scss
  118. +41 −0 assets/_scss/lib/bourbon/helpers/_linear-gradient-parser.scss
  119. +61 −0 assets/_scss/lib/bourbon/helpers/_linear-positions-parser.scss
  120. +31 −0 assets/_scss/lib/bourbon/helpers/_linear-side-corner-parser.scss
  121. +69 −0 assets/_scss/lib/bourbon/helpers/_radial-arg-parser.scss
  122. +50 −0 assets/_scss/lib/bourbon/helpers/_radial-gradient-parser.scss
  123. +18 −0 assets/_scss/lib/bourbon/helpers/_radial-positions-parser.scss
  124. +26 −0 assets/_scss/lib/bourbon/helpers/_render-gradients.scss
  125. +10 −0 assets/_scss/lib/bourbon/helpers/_shape-size-stripper.scss
  126. +50 −0 assets/_scss/lib/bourbon/helpers/_str-to-num.scss
  127. +7 −0 assets/_scss/lib/bourbon/settings/_asset-pipeline.scss
  128. +9 −0 assets/_scss/lib/bourbon/settings/_prefixer.scss
  129. +1 −0 assets/_scss/lib/bourbon/settings/_px-to-em.scss
  130. +8 −0 assets/_scss/lib/neat/_neat-helpers.scss
  131. +23 −0 assets/_scss/lib/neat/_neat.scss
  132. +49 −0 assets/_scss/lib/neat/functions/_new-breakpoint.scss
  133. +114 −0 assets/_scss/lib/neat/functions/_private.scss
  134. +15 −0 assets/_scss/lib/neat/grid/_box-sizing.scss
  135. +33 −0 assets/_scss/lib/neat/grid/_direction-context.scss
  136. +28 −0 assets/_scss/lib/neat/grid/_display-context.scss
  137. +22 −0 assets/_scss/lib/neat/grid/_fill-parent.scss
  138. +92 −0 assets/_scss/lib/neat/grid/_media.scss
  139. +87 −0 assets/_scss/lib/neat/grid/_omega.scss
  140. +38 −0 assets/_scss/lib/neat/grid/_outer-container.scss
  141. +25 −0 assets/_scss/lib/neat/grid/_pad.scss
  142. +35 −0 assets/_scss/lib/neat/grid/_private.scss
  143. +52 −0 assets/_scss/lib/neat/grid/_row.scss
  144. +50 −0 assets/_scss/lib/neat/grid/_shift.scss
  145. +94 −0 assets/_scss/lib/neat/grid/_span-columns.scss
  146. +97 −0 assets/_scss/lib/neat/grid/_to-deprecate.scss
  147. +42 −0 assets/_scss/lib/neat/grid/_visual-grid.scss
  148. +13 −0 assets/_scss/lib/neat/settings/_disable-warnings.scss
  149. +51 −0 assets/_scss/lib/neat/settings/_grid.scss
  150. +27 −0 assets/_scss/lib/neat/settings/_visual-grid.scss
  151. +102 −0 assets/css/google-fonts.css
  152. +2,297 −0 assets/css/main.css
  153. +7 −0 assets/css/main.scss
  154. +1 −0 assets/css/normalize.min.css
  155. +1,074 −0 assets/css/styleguide.scss
  156. BIN assets/fonts/merriweather-bold-webfont.eot
  157. +294 −0 assets/fonts/merriweather-bold-webfont.svg
  158. BIN assets/fonts/merriweather-bold-webfont.ttf
  159. BIN assets/fonts/merriweather-bold-webfont.woff
  160. BIN assets/fonts/merriweather-bold-webfont.woff2
  161. BIN assets/fonts/merriweather-italic-webfont.eot
  162. +283 −0 assets/fonts/merriweather-italic-webfont.svg
  163. BIN assets/fonts/merriweather-italic-webfont.ttf
  164. BIN assets/fonts/merriweather-italic-webfont.woff
  165. BIN assets/fonts/merriweather-italic-webfont.woff2
  166. BIN assets/fonts/merriweather-light-webfont.eot
  167. +299 −0 assets/fonts/merriweather-light-webfont.svg
  168. BIN assets/fonts/merriweather-light-webfont.ttf
  169. BIN assets/fonts/merriweather-light-webfont.woff
  170. BIN assets/fonts/merriweather-light-webfont.woff2
  171. BIN assets/fonts/merriweather-regular-webfont.eot
  172. +294 −0 assets/fonts/merriweather-regular-webfont.svg
  173. BIN assets/fonts/merriweather-regular-webfont.ttf
  174. BIN assets/fonts/merriweather-regular-webfont.woff
  175. BIN assets/fonts/merriweather-regular-webfont.woff2
  176. BIN assets/fonts/sourcesanspro-bold-webfont.eot
  177. +965 −0 assets/fonts/sourcesanspro-bold-webfont.svg
  178. BIN assets/fonts/sourcesanspro-bold-webfont.ttf
  179. BIN assets/fonts/sourcesanspro-bold-webfont.woff
  180. BIN assets/fonts/sourcesanspro-bold-webfont.woff2
  181. BIN assets/fonts/sourcesanspro-italic-webfont.eot
  182. +853 −0 assets/fonts/sourcesanspro-italic-webfont.svg
  183. BIN assets/fonts/sourcesanspro-italic-webfont.ttf
  184. BIN assets/fonts/sourcesanspro-italic-webfont.woff
  185. BIN assets/fonts/sourcesanspro-italic-webfont.woff2
  186. BIN assets/fonts/sourcesanspro-light-webfont.eot
  187. +915 −0 assets/fonts/sourcesanspro-light-webfont.svg
  188. BIN assets/fonts/sourcesanspro-light-webfont.ttf
  189. BIN assets/fonts/sourcesanspro-light-webfont.woff
  190. BIN assets/fonts/sourcesanspro-light-webfont.woff2
  191. BIN assets/fonts/sourcesanspro-regular-webfont.eot
  192. +989 −0 assets/fonts/sourcesanspro-regular-webfont.svg
  193. BIN assets/fonts/sourcesanspro-regular-webfont.ttf
  194. BIN assets/fonts/sourcesanspro-regular-webfont.woff
  195. BIN assets/fonts/sourcesanspro-regular-webfont.woff2
  196. BIN assets/img/alerts/error.png
  197. +17 −0 assets/img/alerts/error.svg
  198. BIN assets/img/alerts/info.png
  199. +18 −0 assets/img/alerts/info.svg
  200. BIN assets/img/alerts/success.png
  201. +12 −0 assets/img/alerts/success.svg
  202. BIN assets/img/alerts/warning.png
  203. +16 −0 assets/img/alerts/warning.svg
  204. BIN assets/img/arrow-down.png
  205. +11 −0 assets/img/arrow-down.svg
  206. BIN assets/img/arrow-right.png
  207. +44 −0 assets/img/arrow-right.svg
  208. BIN assets/img/correct8.png
  209. +8 −0 assets/img/correct8.svg
  210. +8 −0 assets/img/correct9.svg
  211. BIN assets/img/favicons/favicon-114.png
  212. BIN assets/img/favicons/favicon-144.png
  213. BIN assets/img/favicons/favicon-16.png
  214. BIN assets/img/favicons/favicon-192.png
  215. BIN assets/img/favicons/favicon-57.png
  216. BIN assets/img/favicons/favicon-72.png
  217. BIN assets/img/favicons/favicon.ico
  218. BIN assets/img/favicons/favicon.png
  219. BIN assets/img/logo-img.png
  220. BIN assets/img/minus.png
  221. +42 −0 assets/img/minus.svg
  222. BIN assets/img/plus.png
  223. +46 −0 assets/img/plus.svg
  224. BIN assets/img/search.png
  225. +13 −0 assets/img/search.svg
  226. BIN assets/img/social-icons/png/facebook25.png
  227. BIN assets/img/social-icons/png/rss25.png
  228. BIN assets/img/social-icons/png/twitter16.png
  229. BIN assets/img/social-icons/png/youtube15.png
  230. +9 −0 assets/img/social-icons/svg/facebook25.svg
  231. +22 −0 assets/img/social-icons/svg/rss25.svg
  232. +16 −0 assets/img/social-icons/svg/twitter16.svg
  233. +37 −0 assets/img/social-icons/svg/youtube15.svg
  234. BIN assets/img/us_flag_small.png
  235. +378 −0 assets/js/components.js
  236. +301 −0 assets/js/vendor/html5shiv.js
  237. +5 −0 assets/js/vendor/jquery-1.11.3.min.js
  238. +1 −0 assets/js/vendor/jquery-1.11.3.min.map
  239. +7 −0 assets/js/vendor/rem.min.js
  240. +341 −0 assets/js/vendor/respond.js
  241. +22 −0 assets/js/vendor/selectivizr-min.js
  242. +64 −47 data/recipes.json
  243. +16 −0 index.md
  244. +18 −0 lib/build.js
  245. +3 −3 lib/make.js
  246. +7 −3 package.json
@@ -1 +1,3 @@
node_modules/
node_modules/
_site
.sass-cache
@@ -1,9 +1,9 @@
## Contributing guidelines
To contribute a recipe to the repository, all you need to do is submit a pull request with a recipe in the `/_recipes-data` folder. The template for the recipes is available at [/_recipes-data/template.yml](_recipes-data/template.yml).
## Public domain
This project is in the public domain within the United States, and
copyright and related rights in the work worldwide are waived through
the [CC0 1.0 Universal public domain dedication](https://creativecommons.org/publicdomain/zero/1.0/).
This project is in the public domain within the United States, and copyright and related rights in the work worldwide are waived through the [CC0 1.0 Universal public domain dedication](https://creativecommons.org/publicdomain/zero/1.0/).
All contributions to this project will be released under the CC0
dedication. By submitting a pull request, you are agreeing to comply
with this waiver of copyright interest.
All contributions to this project will be released under the CC0 dedication. By submitting a pull request, you are agreeing to comply with this waiver of copyright interest.
@@ -0,0 +1,21 @@
markdown: kramdown
name: Contracting Cookbook
exclude:
- CONTRIBUTING.md
- README.md
- LICENSE.md
- node_modules
- package.json
- lib
data_source: data
google_analytics_ua: UA-48605964-19
repos:
- name: Contracting Cookbook
description: "Like Chef, but for Contracting"
url: https://github.com/18F/contracting-cookbook
collections:
recipes:
directory: recipes
output: true
sass:
sass_dir: assets/_scss
@@ -0,0 +1,60 @@
<!-- Basic Page Needs
================================================== -->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- Mobile Specific Metas
================================================== -->
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Title and meta description
================================================== -->
{% if page.title %}
<title>{{ site.name }} | {{ page.title }}</title>
<meta property="og:title" content="{{ site.name | xml_escape }} | {{ page.title | xml_escape }}" />
{% else %}
<title>{{ site.name }} | {{ site.title }}</title>
<meta property="og:title" content="{{ site.name | xml_escape }} | {{ site.title | xml_escape }}" />
{% endif %}
{% if page.description %}
<meta name="description" content="{{ page.description | xml_escape }}">
<meta property="og:description" content="{{ page.description | xml_escape }}" />
{% else %}
<meta name="description" content="{{ site.description | xml_escape }}">
<meta property="og:description" content="{{ site.description | xml_escape }}" />
{% endif %}
<link rel="canonical" href="{{ site.url }}{{ page.url }}" />
<!--[if lt IE 9]>
<script src="{{ site.baseurl }}/assets/js/vendor/html5shiv.js"></script>
<![endif]-->
<!-- Favicons
================================================== -->
<!-- 128x128 -->
<link rel="shortcut icon" type="image/ico" href="{{ site.baseurl }}/assets/img/favicons/favicon.ico" />
<link rel="icon" type="image/png" href="{{ site.baseurl }}/assets/img/favicons/favicon.png" />
<!-- 192x192, as recommended for Android
http://updates.html5rocks.com/2014/11/Support-for-theme-color-in-Chrome-39-for-Android
-->
<link rel="icon" type="image/png" sizes="192x192" href="{{ site.baseurl }}/assets/img/favicons/favicon-192.png" />
<!-- 57x57 (precomposed) for iPhone 3GS, pre-2011 iPod Touch and older Android devices -->
<link rel="apple-touch-icon-precomposed" href="{{ site.baseurl }}/assets/img/favicons/favicon-57.png">
<!-- 72x72 (precomposed) for 1st generation iPad, iPad 2 and iPad mini -->
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="{{ site.baseurl }}/assets/img/favicons/favicon-72.png">
<!-- 114x114 (precomposed) for iPhone 4, 4S, 5 and post-2011 iPod Touch -->
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="{{ site.baseurl }}/assets/img/favicons/favicon-114.png">
<!-- 144x144 (precomposed) for iPad 3rd and 4th generation -->
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="{{ site.baseurl }}/assets/img/favicons/favicon-144.png">
<!-- CSS
================================================== -->
<link rel="stylesheet" href="{{ "/assets/css/google-fonts.css" | prepend: site.baseurl }}">
<link rel="stylesheet" href="{{ "/assets-styleguide/css/prism.css" | prepend: site.baseurl }}">
<link rel="stylesheet" href="{{ "/assets/css/styleguide.css" | prepend: site.baseurl }}">
@@ -0,0 +1,32 @@
<a class="skipnav" href="#main-content">Skip to main content</a>
<header class="usa-site-header" role="banner">
<div class="usa-disclaimer">
<span class="usa-disclaimer-official">
<img class="usa-flag_icon" alt="US flag signifying that this is a United States Federal Government website" src="{{ site.baseurl }}/assets/img/us_flag_small.png">
An official website of the United States Government
</span>
<span class="usa-disclaimer-stage">This site is currently in alpha. <a href="https://18f.gsa.gov/dashboard/stages/#alpha">Learn more.</a></span>
</div>
<nav class="usa-site-navbar">
<a class="menu-btn" href="#">Menu</a>
<div class="logo" id="logo">
<h1>
<a href="{{ site.baseurl }}/" accesskey="1" title="Home" aria-label="Home">
Contracting Cookbook</a>
</h1>
</div>
<ul class="usa-button-list usa-unstyled-list">
<li>
<a class="usa-button usa-button-outline" href="{{ site.repos[0].url }}" onclick="ga('send', 'event', 'Viewed on Github', 'Clicked View on Github from inside site');">
View on GitHub
</a>
</li>
</ul>
</nav>
</header>
<div class="overlay"></div>
@@ -0,0 +1,17 @@
<!DOCTYPE html>
<html lang="en">
<head>
{% include head.html %}
</head>
<body>
{% include navbar.html %}
<section id="main" class="main-content" role="main">
{{ content }}
</section>
</body>
</html>
@@ -0,0 +1,19 @@
---
layout: main
permalink: /recipes/{{basename}}/
---
# {{title}}
> {{snippets}}
{{description}}
## Ingredients
{% for ingredient in ingredients %}
{{ingredient}}
{% endfor %}
## Directions
{% for direction in directions %}
{{direction}}
{% endfor %}
@@ -17,5 +17,8 @@ directions:
- Embrace the fact that agile software development requires flexibility in direction
- "Ensure that your agency is prepared to manage short iterative, deployment of software."
snippets: "The contractor shall use agile management best practices (e.g., story-point estimation, velocity measurement) for estimating, planning, managing risk, and communicating status, to enable the effective management of the project team, along with user and product-owner expectations as to what will be done and by when. The process should also enable immediate course corrections when the team isn’t performing at the highest levels possible, or if project priorities shift; and maximize the likelihood of overall project success in terms of cost, schedule, quality, and value. The contractor and product owner shall define and adopt user-acceptance criteria for user stories."
authors:
- vzvenyach
tags:
- agile
- agile
basename: agile-development
@@ -11,6 +11,9 @@ directions:
- "Once you have an API, ensure that your presentation interface is built using the API. Expect that, as the presentation interface matures, there will be a need to optimize and refine the design of the API itself. This is a good, and natural result of an API-First approach."
- "Make sure that the API is well documented, so that it is easier to make future changes to the presentation interface (or adoption of alternative presentations)."
snippets: "Finally, [agency] requires that the source of data used in the site be the outbound API."
authors:
- vzvenyach
tags:
- APIs
- data
basename: api-first
@@ -17,7 +17,11 @@ directions:
- "Acceptance tests tend to take a long time to run, while unit tests should happen in milliseconds. Write many unit tests, some functional tests and few acceptance tests. Test suites that invert these ratios become dauntingly slow, frustrating engineers."
- "When starting testing on a code base that has no tests or doesn't have enough test, be practical. It can be an overwhelming exercise in boiling the ocean to try to get everything under test. Instead focus on putting tests around anything that is changing. As features, bugs and refactorings become necessary, put all the code that you touch under test. Test coverage can be determined with freely available test coverage tools, available in most languages."
- "To ensure that your tests have the maximum impact for your project, work with a continuous integration server. There are hosted services that provide this server for your tests and can be connected to your code repository for automatic runs. One example is [Travis CI](https://travis-ci.org/). Travis CI is also an open source project and can be hosted on your private servers."
snippets:
snippets: ""
authors:
- baccigalupi
- vzvenyach
tags:
- Unit Testing
- Integration Testing
basename: automated-testing
@@ -0,0 +1,17 @@
title: "Continuous Deployment"
description: |
[Play 10](https://playbook.cio.gov/#play10) of the US Digital Services Playbook is to "[a]utomate testing and deployments." As discussed in "Automated Testing," it is imperative to ensure continuous integration. But equally important is ensuring continous deployment.
As a practical matter, implementing continuous deployment is more of a workflow pattern than a specific toolset. The general premise of continuous deployment is that an application should be able to automatically deploy--regularly throughout the development process--into multiple, nearly identical environments. The advantage of continuous deployment is that a developer should be able to make application-level changes without worrying about the overhead of deploying those changes into various environments (see "Hosting Environments").
There are many different ways to achieve continuous deployment (e.g., build packs, container-based deployments, etc.), but the central requirement is to ensure no-downtime, automated deployments into a given host environment based on changes to the application's codebase.
ingredients:
- Host environments
- Application-level source control
- Automated testing
directions:
-
snippets: ""
authors:
- vzvenyach
tags:
- continuous deployment
basename: continuous-deployment
@@ -18,3 +18,4 @@ tags:
- continuous deployment
- agile
- hosting
basename: hosting-environments
@@ -0,0 +1,17 @@
title: "Migrating to the Cloud"
description: |
According to the [NIST definition of "cloud"](http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf):
> Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.
Traditionally from the government's perspective, the most attractive feature of the cloud is that it is "on-demand." If you have an application that requires a new server, the cloud should make it trivial to simply "spin up" a new server. Similarly, if you have an existing server, but you need to duplicate it to respond to significant "load" on the server, the cloud should make it trivial to spin up a copy of that server. This dynamic quality of the cloud enables entirely different software development/deployment patterns from those that existed before the cloud.
There are 3 common "service models" for cloud products: Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS). Depending on the agency's needs, an agency will need to buy multiple cloud products within each service model. For the most part, IaaS and SaaS (less so for PaaS) are largely "commodity" offerings in the sense that costs and services are largely fixed by market conditions. Nevertheless, defining an agency's requirements is often quite difficult, because the cloud fundamentally affects the deployment patterns used by the program office. As such, 18F generally advises agencies to adopt an [phased, incremental approach to "cloud migration"](https://18f.gsa.gov/2015/06/22/avoiding-cloudfall/), focusing on buying smaller increments of infrastucture early on and expanding based on the agency's deployment needs.
ingredients:
- "[FedRAMP](https://www.fedramp.gov/)"
directions:
- "Before buying cloud services, familiarize yourself with FedRAMP, including systems that have received a FedRAMP approved ATO (Authority to Operate)."
- "Develop an agency-specific framework for a phased approach to cloud migration. In doing so, take advantage of existing contract vehicles and micropurchase thresholds for discovery phases."
snippets: ""
authors:
- vzvenyach
tags:
- cloud
basename: migrating-to-the-cloud
@@ -16,4 +16,5 @@ directions:
snippets: "(As part of the evaluation criteria) The offeror's technical approach shall describe how the vendor will ensure loose coupling and separation of concerns, where appropriate."
tags:
- modular design
- FITARA
- FITARA
basename: modular-design
@@ -16,3 +16,4 @@ directions:
snippets: "The Contractor shall develop all source code that should become property of the Government, for software deliverables which shall be made available by the contractor to the public as open source software, under the terms and conditions of a license determined or approved by the Government."
tags:
- Open Source
basename: open-source
@@ -11,5 +11,10 @@ directions:
- "Preheat - Prepare your repository for source control: Some binary files are not appropriate for source control. In the case of large binary files, the file changes cannot be comprehended easily by mere mortals, so recording the differences in the files looses its meaning. Also, binary files are often very large, requiring massive transfer bandwidth. Binaries are appropriate when an integral part of the history. For example, many images are relevant and changing resources in a web application. Omiting them from the repository would cause more pain than gain. Careful thought should go into what should be in and out of the repository. Source control tools allow ignoring files."
- Learn your source control tool. Both recommended tools are open source with great tutorials and community support. You can get rapid benefits without having to fully know your tool.
- "Create a central repository to act and the source of truth. 18F uses git as a tool and hosts repositories via [Github](https://github.com). Mercurial repositories can be likewise hosted on the service [Bitbucket](https://bitbucket.org/). It is possible to roll your own repository host on a server, but it is likely that the laws governing your digital content allow source control hosting via a cloud service."
authors:
- baccigalupi
- vzvenyach
snippets: ""
tags:
- Source Control
basename: source-control
@@ -6,5 +6,8 @@ ingredients:
directions:
- First
- Second
authors:
- Author 1
tags:
- Recipe
basename:
@@ -0,0 +1,13 @@
title: "User-Centered Design"
description: |
Stuff
ingredients:
- Stuff
directions:
- Stuff
snippets: ""
authors:
- vzvenyach
tags:
- Open Source
basename: user-centered-design
@@ -0,0 +1,33 @@
---
layout: main
permalink: /recipes/agile-development/
---
# Agile Development
Although the practices of agile software development has many flavors (e.g., Scrum, SAFe, XP, Kanban), the core principles of agile software are described in the [Agile Manifesto](http://www.agilemanifesto.org/). From a deliverable standpoint, the two key principles are to prioritize: (1) "Working software over comprehensive documentation" and (2) "Responding to change over following a plan." As such, when the government prepares a contract solicitation for agile software development, the deliverables should almost always be "working software" delivered on a quick and regular basis.
Often, agile software development is contrasted with "waterfall" processes. Waterfall involves a phased approach to software development where requirements gathering, analysis, design, development, testing, and user acceptance are broken out into discrete phases. In other words, in waterfall, design should not occur before all requirements are gathered, and development should not occur until design is completed.
Unlike waterfall, agile generally requires that *all* of these phases occur within shorter cycles, commonly referred to as "sprints". In other words, as development occurs, new requirements are gathered, new designs will emerge, etc. Similarly, testing will occur throughout the process.
Within the US government, the [TechFAR](https://github.com/WhiteHouse/playbook/blob/gh-pages/_includes/techfar-online.md) is the leading source on explaining how agile software development can be harmonized with the Federal Acquisition Regulations.
> The contractor shall use agile management best practices (e.g., story-point estimation, velocity measurement) for estimating, planning, managing risk, and communicating status, to enable the effective management of the project team, along with user and product-owner expectations as to what will be done and by when. The process should also enable immediate course corrections when the team isn’t performing at the highest levels possible, or if project priorities shift; and maximize the likelihood of overall project success in terms of cost, schedule, quality, and value. The contractor and product owner shall define and adopt user-acceptance criteria for user stories.
## Ingredients
The TechFAR
A clear product vision
A willingness to let users determine the product's direction
## Directions
Review the TechFAR
Embrace the fact that agile software development requires flexibility in direction
Ensure that your agency is prepared to manage short iterative, deployment of software.
Oops, something went wrong.

0 comments on commit 53bbb72

Please sign in to comment.