summaryrefslogtreecommitdiff
path: root/devel-docs/index.rst
blob: e9084d2672a08ca00338c65aee2c78fddbbcb7f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
Development guide for librsvg
=============================

.. toctree::
   product
   roadmap
   devel_environment
   architecture
   adding_a_property
   memory_leaks
   contributing
   ci
   text_layout
   api_observability
   releasing
   :maxdepth: 1
   :caption: Contents:

Welcome to the developer's guide for librsvg.  This is for people who
want to work on the development of librsvg itself, not for users of
the library or the `rsvg-convert` program.

If you want to modify this document, `please see its source code
<https://gitlab.gnome.org/GNOME/librsvg/-/tree/main/devel-docs>`_.

Introduction
------------

Librsvg is a project with a long history; it started 2001 as a way to
use the then-new Scalable Vector Graphics format (SVG) for GNOME's
icons and other graphical assets on the desktop.  Since then, it has
evolved into a few different tools.

- :doc:`product` - What comes out of this repository once it is compiled?
- :doc:`roadmap` - Ever-changing list of priorities for the
  maintainers; check this often!

Getting started
---------------

- :doc:`devel_environment`

FIXME: link to doc with stuff from CONTRIBUTING.md's "Hacking on librsvg"

Add basic info on cloning the repo, getting a gitlab account, forking.

Understand the code
-------------------

Tour of the code - load a file, render it.

Test suite - move tests/readme here?

- `Documentation of the library's internals <https://gnome.pages.gitlab.gnome.org/librsvg/internals/librsvg/index.html>`_

- :doc:`architecture`
- :doc:`adding_a_property`
- :doc:`memory_leaks`

Design documents
----------------

Before embarking on big changes to librsvg, please write a little
design document modeled on the following ones, and submit a merge
request.  We can then discuss it before coding.  This way we will have
a sort of big-picture development history apart from commit messages.

- :doc:`text_layout`
- :doc:`api_observability`

See https://rustc-dev-guide.rust-lang.org/walkthrough.html, section
Overview, to formalize the RFC process for features vs. drive-by
contributions.

Information for maintainers
---------------------------

- :doc:`releasing`

Overview of the maintainer's workflow.

Marge-bot.

Documentation on the CI.

References
----------

Link to SVG/CSS specs; other useful bits.

Links to Mozilla's SVG, WebKit, resvg, Inkscape.

Talks on librsvg.

Indices and tables
------------------

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`