About the OpenSearch documentation repo
The documentation repository contains the documentation for OpenSearch, the search, analytics, and visualization suite with advanced security, alerting, SQL support, automated index management, deep performance analysis, and more. You can find the rendered documentation at opensearch.org/docs.
How you can help
Community contributions remain essential in keeping this documentation comprehensive, useful, well-organized, and up-to-date. If you are interested in contributing, please see the Contribution file.
Points of contact
If you encounter problems or have questions when contributing to the documentation, these people can help:
How the website works
This repository contains Markdown files organized into Jekyll "collections" (e.g., _search-plugins
, _opensearch
, etc.). Each Markdown file correlates with one page on the website.
Using plain text on GitHub has many advantages:
- Everything is free, open source, and works on every operating system. Use your favorite text editor, Ruby, Jekyll, and Git.
- Markdown is easy to learn and looks good in side-by-side diffs.
- The workflow is no different than contributing code. Make your changes, build locally to check your work, and submit a pull request. Reviewers check the PR before merging.
- Alternatives like wikis and WordPress are full web applications that require databases and ongoing maintenance. They also have inferior versioning and content review processes compared to Git. Static websites, such as the ones Jekyll produces, are faster, more secure, and more stable.
In addition to the content for a given page, each Markdown file contains some Jekyll front matter. Front matter looks like this:
---
layout: default
title: Alerting security
nav_order: 10
parent: Alerting
has_children: false
---
If you want to reorganize content or add new pages, keep an eye on has_children
, parent
, and nav_order
, which define the hierarchy and order of pages in the lefthand navigation. For more information, see the documentation for our upstream Jekyll theme.
Contribute content
There are a few ways to contribute content, depending on the magnitude of the change.
Minor changes
If you want to add a few paragraphs across multiple files and are comfortable with Git, try this approach:
-
Fork this repository.
-
Download GitHub Desktop, install it, and clone your fork.
-
Navigate to the repository root.
-
Create a new branch.
-
Edit the Markdown files in
/docs
. -
Commit, sign off, push your changes to your fork, and submit a pull request.
Major changes
If you're making major changes to the documentation and need to see the rendered HTML before submitting a pull request, here's how to make the changes and view them locally:
-
Fork this repository.
-
Download GitHub Desktop, install it, and clone your fork.
-
Navigate to the repository root.
-
Install Ruby if you don't already have it. We recommend RVM, but use whatever method you prefer:
curl -sSL https://get.rvm.io | bash -s stable rvm install 2.6 ruby -v
-
Install Jekyll if you don't already have it:
gem install bundler jekyll
-
Install dependencies:
bundle install
-
Build:
sh build.sh
-
If the build script doesn't automatically open your web browser (it should), open http://localhost:4000/docs/.
-
Create a new branch.
-
Edit the Markdown files in each collection (e.g.
_security-plugin/
).If you're a web developer, you can customize
_layouts/default.html
and_sass/custom/custom.scss
. -
When you save a file, marvel as Jekyll automatically rebuilds the site and refreshes your web browser. This process can take anywhere from 10-30 seconds.
-
When you're happy with how everything looks, commit, sign off, push your changes to your fork, and submit a pull request.
Writing tips
The OpenSearch team released style guidelines for our documentation and marketing content. These guidelines cover the style standards and terms to be observed when creating OpenSearch content. We ask that you please adhere to these guidelines whenever contributing content.
We also provide guidelines on terminology. For a list of OpenSearch terms, see Terms.
Classes within Markdown
This documentation uses a modified version of the just-the-docs Jekyll theme, which has some useful classes for labels and buttons:
[Get started](#get-started){: .btn .btn-blue }
## Get started
New
{: .label .label-green }
- Labels come in default (blue), green, purple, yellow, and red.
- Buttons come in default, purple, blue, green, and outline.
- Warning, tip, and note blocks are available (
{: .warning }
, etc.). - If an image has a white background, you can use
{: .img-border }
to add a one pixel border to the image.
These classes can help with readability, but should be used sparingly. Each addition of a class damages the portability of the Markdown files and makes moving to a different Jekyll theme (or a different static site generator) more difficult.
Besides, standard Markdown elements suffice for most documentation.
Labels for APIs
Each API operation has a label indicating when it was introduced. For most operations, this label is 1.0:
## Get roles
Introduced 1.0
{: .label .label-purple }
If we introduce a breaking change to an operation, add an additional label with a link to the release note for that breaking change:
## Get roles
Introduced 1.0
{: .label .label-purple }
[Last breaking change 2.0](https://example.com)
{: .label .label-red }
Math
If you want to use the sorts of pretty formulas that MathJax allows, add has_math: true
to the Jekyll page metadata. Then insert LaTeX math into HTML tags with the rest of your Markdown content:
## Math
Some Markdown paragraph. Here's a formula:
<p>
When \(a \ne 0\), there are two solutions to \(ax^2 + bx + c = 0\) and they are
\[x = {-b \pm \sqrt{b^2-4ac} \over 2a}.\]
</p>
And back to Markdown.
Code of conduct
This project has adopted an Open Source Code of Conduct.
Security
See CONTRIBUTING for more information.
License
This project is licensed under the Apache-2.0 License.
Copyright
Copyright OpenSearch contributors.