Skip to content

Commit 5681cfe

Browse files
committed
Creating a development page markdown
1 parent 5832f43 commit 5681cfe

1 file changed

Lines changed: 82 additions & 0 deletions

File tree

docs/development.md

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
## HTTPS Everywhere Development
2+
3+
### Pointers for developers
4+
5+
- **License:** GPL version 3+ (although most of the code is GPL-2 compatible)
6+
- **Source code:** Available via Git with `git clone https://github.com/EFForg/https-everywhere.git`. You can fork and open pull requests using Github at [https://github.com/EFForg/https-everywhere](https://github.com/EFForg/https-everywhere).
7+
- **Translations:** If you would like to help translate HTTPS Everywhere into another language, you can do that [through Transifex](https://www.transifex.com/otf/torproject/).
8+
- **Bug tracker:** Use the [GitHub issue tracker](https://github.com/EFForg/https-everywhere/issues/) or the [Tor Project issue tracker](https://trac.torproject.org/projects/tor/report/19). For the Tor Project issue tracker, you can make an account or use the anonymous one — "cypherpunks"/"writecode". You won't see replies unless you put an email address in the CC field. Bugs that are caused by rulesets should be tagged "httpse-ruleset-bug", and can be viewed [in this report](https://trac.torproject.org/projects/tor/report/48).
9+
- **Mailing lists:** The [https-everywhere](https://lists.eff.org/mailman/listinfo/https-everywhere) list ([archives](https://lists.eff.org/pipermail/https-everywhere/)) is for discussing the project as a whole; the [https-everywhere-rules](https://lists.eff.org/mailman/listinfo/https-everywhere-rules) mailing list ([archives](https://lists.eff.org/pipermail/https-everywhere-rules)) is for discussing the [rulesets](https://www.eff.org/https-everywhere/rulesets) and their contents, including patches and git pull requests.
10+
- **IRC:** `#https-everywhere` on `irc.oftc.net`. If you ask a question, be sure to stay in the channel — someone may reply a few hours or a few days later.
11+
12+
### Testing and contributing changes to the source code
13+
14+
HTTPS Everywhere consists of a large number of rules for switching sites from HTTP to HTTPS. You can read more about how to write these rules [here](https://www.eff.org/https-everywhere/rulesets).
15+
16+
If you want to create new rules to submit to us, we expect them to be in the src/chrome/content/rules directory. That directory also contains a useful script, make-trivial-rule, to create a simple rule for a specified domain. There is also a script called trivial-validate.py, to check all the pending rules for several common errors and oversights. For example, if you wanted to make a rule for the example.com domain, you could run
17+
18+
bash ./make-trivial-rule example.com
19+
20+
inside the rules directory. This would create Example.com.xml, which you could then take a look at and edit based on your knowledge of any specific URLs at example.com that do or don't work in HTTPS.
21+
22+
Before submitting your change, you should test it in Firefox and/or Chrome, as applicable. You can build the latest version of the extension and run it in a standalone Firefox profile using:
23+
24+
bash ./test.sh --justrun
25+
26+
Similarly, to build and run in a standalone Chromium profile, run:
27+
28+
bash ./run-chromium.sh
29+
30+
You should thoroughly test your changes on the target site: Navigate to as wide a variety of pages as you can find. Try to comment or log in if applicable. Make sure everything still works properly.
31+
32+
After running your manual tests, run the automated tests and the fetch tests:
33+
34+
bash ./test.sh
35+
36+
bash ./fetch-test.sh
37+
38+
This will catch some of the most common types of errors, but is not a guaranteed of correctness.
39+
40+
Once you've tested your changes, you can submit them for review via any of the following:
41+
42+
- Open a pull request at [https://github.com/EFForg/https-everywhere](https://github.com/EFForg/https-everywhere).
43+
- Email https-everywhere-rules@eff.org to tell us about your changes. You can use the following command to create a patch file: `git format-patch`
44+
45+
### A quick HOWTO on working with Git
46+
47+
You may want to also look at the [Git Reference](http://gitref.org/), [GitHub Help Site](https://help.github.com/) and the [Tor Project's Git documentation](https://gitweb.torproject.org/githax.git/tree/doc/Howto.txt) to fill in the gaps here, but the below should be enough to get the basics of the workflow down.
48+
49+
First, tell git your name:
50+
51+
git config --global user.name "Your Name" git config --global user.email "you@example.com"
52+
53+
Then, get a copy of the 'origin' repository:
54+
55+
git clone https://github.com/EFForg/https-everywhere.git
56+
cd https-everywhere
57+
58+
Alternatively, if you already have a Github account, you can create a "fork" of the repository on Github at [https://github.com/EFForg/https-everywhere](https://github.com/EFForg/https-everywhere). See [this page](https://help.github.com/articles/fork-a-repo) for a tutorial.
59+
60+
Once you have a local copy of the repository, create a new branch for your changes and check it out:
61+
62+
git checkout -b my-new-rules master
63+
64+
When you want to send us your work, you'll need to add any new files to the index with git add:
65+
66+
git add ./src/chrome/content/rules/MyRule1.xml
67+
git add ./src/chrome/content/rules/MyRule2.xml
68+
69+
You can now commit your changes to the local branch. To make things easier, you should commit each xml file individually:
70+
71+
git commit ./src/chrome/content/rules/MyRule1.xml
72+
git commit ./src/chrome/content/rules/MyRule2.xml
73+
74+
Now, you need a place to publish your changes. You can create a github account here: [https://github.com/join](https://help.github.com/). [https://help.github.com/](https://help.github.com/) describes the account creation process and some other github-specific things.
75+
76+
Once you have created your account and added your remote in your local checkout, you want to push your branch to your github remote:
77+
78+
git push github my-new-rules:my-new-rules
79+
80+
Periodically, you should re-fetch the master repository:
81+
82+
git pull master

0 commit comments

Comments
 (0)