.. _contributing: Contributing to Instaloader =========================== As an open source project, Instaloader heavily depends on the contributions from its community. In this document, we advise on how you may help Instaloader to become an even greater tool. Instaloader's development is organized on `GitHub `__, where Issues and Pull Requests are discussed. Reporting Bugs -------------- If you encounter a bug, do not hesitate to report it in our `Issue Tracker `__. When reporting a problem, please keep the following in mind: - Ensure you **use the latest version** of Instaloader. The currently-installed version can be found out with ``instaloader --version``. - Check whether there is a valid solution in our :ref:`troubleshooting` section. - Briefly **check whether the bug has already been reported**. If you find an issue reporting the same bug you encountered, comment there rather than opening a new issue. However, if unsure, please create a new issue. - State **how the bug can be reproduced**, i.e. how Instaloader was invoked when the problem occurred (of course, you may anonymize profile names etc.). - Include all **error messages and tracebacks** in the report. - If not obvious, describe **which behavior you expected** instead of what actually happened. - If we have closed an issue apparently inadvertently or inappropriately, please let us know. Writing Code or Improving the Documentation ------------------------------------------- Changes of the Instaloader source can be proposed as a `Pull Request `__. There are only few things to consider: - Base your Pull Request on the ``master`` branch if it fixes a bug, or the ``upcoming/v4.X`` (if it exists at the moment of submitting the PR) branch otherwise. - We use `Pylint `__ for error and syntax checking of the source and `MyPy `__ for type checking (Note that sometimes it might be better to disable a warning rather than adapting the code to a tool's desires). - The documentation source is located in the ``docs`` folder. The file ``cli-options.rst`` is merely an RST-formatted copy of ``instaloader --help`` output, of which the source is in ``instaloader/__main__.py``. Proposing Features ------------------ .. goal-start Instaloader's goal is to mimic the browser's behavior to access the data that is available through the Instagram web interface, pack this data into complete and easily-(re)usable python objects, and provide a user interface for the most common downloading and metadata collection tasks, without changing any of the online data. .. goal-end Prior spending effort on implementing a new feature, it might be appropriate to clarify how it could fit into the project's scope or discuss implementation details. If you feel the need to do so, please create a "feature suggestion". - Instaloader already has plenty of features. **Check the documentation** beforehand to ensure your desired suggestion is not already implemented. - Briefly **ensure that your idea has not already been suggested**. If you find an issue suggesting the same or a similar feature, share your thoughts in a comment there, instead of opening a new issue. - **Motivate the feature**, i.e. - Provide us a **use case of the feature**: How could the user invoke the new function? Which problem would it solve? If new information is obtained, how would it be further processed? - Describe already-working **alternatives of the feature** and how they compare with your proposed solution. - Briefly describe how your suggested feature **conforms with Instaloader's project goal**. - Explain your **solution ideas**. Describe your ideas on how the feature could be implemented and the underlying problem could be solved. Also describe alternatives that you have considered. Donations --------- .. donations-start It is a pleasure for us to share our Instaloader to the world, and we are proud to have attracted such an active and motivating community, with so many users who share their suggestions and ideas with us. Buying a community-sponsored beer or coffee from time to time is very likely to further raise our passion for the development of Instaloader. | For donations, we provide a PayPal.Me link and a Bitcoin address. | `PayPal.me/aandergr `__ | BTC: 1Nst4LoadeYzrKjJ1DX9CpbLXBYE9RKLwY .. donations-end .. (Discussion in :issue:`130`)