b58-interface specifies interfaces for two programs related to Base58-encoding. This is a family of encoding schemes used by Bitcoin, as well as in various online services including URL shorteners and photo web sites.
The program for encoding is b58. The program for decoding is b58-dec.
The interface definitions are authored in mdoc format, which allows
semantic markup of interface elements such as options and other
command line arguments. Files in this format can also
be displayed directly with the man
program.
HTML versions are included in the html
subdirectory. These can be
regenerated by running ./configure && make html
.
As a convenience to packagers and end-users, the autotools build
system is used. This allows the manpages to be installed to the
system's standard location using ./configure && make install
.
Automatic installation of the html versions is not currently supported.
Each released version of this interface has a unique version number. Once a version has been released, it will not be redefined.
Reasonable efforts will be made to maintain backwards compatibility with previous versions of the interface. If a backwards-incompatible change is made, a version will first be released containing a warning that this aspect of the interface is subject to change, as a courtesy to interface consumers. This will be followed by a period of at least one year before the incompatible version is released. The major version of the number will also be increased at this point. In practice, any improved redesigns of the interface which are backwards incompatible in a way that could cause serious issues for interface consumers are likely to be defined using a whole new set of names, thus leaving b58-interface unaffected.
In this context we consider adding new interface elements to be a backwards-compatible change, but changing the meaning of existing elements to be backwards-incompatible.
Unreleased versions are not included when considering backwards compatibility.
The specification is released under the Apache Software License 2.0. See the LICENSE file or http://www.apache.org/licenses/LICENSE-2.0 for more information.
The intention is that it should be easy for implementors to include all or part of the interface specification in their works, for example bundling manpages with their implementations.