summaryrefslogtreecommitdiff
path: root/docs/hacking/index.rst
blob: ae79aa6e8edbf5831a3ceac42ab3689ab0eabc62 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
:LastChangedDate: $LastChangedDate$ 
:LastChangedRevision: $LastChangedRevision$
:LastChangedBy: $LastChangedBy$

Hacking
========================================

So you want to hack on Bitmask?  Thanks, and welcome!

This document assumes a ``Linux`` environment.

There are also ongoing documents with notes for setting up an :ref:`OSX
<osx-dev>` and a :ref:`Windows <win-dev>` working environments too,
contribution is very much welcome on those docs!

Running tests
-------------

Tox is all you need::

  tox


Test when changes are made to common/soledad
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

If you are developing against a non-published branch of ``leap.common`` or
``leap.soledad``, run instead::

  tox -e py27-dev

This expects ``leap_common`` and ``soledad`` repos to be checked out in the
parent folder.

Gitlab-runner
~~~~~~~~~~~~~

For debugging issues related to how tests are run by the gitlab CI, you need to install:

* docker_ce from docker's repositories.
* gitlab-runner from `gitlab's repositories`_

You probably want to add `sleep 9000` to allow debuggin on the docker container. For convenience, you can execute the packaging step by doing::

  make package_in_docker

Look at the ``Makefile`` to see the command that it's actually used.

If you want to run an specific test, you can do it like this::

  gitlab-runner exec docker --env BITMASK_INVITE_CODE=xxx e2e_tests
  
.. _`gitlab's repositories`: https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh


Architecture
------------ 

There is a small :ref:`explanation of the bitmask components <architecture>`
that might be helpful to get you started
with the different moving parts of the Bitmask codebase.

User Interface
--------------

The :ref:`Javascript User Interface <uidev>` has its own guide for developers.

Setup
-----

Read how to :ref:`setup your python development environment <devenv>` to start coding in no time.

Debug
-----

A must-read for debugging the Bitmask Core daemon is the :ref:`manhole HowTo <manhole>`.

Privileges
----------

Bitmask VPN needs administrative privileges. For developing, you
need to be sure that you have :ref:`installed the privileged helpers
<privileges>` and that you keep them udpated.


Contributing
------------

There are some :ref:`guidelines for contributing code <contributing>` that you
might want to check if you are insterested in developing with Bitmask.


Submitting a Bug
----------------

You can read more about how to submit a bug in the section on
`Testing and QA <../testing/index>`_.


Release
-------

We keep a :ref:`checklist <release-checklist>` for the release process.


Ideas
-----

Want to help, but you don't know where to start? Come talk to us on irc or the
mailing list!

Some areas in which we always need contribution are:

* Localization of the client (talk to elijah).
* Multiplatform gitlab runners
* Windows and OSX packaging (talk to kali)
* Windows Firewall integration for VPN
* Migrating components to py3 (look for vshyba or kali).
* Minimal C++ Qt client (see `kali's bitmaskqt5 repo`_)

.. _`kali's bitmaskqt5 repo`: https://github.com/kalikaneko/bitmaskqt5