Contributing documentation to Cutter
====================================

If you reached this place you were probably looking to help and improve Cutter's documentation - Fantastic, welcome aboard!

As many other young projects, Cutter has a problem - it lacks comprehensive documentation and written content. Thankfully, contributing to Cutter's documentation doesn’t require you to have a deep knowledge about the internals of the project. Writing, reviewing, and editing the documentation are great ways to learn about Cutter.

Don’t like the way something reads? Discover some information that wasn’t documented? Your pull request will be gleefully embraced.

.. note::
   The documentation of Cutter is written using `Sphinx and reStructuredText <https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html>`_. The syntax is quite straight forward and very similar to Markdown. In the future, we hope to move completely to Markdown as it is more popular.


How can you help?
-----------------

The following sections suggest ways you can contribute to Cutter's documentation. The list isn't complete as the possibilities are limitless.

The source for this documentation is available in the `docs directory <https://github.com/rizinorg/cutter/tree/dev/docs>`_ on Cutter's repository. This source can be generated according to the steps described in the :ref:`building docs page<contributing/docs/building-docs:Building docs>`. When the docs are updated, they are generated and pushed directly to the website at <https://cutter.re/docs>. The source for the website and blog are available on the `cutter.re's repository <https://github.com/rizinorg/cutter.re>`_ and are served from the ``gh-pages`` branch.

.. tip::
  Document what you wished to see. If you are a user of Cutter, try to think what things you would want to see documented when you started using the project. Sometimes, the best contributions are coming from your own needs.

User documentation
^^^^^^^^^^^^^^^^^^

The documentation for users describes how to use Cutter and what the different features in Cutter do. The possibilities for contributing are endless since there are so many features that weren't even described on our docs yet. To contribute to our user documentation, all you need to do is pick a subject, widget, or functionality and document it. Describe the different visual components, how to use them, and what this feature even does.

Common Errors and Troubleshooting
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

As our community gets bigger, more and more people are using, installing or building Cutter on different setups. Naturally, different environments might cause different issues. The :ref:`common issues<user-docs/common-issues:Common Issues>` section in our docs aims to go over the most popular issues that you might face while using Cutter and the :ref:`building errors troubleshooting<building:Troubleshooting>` section goes over common errors that you might face while building Cutter from sources. These docs sections also explain what causes these issues and how to solve them.

If you know of such a common issue, whether you faced it yourself or noticed it on our community chats, it will be very helpful if you could document it and possible solutions for it.


Developers documentation
^^^^^^^^^^^^^^^^^^^^^^^^

The documentation for Cutter developers aims to instruct new contributors on how to get started with developing to Cutter's codebase. It also describes best practices and development guidelines for all developers in the project. Think you have something to add to the developers' docs? We would love you to contribute.

API documentation
^^^^^^^^^^^^^^^^^

The documentation for Cutter's API is an important reference for Cutter developers as well as Plugin developers. It thoroughly describes for developers how some functions and features work. While some of the functions are thoroughly documented, most of them aren't. Any help with improving these documentations will be blessed.


Blog posts
^^^^^^^^^^

We would love to see people writing and sharing their experiences with Cutter. Whether you are solving CTF challenges with Cutter, analyzing malware, finding vulnerabilities, or working on personal projects - we would love to see these published. If you have a personal blog, we would be proud to share and retweet your Cutter-related publications on our profiles, bringing you more engagement and followers. If you don't have a personal blog, we would love to host your publication on our community blog over at https://cutter.re/blog.
