All Projects → adr → Madr

adr / Madr

Licence: other
Markdown Architectural Decision Records

Projects that are alternatives of or similar to Madr

The Documentation Compendium
📢 Various README templates & tips on writing high-quality documentation that people want to read.
Stars: ✭ 4,306 (+798.96%)
Mutual labels:  documentation
Ru.reactjs.org
React documentation website in Russian / Официальная русская версия сайта React
Stars: ✭ 444 (-7.31%)
Mutual labels:  documentation
Awesome Writing
An awesome list of information to help developers write better, kinder, more helpful documentation and learning materials
Stars: ✭ 462 (-3.55%)
Mutual labels:  documentation
Rabbitmq Website
RabbitMQ website and documentation guides
Stars: ✭ 433 (-9.6%)
Mutual labels:  documentation
Sklearn Doc Zh
📖 [译] scikit-learn(sklearn) 中文文档
Stars: ✭ 4,520 (+843.63%)
Mutual labels:  documentation
Vsphere Automation Sdk Python
Python samples, language bindings, and API reference documentation for vSphere, VMC, and NSX-T using the VMware REST API
Stars: ✭ 451 (-5.85%)
Mutual labels:  documentation
Kubernetes practice
kubernetes实践指南(内容不定期更新中。。。), 欢迎提PR。
Stars: ✭ 428 (-10.65%)
Mutual labels:  documentation
Docs
TensorFlow documentation
Stars: ✭ 4,999 (+943.63%)
Mutual labels:  documentation
Verb
HEADS UP! Verb is going though a major transition, we've completely refactored everything from the ground up. If you're interested, please see the dev branch.
Stars: ✭ 442 (-7.72%)
Mutual labels:  documentation
Helm Dash
Browse Dash docsets inside emacs
Stars: ✭ 455 (-5.01%)
Mutual labels:  documentation
Purescript Jordans Reference
Learn PureScript with this "clone and play" repository
Stars: ✭ 434 (-9.39%)
Mutual labels:  documentation
Mathjax Docs
MathJax documentation. Beautiful math in all browsers. Beautifully documented.
Stars: ✭ 437 (-8.77%)
Mutual labels:  documentation
Openshift Docs
OpenShift 3 and 4 product and community documentation
Stars: ✭ 452 (-5.64%)
Mutual labels:  documentation
Mybatis Plus Doc
MyBatis-Plus Documentation
Stars: ✭ 431 (-10.02%)
Mutual labels:  documentation
Awesome Webpack
A curated list of awesome Webpack resources, libraries and tools
Stars: ✭ 4,470 (+833.19%)
Mutual labels:  documentation
Roxygen2
Generate R package documentation from inline R comments
Stars: ✭ 428 (-10.65%)
Mutual labels:  documentation
Docz
✍ It has never been so easy to document your things!
Stars: ✭ 22,020 (+4497.08%)
Mutual labels:  documentation
Ldoc
LDoc is a LuaDoc-compatible documentation generator which can also process C extension source. Markdown may be optionally used to render comments, as well as integrated readme documentation and pretty-printed example files.
Stars: ✭ 481 (+0.42%)
Mutual labels:  documentation
Awesome Openapi3
😎 A list of awesome projects related to OpenAPI 3.0.x, curated by the community
Stars: ✭ 469 (-2.09%)
Mutual labels:  documentation
Ava Docs
Localized docs for AVA
Stars: ✭ 455 (-5.01%)
Mutual labels:  documentation

Markdown Architectural Decision Records part of ADR

"Markdown Architectural Decision Records" (MADR) [ˈmæɾɚ] – architectural decisions that matter [ˈmæɾɚ].

News

Overview

An Architectural Decision (AD) is a software design choice that addresses a functional or non-functional requirement that is architecturally significant. This might, for instance, be a technology choice (e.g., Java vs. JavaScript), a choice of the IDE (e.g., IntelliJ vs. Eclipse IDE), a choice between a library (e.g., SLF4J vs java.util.logging), or a decision on features (e.g., infinite undo vs. limited undo). Do not take the term "architecture" too seriously or interpret it too strongly. As the examples illustrate, any decisions that might have an impact on the architecture somehow are architectural decisions.

It should be as easy as possible to a) write down the decisions and b) to version the decisions.

This repository offers a solution to record architectural decisions. It provides files to document Architectural Decisions using Markdown and Architectural Decision Records.

The decisions are placed in the folder docs/adr to

  1. Enable GitHub pages to render it using the web. See https://help.github.com/articles/configuring-a-publishing-source-for-github-pages/ for more information.
  2. Separate the architectural decisions from other documentation.

The filenames are following the pattern NNNN-title-with-dashes.md (ADR-0005), where

  • NNNN is a consecutive number and we assume that there won't be more than 9,999 ADRs in one repository.
  • the title is stored using dashes and lowercase, because adr-tools also does that.
  • the suffix is .md, because it is a Markdown file.

