| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 | =================How to contribute=================Prime directives: Privacy, Hackability======================================Searx has two prime directives, **privacy-by-design and hackability** .  Thehackability comes in three levels:- support of search engines- plugins to alter search behaviour- hacking searx itselfNote the lack of "world domination" among the directives.  Searx has nointention of wide mass-adoption, rounded corners, etc.  The prime directive"privacy" deserves a separate chapter, as it's quite uncommon unfortunately.Privacy-by-design-----------------Searx was born out of the need for a **privacy-respecting** search tool whichcan be extended easily to maximize both, its search and its privacy protectingcapabilities.A few widely used features work differently or turned off by default or notimplemented at all **as a consequence of privacy-by-design**.If a feature reduces the privacy preserving aspects of searx, it should beswitched off by default or should not implemented at all.  There are plenty ofsearch engines already providing such features.  If a feature reduces theprotection of searx, users must be informed about the effect of choosing toenable it.  Features that protect privacy but differ from the expectations ofthe user should also be explained.Also, if you think that something works weird with searx, it's might be becauseof the tool you use is designed in a way to interfere with the privacy respect.Submitting a bugreport to the vendor of the tool that misbehaves might be a goodfeedback to reconsider the disrespect to its customers (e.g. ``GET`` vs ``POST``requests in various browsers).Remember the other prime directive of searx is to be hackable, so if the aboveprivacy concerns do not fancy you, simply fork it.  *Happy hacking.*Code====.. _PEP8: https://www.python.org/dev/peps/pep-0008/In order to submit a patch, please follow the steps below:- Follow coding conventions.  - PEP8_ standards apply, except the convention of line length  - Maximum line length is 120 characters- Check if your code breaks existing tests.  If so, update the tests or fix your  code.- If your code can be unit-tested, add unit tests.- Add yourself to the :origin:`AUTHORS.rst` file.- Create a pull request.For more help on getting started with searx development, see :ref:`devquickstart`.Translation===========Translation currently takes place on :ref:`transifex <translation>`... caution::   Please, do not update translation files in the repo.Documentation=============.. _Sphinx: http://www.sphinx-doc.org.. _reST: http://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html.. sidebar:: The reST sources   has been moved from ``gh-branch`` into ``master`` (:origin:`docs`).The documentation is built using Sphinx_.  So in order to be able to generatethe required files, you have to install it on your system.  Much easier, useMakefile our targets.Here is an example which makes a complete rebuild:.. code:: sh   $ make docs-clean docs   ...   The HTML pages are in dist/docs.live build----------.. sidebar:: docs-clean   It is recommended to assert a complete rebuild before deploying (use   ``docs-clean``).Live build is like WYSIWYG, If you want to edit the documentation, itsrecommended to use.  The Makefile target ``docs-live`` builds the docs, opens URLin your favorite browser and rebuilds every time a reST file has been changed... code:: sh   $ make docs-live   ...   The HTML pages are in dist/docs.   ... Serving on http://0.0.0.0:8080   ... Start watching changesdeploy on github.io-------------------To deploy documentation at :docs:`github.io <.>` use Makefile target``gh-pages``, which will builds the documentation, clones searx into a subfolder ``gh-pages``, cleans it, copies the doc build into and runs all theneeded git add, commit and push:.. code:: sh   $ make docs-clean gh-pages   ...   SPHINX    docs --> file://<...>/dist/docs   The HTML pages are in dist/docs.   ...   Cloning into 'gh-pages' ...   ...   cd gh-pages; git checkout gh-pages >/dev/null   Switched to a new branch 'gh-pages'   ...   doc available at --> https://asciimoo.github.io/searx
 |