|
| 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