Table of Contents

The Template

The template reads as follows:

# [short title of solved problem and solution]

* Status: [proposed | rejected | accepted | deprecated | … | superseded by [ADR-0005](0005-example.md)] <!-- optional -->
* Deciders: [list everyone involved in the decision] <!-- optional -->
* Date: [YYYY-MM-DD when the decision was last updated] <!-- optional -->

Technical Story: [description | ticket/issue URL] <!-- optional -->

## Context and Problem Statement

[Describe the context and problem statement, e.g., in free form using two to three sentences. You may want to articulate the problem in form of a question.]

## Decision Drivers <!-- optional -->

* [driver 1, e.g., a force, facing concern, …]
* [driver 2, e.g., a force, facing concern, …]
*<!-- numbers of drivers can vary -->

## Considered Options

* [option 1]
* [option 2]
* [option 3]
*<!-- numbers of options can vary -->

## Decision Outcome

Chosen option: "[option 1]", because [justification. e.g., only option, which meets k.o. criterion decision driver | which resolves force force | … | comes out best (see below)].

### Positive Consequences <!-- optional -->

* [e.g., improvement of quality attribute satisfaction, follow-up decisions required, …]
*### Negative Consequences <!-- optional -->

* [e.g., compromising quality attribute, follow-up decisions required, …]
*## Pros and Cons of the Options <!-- optional -->

### [option 1]

[example | description | pointer to more information | …] <!-- optional -->

* Good, because [argument a]
* Good, because [argument b]
* Bad, because [argument c]
*<!-- numbers of pros and cons can vary -->

### [option 2]

[example | description | pointer to more information | …] <!-- optional -->

* Good, because [argument a]
* Good, because [argument b]
* Bad, because [argument c]
*<!-- numbers of pros and cons can vary -->

### [option 3]

[example | description | pointer to more information | …] <!-- optional -->

* Good, because [argument a]
* Good, because [argument b]
* Bad, because [argument c]
*<!-- numbers of pros and cons can vary -->

## Links <!-- optional -->

* [Link type] [Link to ADR] <!-- example: Refined by [ADR-0005](0005-example.md) -->
*<!-- numbers of links can vary -->

The template is available at template/template.md.

Example

# Use Markdown Architectural Decision Records

## Context and Problem Statement

We want to record architectural decisions made in this project.
Which format and structure should these records follow?

## Considered Options

* [MADR](https://adr.github.io/madr/) 2.1.0 - The Markdown Architectural Decision Records
* [Michael Nygard's template](http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions) - The first incarnation of the term "ADR"
* [Sustainable Architectural Decisions](https://www.infoq.com/articles/sustainable-architectural-design-decisions) - The Y-Statements
* Other templates listed at <https://github.com/joelparkerhenderson/architecture_decision_record>
* Formless - No conventions for file format and structure

## Decision Outcome

Chosen option: "MADR 2.1.0", because

* Implicit assumptions should be made explicit.
  Design documentation is important to enable people understanding the decisions later on.
  See also [A rational design process: How and why to fake it](https://doi.org/10.1109/TSE.1986.6312940).
* The MADR format is lean and fits our development style.
* The MADR structure is comprehensible and facilitates usage & maintenance.
* The MADR project is vivid.
* Version 2.1.0 is the latest one available when starting to document ADRs.

The example is rendered at template/0000-use-markdown-architectural-decision-records.md

For the MADR project itself, all ADRs exist at docs/adr/.

Apply it to your project

Initialization

Create folder docs/adr in your project. Copy all files in template from the MADR project to the folder docs/adr in your project.

For instance, using npm, this can be done using the following command:

npm install madr && mkdir -p docs/adr && cp node_modules/madr/template/* docs/adr/

Create a new ADR

Manual approach:

  1. Copy template.md to NNNN-title-with-dashes.md, where NNNN indicates the next number in sequence.
  2. Edit NNNN-title-with-dashes.md.
  3. Update index.md, e.g., by executing adr-log -d . You can get adr-log by executing npm install -g adr-log.

Note you can also use other patterns for the directory format, but then the tools cannot be applied.

Automatic approach:

Use our fork of adr-tools. See https://github.com/npryce/adr-tools/pull/43 for the current status of integration.

Development

Releasing a new version:

  1. Update CHANGELOG.md.
  2. Update README.md with the new template and the example.
  3. Adapt the version reference in template/0000-use-markdown-architectural-decision-records.md.
  4. Copy template/0000-use-markdown-architectural-decision-records.md to docs/adr/0000-use-markdown-architectural-decision-records.md.
  5. Update package.json, publish to npmjs, create GitHub release.
    Use release-it (do not create a release on GitHub) and github-release-from-changelog.

License

License: CC0

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].