# About This OpenSoundControl website
This is the 2021 version of the OpenSoundControl
[website](opensoundcontrol.org). It combines legacy OSC website
content (especially including the 1.0 Specification) with the
bare-bones implementation of [Matt Wright's CCRMA
Documentation](https://ccrma.stanford.edu/docs/toc.html) and a way for
people to [contribute](contribute.html) content that
[editors](editors.html) will moderate/curate/organize/publish.
The auto-generated [list of pages](page-list.html) and [table of
contents](toc.html) are one of the best ways to find information on
the site.
## Site Implementation
The source files use the
[Markdown](https://daringfireball.net/projects/markdown/)
format.
There
are
lots
of
great
Markdown
[guides](https://www.markdownguide.org),
tutorials,
[cheatsheets](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet)
etc.
Also
[the Pandoc manual](https://pandoc.org/MANUAL.html)
has lots of great info about Markdown in general and
[Pandoc's extensions to
Markdown](https://pandoc.org/MANUAL.html#pandocs-markdown) in
specific.
Every `.html` file comes from a corresponding `.md` file that you can
also download; for example this file [README.md](README.md) generates
the output [README.html](README.html).
The site's repo contains
[bash](https://en.wikipedia.org/wiki/Bash_(Unix_shell)) scripts to
[build](build.sh) the website html with [pandoc](https://pandoc.org),
[deploy](deploy-test.sh) to the webserver, and [build the overall
table of contents](build-index.sh).
Part of the simplicity of these scripts is based on limiting
assumptions about the structure of the source markdown files,
especially in the creation of the site's [page list](page-list) and
[table of contents](toc.html):
* all headings must use the markdown syntax with some number of `#` at
the beginning of the line (not the line of `---` on the next line).
* every file must contain at least one top-level (`#` i.e., HTML `
`)
* the "nesting structure" of the headings must be "well formed", e.g.,
you can't go from `#` (H1) to `###` (H3) without `##` (H2) in between.
* Can't use [pandoc metadata
blocks](https://pandoc.org/MANUAL.html#metadata-blocks) for pages'
title, author, and date, because that would mess up the incredibly
simple [navigation menu](navigation-menu.md) system.
* All within-site links must be relative URLs (starting neither with
"http" nor with "/" but rather just the name of the html file with
maybe a "../").
## Values
Here are some of the values and goals embodied in this project:
### User Values
* Simple, clear documentation oriented towards both beginngers ("what
is OSC? / "how do I use it?") and experts (implementors, developers, etc.)
* Simple, clean, accessible web design, not flashy / graphics-rich
* Clear and useful site navigation supporting discovery of curated
useful information
* Central location aspiring to link to "all" the world's information
about OpenSoundControl
* Mechanism for the OSC community to [contribute](contribute.html)
site content so it stays up do date.
* The site is for publication, not discussion. In other words, it's a
long-term site containing curated information intended to be useful
in the future, not a discusison forum such as slack / twitter /
reddit /
[stackoverflow](https://stackoverflow.com/search?q=opensoundcontrol).
(If something like this takes off, we would link to it from this
site.)
* Not a tech support help desk; more of an unstaffed reference library
* Slow publication cycle, easy to maintain (by volunteers hoping to
spend ~1-2 hours/month)
* Weak preference for the [serial
comma](https://en.wikipedia.org/wiki/Serial_comma)
### Technical Values
* Source content stored in simple files in a version control
repository (that tracks history), not some software's internal database
* Never have email addresses on the site or in the site's back-end repo
* Simple, lightweight open-source toolchain; not tied to any "heavy"
infrastructure such as Drupal.
* Source data (in .TSV and .md files) automatically become the site's
html files; html is built locally and not committed to the repo
* Designed for long-term maintainability with potentially infrequent updates
* Designed to be easy to migrate site content to another platform in the future
* Imposes some limits on markdown use to make the scripts easier to
implement
* Nothing set in stone: any aspects of the implementation are open
to improvement.