aboutsummaryrefslogtreecommitdiffstats
path: root/docs/feeding-back.md
diff options
context:
space:
mode:
authorMatthew Somerville <matthew-github@dracos.co.uk>2018-09-27 14:56:52 +0100
committerMatthew Somerville <matthew-github@dracos.co.uk>2018-09-27 14:56:52 +0100
commitb3fea58c6f9a29ec5fb428d82c25e3a82ac962af (patch)
treef7b79502c8bcbc158451c205944ee8d337750f8e /docs/feeding-back.md
parent371927debffc6bb42d8d86a90afc715d1d837e74 (diff)
Move docs from gh-pages branch.
Diffstat (limited to 'docs/feeding-back.md')
-rw-r--r--docs/feeding-back.md90
1 files changed, 90 insertions, 0 deletions
diff --git a/docs/feeding-back.md b/docs/feeding-back.md
new file mode 100644
index 000000000..a52b030a3
--- /dev/null
+++ b/docs/feeding-back.md
@@ -0,0 +1,90 @@
+---
+layout: page
+title: Feeding back your changes
+---
+
+# Feeding back your changes
+
+<p class="lead">We want people using the code to keep it as up to date as they can, so that
+they gain the benefits of any changes made to the code by us or by other users.
+To do this, we need your help when you are making changes to the code, feeding
+the changes back to us and <a href="{{ "/updating/" | relative_url }}">updating your code</a>.</p>
+
+**If you haven't done this, don't panic!**
+Everything is solvable, and we fully understand that what little
+time you have has been better spent getting the code to work at all for you
+than to make sure it was done in the best possible way for the future. Get in
+touch to discuss how best we can bring things together.
+
+## 0. Setting up a fork of the repository to work on
+
+Firstly, fork our repository on GitHub -- go to
+[https://github.com/mysociety/fixmystreet](https://github.com/mysociety/fixmystreet)
+and hit the Fork button.
+
+If you've run the install script or used the AMI, the checkout there will be
+pointing at the mysociety repository. Let's add a new remote pointing at your
+fork, replacing username with your GitHub username:
+
+ git remote add fork https://github.com/<username>/fixmystreet
+ git fetch fork
+ git checkout -b our-master
+ git push -u fork our-master
+
+You can then make commits on the our-master branch. To then push your commits
+to your fork, you would use:
+
+ git push fork our-master
+
+## 1. Make small, atomic changes
+
+Git is easiest to work with if you make small, coherent commits, with good
+commit messages. That way, it is easier to rearrange and adjust in order to get
+things back upstream with pull requests and merges.
+
+Even if you're working on your own on a fork, please do use git appropriately,
+because that will only make it easier to integrate changes in the future. If
+you simply edit files without any sort of version control, you will make things
+very hard for yourself as well as for us.
+
+## 2. Only make the minimal changes necessary
+
+Please do not copy all the templates and all the stylesheets into your own
+cobrand directories and then hack them until they work how you want. If you do
+that, you will find it very hard to incorporate any changes and fixes to the
+parent templates/CSS that are made, as your own forked copies will override
+them.
+
+Instead, copy only the templates, or bits of templates, you need, and inherit
+the existing CSS and change only what you need to change. If you only want to
+change one bit of a template, consider the following options:
+
+1. If it's a tiny one line change, perhaps simply add an `IF` statement to the
+template using `c.cobrand.moniker`. There are many such examples in the
+existing templates.
+2. If it's slightly larger, think about creating a new template containing the
+relevant bit of this template, which you can then override in your cobrand
+template directory. Again, there are many existing examples.
+3. Only now consider copying a whole template, if you need to make substantial
+changes to the parent. And be aware of having to notice changes to the parent
+that might affect your copy.
+
+If you need to change the CSS, override it in your cobrand's `base.scss` or
+`layout.scss` -- consider if the CSS could be changed, e.g. a variable added,
+in order to reduce the amount of overriding needed. But in general the amount
+needed is not large.
+
+## 3. Changing the core code
+
+If you need to make a change to some code that isn't in your cobrand's
+templates, front end files, or cobrand `.pm` file, which may be necessary,
+consider that other people may already be using the existing code. Can you add
+a hook to a function in your cobrand file, so current users are unaffected? Do
+feel free to [ask on the mailing list](/community/) about your proposed changes
+and how best they could be implemented.
+
+Please implement your changes in a fork of the repository on GitHub and submit
+a pull request as soon as you can so that the changes can be discussed and
+incorporated as soon as possible, reducing the amount of time your code and
+upstream are apart.
+