diff --git a/docs/hacking.rst b/docs/hacking.rst
index 996999885ef813351d14efeccfb45901fb72eee0..1c64146c5db51e3a76598f54e2d2b2502fc01bdd 100644
--- a/docs/hacking.rst
+++ b/docs/hacking.rst
@@ -1,50 +1,79 @@
-======================
-Contributor guidelines
-======================
-
-.. contents::
-
-General tips for contributing patches
-=====================================
-
-#. Official upstream repository is kept in git
- (``https://libvirt.org/git/libvirt.git``) and is browsable
- along with other libvirt-related repositories (e.g.
- libvirt-python) `online `__.
-
-#. Patches to translations are maintained via the `zanata
- project `__. If you want to fix a
- translation in a .po file, join the appropriate language team.
- The libvirt release process automatically pulls the latest
- version of each translation file from zanata.
-
-#. Contributors to libvirt projects **must** assert that they are
- in compliance with the `Developer Certificate of Origin
- 1.1 `__. This is achieved by
- adding a "Signed-off-by" line containing the contributor's name
- and e-mail to every commit message. The presence of this line
- attests that the contributor has read the above lined DCO and
- agrees with its statements.
-
-#. Make sure your patches apply against libvirt GIT. Developers
- only follow GIT and don't care much about released versions.
-
-#. Run the automated tests on your code before submitting any
- changes. That is:
-
- ::
-
- make check
- make syntax-check
-
-#. Update tests and/or documentation, particularly if you are
- adding a new feature or changing the output of a program.
-
-#. Don't forget to update the `release notes `__ by
- changing ``docs/news.xml`` if your changes are significant. All
- user-visible changes, such as adding new XML elements or fixing
- all but the most obscure bugs, must be (briefly) described in a
- release notes entry; changes that are only relevant to other
- libvirt developers, such as code refactoring, don't belong in
- the release notes. Note that ``docs/news.xml`` should be
- updated in its own commit not to get in the way of backports.
+============
+Contributing
+============
+
+These are the basics steps you need to follow to contribute to
+libvirt.
+
+Repositories and external resources
+===================================
+
+The official upstream repository is kept in git
+(``https://libvirt.org/git/libvirt.git``) and is browsable
+along with other libvirt-related repositories (e.g.
+libvirt-python) `online `__.
+
+Patches to translations are maintained via the `zanata
+project `__. If you want to fix a
+translation in a .po file, join the appropriate language team.
+The libvirt release process automatically pulls the latest
+version of each translation file from zanata.
+
+Preparing patches
+=================
+
+Make sure your patches apply against libvirt git. Developers
+only follow git and don't care much about released versions.
+
+Run the automated tests on your code before submitting any
+changes. That is:
+
+::
+
+ $ make check
+ $ make syntax-check
+
+These tests help making sure that your changes don't introduce
+regressions in libvirt, as well as validating that any new code
+follows the project's `coding style `__.
+
+If you're going to submit multiple patches, the automated tests
+must pass **after each patch**, not just after the last one.
+
+Update tests and/or documentation, particularly if you are
+adding a new feature or changing the output of a program, and
+don't forget to update the `release notes `__ if your
+changes are significant and user-visible.
+
+Submitting patches
+==================
+
+Libvirt uses a mailing list based development workflow.
+
+While preparing your patches for submissions, make sure you
+follow the `best practices `__ and, once
+you're satisfied with the result, go ahead and
+`submit your patches `__.
+
+Developer Certificate of Origin
+===============================
+
+Contributors to libvirt projects **must** assert that they are
+in compliance with the `Developer Certificate of Origin
+1.1 `__. This is achieved by
+adding a "Signed-off-by" line containing the contributor's name
+and e-mail to every commit message. The presence of this line
+attests that the contributor has read the above lined DCO and
+agrees with its statements.
+
+Further reading
+===============
+
+This page only covers the very basics, so it's recommended that
+you also take a look at the following documents:
+
+- `Programming languages `__
+- `Developer tooling `__
+- `Advanced test suite usage `__
+- `Adoption of GLib APIs `__
+- `Committer guidelines `__