This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<h2><aclass="toc-backref"href="#id3"role="doc-backlink">Prime directives: Privacy, Hackability</a><aclass="headerlink"href="#prime-directives-privacy-hackability"title="Link to this heading">¶</a></h2>
<p>SearXNG has two prime directives, <strong>privacy-by-design and hackability</strong> . The
hackability comes in three levels:</p>
<ulclass="simple">
<li><p>support of search engines</p></li>
<li><p>plugins to alter search behaviour</p></li>
<li><p>hacking SearXNG itself</p></li>
</ul>
<p>Note the lack of “world domination” among the directives. SearXNG has no
intention of wide mass-adoption, rounded corners, etc. The prime directive
“privacy” deserves a separate chapter, as it’s quite uncommon unfortunately.</p>
<sectionid="privacy-by-design">
<h3><aclass="toc-backref"href="#id4"role="doc-backlink">Privacy-by-design</a><aclass="headerlink"href="#privacy-by-design"title="Link to this heading">¶</a></h3>
<p>SearXNG was born out of the need for a <strong>privacy-respecting</strong> search tool which
can be extended easily to maximize both, its search and its privacy protecting
capabilities.</p>
<p>A few widely used features work differently or turned off by default or not
implemented at all <strong>as a consequence of privacy-by-design</strong>.</p>
<p>If a feature reduces the privacy preserving aspects of searx, it should be
switched off by default or should not implemented at all. There are plenty of
search engines already providing such features. If a feature reduces the
protection of searx, users must be informed about the effect of choosing to
enable it. Features that protect privacy but differ from the expectations of
the user should also be explained.</p>
<p>Also, if you think that something works weird with searx, it’s might be because
of 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 good
feedback to reconsider the disrespect to its customers (e.g. <codeclass="docutils literal notranslate"><spanclass="pre">GET</span></code> vs <codeclass="docutils literal notranslate"><spanclass="pre">POST</span></code>
requests in various browsers).</p>
<p>Remember the other prime directive of SearXNG is to be hackable, so if the above
privacy concerns do not fancy you, simply fork it.</p>
<blockquote>
<div><p><em>Happy hacking.</em></p>
</div></blockquote>
</section>
</section>
<sectionid="code">
<h2><aclass="toc-backref"href="#id5"role="doc-backlink">Code</a><aclass="headerlink"href="#code"title="Link to this heading">¶</a></h2>
<asideclass="sidebar">
<pclass="sidebar-title">Create good commits!</p>
<ulclass="simple">
<li><p><aclass="reference external"href="https://wiki.openstack.org/wiki/GitCommitMessages#Structural_split_of_changes">Structural split of changes</a></p></li>
<p>In order to submit a patch, please follow the steps below:</p>
<ul>
<li><p>Follow coding conventions.</p>
<ulclass="simple">
<li><p><aclass="reference external"href="https://www.python.org/dev/peps/pep-0008/">PEP8</a> standards apply, except the convention of line length</p></li>
<li><p>Maximum line length is 120 characters</p></li>
</ul>
</li>
<li><p>The cardinal rule for creating good commits is to ensure there is only one
<em>logical change</em> per commit / read <aclass="reference external"href="https://wiki.openstack.org/wiki/GitCommitMessages#Structural_split_of_changes">Structural split of changes</a></p></li>
<li><p>Check if your code breaks existing tests. If so, update the tests or fix your
code.</p></li>
<li><p>If your code can be unit-tested, add unit tests.</p></li>
<li><p>Add yourself to the <aclass="extlink-origin reference external"href="https://github.com/searxng/searxng/blob/master/AUTHORS.rst">git://AUTHORS.rst</a> file.</p></li>
<p>For more help on getting started with SearXNG development, see <aclass="reference internal"href="quickstart.html#devquickstart"><spanclass="std std-ref">Development Quickstart</span></a>.</p>
</section>
<sectionid="translation">
<h2><aclass="toc-backref"href="#id6"role="doc-backlink">Translation</a><aclass="headerlink"href="#translation"title="Link to this heading">¶</a></h2>
<p>Translation currently takes place on <aclass="reference internal"href="translation.html#translation"><spanclass="std std-ref">weblate</span></a>.</p>
</section>
<sectionid="documentation">
<spanid="contrib-docs"></span><h2><aclass="toc-backref"href="#id7"role="doc-backlink">Documentation</a><aclass="headerlink"href="#documentation"title="Link to this heading">¶</a></h2>
<asideclass="sidebar">
<pclass="sidebar-title">The reST sources</p>
<p>has been moved from <codeclass="docutils literal notranslate"><spanclass="pre">gh-branch</span></code> into <codeclass="docutils literal notranslate"><spanclass="pre">master</span></code> (<aclass="extlink-origin reference external"href="https://github.com/searxng/searxng/blob/master/docs">git://docs</a>).</p>
</aside>
<p>The documentation is built using <aclass="reference external"href="https://www.sphinx-doc.org">Sphinx</a>. So in order to be able to generate
the required files, you have to install it on your system. Much easier, use
our <aclass="reference internal"href="makefile.html#makefile"><spanclass="std std-ref">Makefile & ./manage</span></a>.</p>
<p>Here is an example which makes a complete rebuild:</p>
<spanid="make-docs-live"></span><h3><aclass="toc-backref"href="#id8"role="doc-backlink">live build</a><aclass="headerlink"href="#live-build"title="Link to this heading">¶</a></h3>
<asideclass="sidebar">
<pclass="sidebar-title">docs.clean</p>
<p>It is recommended to assert a complete rebuild before deploying (use
<p>Live builds are implemented by <aclass="reference external"href="https://github.com/executablebooks/sphinx-autobuild/blob/master/README.md">sphinx-autobuild</a>. Use environment
<codeclass="docutils literal notranslate"><spanclass="pre">$(SPHINXOPTS)</span></code> to pass arguments to the <aclass="reference external"href="https://github.com/executablebooks/sphinx-autobuild/blob/master/README.md">sphinx-autobuild</a> command. Except
option <codeclass="docutils literal notranslate"><spanclass="pre">--host</span></code> (which is always set to <codeclass="docutils literal notranslate"><spanclass="pre">0.0.0.0</span></code>) you can pass any
argument. E.g to find and use a free port, use:</p>
<spanid="id2"></span><h3><aclass="toc-backref"href="#id9"role="doc-backlink">deploy on github.io</a><aclass="headerlink"href="#deploy-on-github-io"title="Link to this heading">¶</a></h3>
<p>To deploy documentation at <aclass="extlink-docs reference external"href="https://docs.searxng.org//.">github.io</a> use Makefile target <aclass="reference internal"href="makefile.html#make-docs-gh-pages"><spanclass="std std-ref">make docs.gh-pages</span></a>, which builds the documentation and runs all the needed git add,