8 The documentation on docs.ceph.com is generated from the restructuredText
9 sources in ``/doc/`` in the Ceph git repository.
11 Please make sure that your changes are written in a way that is intended
12 for end users of the software, unless you are making additions in
13 ``/doc/dev/``, which is the section for developers.
15 All pull requests that modify user-facing functionality must
16 include corresponding updates to documentation: see
17 `Submitting Patches`_ for more detail.
19 Check your .rst syntax is working as expected by using the "View"
20 button in the github user interface when looking at a diff on
21 an .rst file, or build the docs locally using the ``admin/build-doc``
24 For more information about the Ceph documentation, see
25 :doc:`/start/documenting-ceph`.
30 C and C++ can be documented with Doxygen_, using the subset of Doxygen
31 markup supported by Breathe_.
33 .. _Doxygen: http://www.stack.nl/~dimitri/doxygen/
34 .. _Breathe: https://github.com/michaeljones/breathe
36 The general format for function documentation is::
41 * Detailed description when necessary
43 * preconditons, postconditions, warnings, bugs or other notes
46 * return value (if non-void)
49 This should be in the header where the function is declared, and
50 functions should be grouped into logical categories. The `librados C
51 API`_ provides a complete example. It is pulled into Sphinx by
52 `librados.rst`_, which is rendered at :doc:`/rados/api/librados`.
54 .. _`librados C API`: https://github.com/ceph/ceph/blob/master/src/include/rados/librados.h
55 .. _`librados.rst`: https://github.com/ceph/ceph/raw/master/doc/rados/api/librados.rst
63 You can use Graphviz_, as explained in the `Graphviz extension documentation`_.
65 .. _Graphviz: http://graphviz.org/
66 .. _`Graphviz extension documentation`: http://sphinx.pocoo.org/ext/graphviz.html
76 Most of the time, you'll want to put the actual DOT source in a
77 separate file, like this::
79 .. graphviz:: myfile.dot
87 .. _Ditaa: http://ditaa.sourceforge.net/
91 +--------------+ /=----\
92 | hello, world |-->| hi! |
93 +--------------+ \-----/
99 If a use arises, we can integrate Blockdiag_. It is a Graphviz-style
100 declarative language for drawing things, and includes:
102 - `block diagrams`_: boxes and arrows (automatic layout, as opposed to
104 - `sequence diagrams`_: timelines and messages between them
105 - `activity diagrams`_: subsystems and activities in them
106 - `network diagrams`_: hosts, LANs, IP addresses etc (with `Cisco
109 .. _Blockdiag: http://blockdiag.com/
110 .. _`Cisco icons`: http://pypi.python.org/pypi/blockdiagcontrib-cisco/
111 .. _`block diagrams`: http://blockdiag.com/en/blockdiag/
112 .. _`sequence diagrams`: http://blockdiag.com/en/seqdiag/index.html
113 .. _`activity diagrams`: http://blockdiag.com/en/actdiag/index.html
114 .. _`network diagrams`: http://blockdiag.com/en/nwdiag/
120 You can use Inkscape to generate scalable vector graphics.
121 http://inkscape.org for restructedText documents.
123 If you generate diagrams with Inkscape, you should
124 commit both the Scalable Vector Graphics (SVG) file and export a
125 Portable Network Graphic (PNG) file. Reference the PNG file.
127 By committing the SVG file, others will be able to update the
128 SVG diagrams using Inkscape.
130 HTML5 will support SVG inline.
132 .. _Submitting Patches: /SubmittingPatches.rst