Thanks for considering a contribution to the XRP Ledger Developer Portal!
We're thrilled you're interested and your help is greatly appreciated. Contributing is a great way to learn about the XRP Ledger (XRPL).
We are happy to review your pull requests. To make the process as smooth as possible, please read this document and follow the stated guidelines.
About This Site
The XRPL Dev Portal provides comprehensive documentation of the the XRP Ledger, including sample code and other information for developers to start building.
- assets/ - Static files used by the site's templates.
- content/ - Source files used to build the documentation. Mostly in Markdown.
- content/_code-samples/ - Code samples used or referenced by the documentation. Where possible, these are fully functional / executable scripts.
- content/_img-sources/ - Source files for images used in the documentation. Any
.uxffiles are diagrams made with Umlet .
- content/_snippets/ - Reusable chunks of Markdown text that are included in other content files, using the Dactyl preprocessor.
- img/ - Images used by the documentation contents.
- template/ - Template files for building the HTML outputs.
- tool/ - Filters, style-checker rules, and other scripts.
- styles/ - Source files (SCSS) to generate the CSS files in the assets folder.
dactyl-config.yml- Main config file, which contains the metadata for the site. For information on our conventions, see Config Formatting.
Requirements for a Successful Pull Request
Before being considered for review or merging, each pull request must: - Pass continuous integration tests. - Be marked as drafts until they are ready for review. - Adhere to the code of conduct for this repository.
The portal is built using Dactyl .
pip3 install dactyl
Building the Site
This outputs the generated contents to the
out/ directory. These contents can be opened in a web browser as files or served as static content by a web server.
You can also run link checking or style checking from the root directory.
Link checking should be run after emptying the output folder and then building:
Style checking is experimental:
The templates in this repository use metadata from the
dactyl-config.yml file as well as the pages' frontmatter to generate navigation elements in the site, including header, footer, sidebars, and breadcrumbs.
If you add a new page, you must add it to the appropriate page in the pages array of the
dactyl-config.yml file. An example entry looks like this:
- md: concepts/the-rippled-server/the-rippled-server.md targets: - en - ja # Include in all targets unless you have a translation
The Markdown file itself should start with a frontmatter stanza such as the following:
--- html: the-rippled-server.html parent: concepts.html template: pagetype-category.html.jinja blurb: rippled is the core peer-to-peer server that manages the XRP Ledger. This section covers concepts that help you learn the "what" and "why" behind fundamental aspects of the rippled server. ---
Most pages should have
blurb fields in the frontmatter, and the
targets fields in the config file. For a fill list
Use the following conventions when creating a page:
- The HTML filename and MD filename should match exactly except for the file extension.
- The filenames should closely match the title of the page, including words like "and" and "the", but should be in all lowercase with hyphens instead of spaces and punctuation. For example,
cash-a-check-for-an-exact-amount.md. If you change the title of a page, change the filename too. (If it has already been published at another URL, leave a redirect from the old URL.)
- Always start a page with a h1 header.
- Don't link to the top h1 anchor of a page, link to the page itself without an anchor. This helps prevent broken links in translation. It's OK to link to later headers.
- Don't use any formatting (like italics or
code font) in the title of the page.
- Don't hard-wrap text in Markdown files.
- For code samples, try to keep lines no longer than 80 columns wide.
- When in doubt, follow Ciro Santilli's Markdown Style Guide (Writability Profile) .
The page within a category should be in a subfolder named for that category but can be less verbose (especially if the page title includes words also in the parent directories), should have the filename
index.md, and a title that is similar to the folder name. For example, the "Protocol Reference" index page is at
Use the following words and phrases as described:
|Term||Terms to Avoid||Notes|
|API, APIs||API's, RPC||Application Programming Interface, a set of functions and definitions for software to connect to other software.|
|core server, core XRP Ledger server||
|financial institution||bank, FI, PSP (payment services provider)||This term encompasses a wider range of businesses than just bank or other terms and does not rely on an understanding of industry jargon.|
|ledger entry||ledger object, node||A single object inside the state data of the XRP Ledger. The term ledger object could refer to one of these or to the whole ledger. The term node was sometimes used for this case because the ledger's state data can be envisioned as a graph, but this is confusing because node has other uses.|
|liquidity provider||market maker||A business or individual who offers to exchange between two currencies or assets, often deriving income from the price differential between trades. The term market maker has a specific legal definition in some jurisdictions and may not apply in all the same circumstances.|
|malicious actor||hacker||A person, organization, or even an automated tool which might attempt to acquire secrets, break encryption, deny service, or otherwise attack a secure resource.|
|a NFT||an NFT||A NFT object in the XRP Ledger tracks or represents a non-fungible token. Pronounced "nifty" and written a NFT rather than an NFT.|
|PostgreSQL||Postgres||A specific brand of relational database software. Always use the full name, not an informal short version.|
|order book||orderbook, offer book||A collection of trade orders waiting to be matched and executed, typically sorted by exchange rate. Use two words.|
|stablecoin issuer||gateway||An issuer is the organization that issues a token in the XRP Ledger. A stablecoin is a token where the issuer promises that it is fully backed by some outside asset (such as fiat currency), with the stablecoin issuer providing deposit and withdraw operations to convert between the two (possibly for a fee). Previously the term gateway was used (especially by Ripple, the company) to describe this use case, but the rest of the industry adopted stablecoin issuer instead.|
|transaction cost||transaction fee||The amount of XRP burnt to send a transaction in the XRP Ledger. Even though this is specified in the
|trust line||trustline||Use two words. A trust line is a relationship between two accounts in the XRP Ledger that tracks a balance of tokens between those accounts.|
|tokens||IOUs, issuances, issues, issued currencies||A token in the XRP ledger may not represent money owed outside of the ledger as the name IOU implies. Specify fungible tokens if necessary to distinguish from non-fungible tokens.|
|wallet||wallet||Depending on the context, wallet could refer to hardware, software, a cryptographic key pair, or an online service. Be sure to provide enough context that the meaning is clear, or use an alternative such as key pair or client application.|
|WebSocket||web socket, Websockets||A two way protocol for communication on the web. Always singular and in CamelCase.|
|XRP||XRPs, ripples||The native digital asset, or cryptocurrency, of the XRP Ledger. XRP is not a token.|
|the XRP Ledger||XRP Ledger (no the), Ripple, Ripple Network, RCL||The XRP Ledger was called the Ripple network and the Ripple Consensus Ledger or RCL at various times in the past. These names were confusing and have been retired because of their similarity to the name of the company, Ripple (formerly Ripple Labs) which develops the reference implementation of the core server.|
|XRPL||XRPL||Short for XRP Ledger. As much as possible, spell out XRP Ledger instead; XRPL is cryptic and looks like it could be a typo for XRP.|
The fronmatter for a Markdown file in this repo can contain arbitrary key-value pairs; the config file entry for the page can add to those or override them. The following fields have specific uses or meaning:
||String||Output filename for the page. Should end in
||String||The exact, unique
||String||Human-readable summary of the page. (Plain text only.) Should be about 1 sentence long. This appears in various places, including landing pages and metadata used in unfurling links on social media.|
||String||Human-readable page name. (Plain text only.) For files with Markdown content, you should omit this so that Dactyl can automatically detect it from a header on the first line of the contents instead. This is usually only provided on landing pages or other special pages with no Markdown source file.|
||String||The filename of a template file to use (in the
||String||Use the value
||Number||Adjust the indentation level for the page in the top nav dropdowns. Level
||String||Filename of an image (in
||String||Filename of an image (in
||String||Text to appear in "call to action" buttons that link to this page (on special landings).|
||Array of Objects||A set of anchors in this page to show, similar to child pages, in landings. Each object in the array should have a human-readable
||Array of Strings||A list of additional filters to use on this page. Filters are Python scripts that provide additional pre- or post-processing of page contents.|
||String||Provides the canonical URL for a page that takes query parameters. Search engines and other tools may use this when linking to the page.|