Development guide for librsvg

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.

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.

  • Librsvg as a product - What comes out of this repository once it is compiled?

  • Roadmap - Ever-changing list of priorities for the maintainers; check this often!

Getting started

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?

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.

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

Overview of the maintainer’s workflow.

Marge-bot.

Documentation on the CI.

References

Talks on librsvg.