Added CONTRIBUTING documentation to repository
This commit is contained in:
parent
465c170e3d
commit
d7e2fc580e
1 changed files with 162 additions and 0 deletions
162
CONTRIBUTING.md
Normal file
162
CONTRIBUTING.md
Normal file
|
@ -0,0 +1,162 @@
|
|||
# How to Contribute
|
||||
|
||||
There are many ways you can help contribute to symposion and the various apps,
|
||||
themes, and starter projects that it is made up of. Contributing code, writing
|
||||
documentation, reporting bugs, as well as reading and providing feedback on
|
||||
issues and pull requests, all are valid and necessary ways to
|
||||
help.
|
||||
|
||||
## Committing Code
|
||||
|
||||
The great thing about using a distributed versioning control system like git
|
||||
is that everyone becomes a committer. When other people write good patches
|
||||
it makes it very easy to include their fixes/features and give them proper
|
||||
credit for the work.
|
||||
|
||||
We recommend that you do all your work in a separate branch. When you
|
||||
are ready to work on a bug or a new feature create yourself a new branch. The
|
||||
reason why this is important is you can commit as often you like. When you are
|
||||
ready you can merge in the change. Let's take a look at a common workflow:
|
||||
|
||||
git checkout -b task-566
|
||||
... fix and git commit often ...
|
||||
git push origin task-566
|
||||
|
||||
The reason we have created two new branches is to stay off of `master`.
|
||||
Keeping master clean of only upstream changes makes yours and ours lives
|
||||
easier. You can then send us a pull request for the fix/feature. Then we can
|
||||
easily review it and merge it when ready.
|
||||
|
||||
|
||||
### Writing Commit Messages
|
||||
|
||||
Writing a good commit message makes it simple for us to identify what your
|
||||
commit does from a high-level. There are some basic guidelines we'd like to
|
||||
ask you to follow.
|
||||
|
||||
A critical part is that you keep the **first** line as short and sweet
|
||||
as possible. This line is important because when git shows commits and it has
|
||||
limited space or a different formatting option is used the first line becomes
|
||||
all someone might see. If your change isn't something non-trivial or there
|
||||
reasoning behind the change is not obvious, then please write up an extended
|
||||
message explaining the fix, your rationale, and anything else relevant for
|
||||
someone else that might be reviewing the change. Lastly, if there is a
|
||||
corresponding issue in Github issues for it, use the final line to provide
|
||||
a message that will link the commit message to the issue and auto-close it
|
||||
if appropriate.
|
||||
|
||||
Add ability to travel back in time
|
||||
|
||||
You need to be driving 88 miles per hour to generate 1.21 gigawatts of
|
||||
power to properly use this feature.
|
||||
|
||||
Fixes #88
|
||||
|
||||
|
||||
## Coding style
|
||||
|
||||
When writing code to be included in symposion keep our style in mind:
|
||||
|
||||
* Follow [PEP8](http://www.python.org/dev/peps/pep-0008/) there are some
|
||||
cases where we do not follow PEP8. It is an excellent starting point.
|
||||
* Follow [Django's coding style](http://docs.djangoproject.com/en/dev/internals/contributing/#coding-style)
|
||||
we're pretty much in agreement on Django style outlined there.
|
||||
|
||||
We would like to enforce a few more strict guides not outlined by PEP8 or
|
||||
Django's coding style:
|
||||
|
||||
* PEP8 tries to keep line length at 80 characters. We follow it when we can,
|
||||
but not when it makes a line harder to read. It is okay to go a little bit
|
||||
over 80 characters if not breaking the line improves readability.
|
||||
* Use double quotes not single quotes. Single quotes are allowed in cases
|
||||
where a double quote is needed in the string. This makes the code read
|
||||
cleaner in those cases.
|
||||
* Blank lines are indented to the appropriate level for the block they are in.
|
||||
* Docstrings always use three double quotes on a line of their own, so, for
|
||||
example, a single line docstring should take up three lines not one.
|
||||
* Imports are grouped specifically and ordered alphabetically. This is shown
|
||||
in the example below.
|
||||
* Always use `reverse` and never `@models.permalink`.
|
||||
* Tuples should be reserved for positional data structures and not used
|
||||
where a list is more appropriate.
|
||||
* URL patterns should use the `url()` function rather than a tuple.
|
||||
|
||||
Here is an example of these rules applied:
|
||||
|
||||
# first set of imports are stdlib imports
|
||||
# non-from imports go first then from style import in their own group
|
||||
import csv
|
||||
|
||||
# second set of imports are Django imports with contrib in their own
|
||||
# group.
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.db import models
|
||||
from django.utils import timezone
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
# third set of imports are external apps (if applicable)
|
||||
from tagging.fields import TagField
|
||||
|
||||
# fourth set of imports are local apps
|
||||
from .fields import MarkupField
|
||||
|
||||
|
||||
class Task(models.Model):
|
||||
"""
|
||||
A model for storing a task.
|
||||
"""
|
||||
|
||||
creator = models.ForeignKey(User)
|
||||
created = models.DateTimeField(default=timezone.now)
|
||||
modified = models.DateTimeField(default=timezone.now)
|
||||
|
||||
objects = models.Manager()
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("task")
|
||||
verbose_name_plural = _("tasks")
|
||||
|
||||
def __unicode__(self):
|
||||
return self.summary
|
||||
|
||||
def save(self, **kwargs):
|
||||
self.modified = datetime.now()
|
||||
super(Task, self).save(**kwargs)
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse("task_detail", kwargs={"task_id": self.pk})
|
||||
|
||||
# custom methods
|
||||
|
||||
|
||||
class TaskComment(models.Model):
|
||||
# ... you get the point ...
|
||||
pass
|
||||
|
||||
|
||||
## Pull Requests
|
||||
|
||||
Please keep your pull requests focused on one specific thing only. If you
|
||||
have a number of contributions to make, then please send seperate pull
|
||||
requests. It is much easier on maintainers to receive small, well defined,
|
||||
pull requests, than it is to have a single large one that batches up a
|
||||
lot of unrelated commits.
|
||||
|
||||
If you ended up making multiple commits for one logical change, please
|
||||
rebase into a single commit.
|
||||
|
||||
git rebase -i HEAD~10 # where 10 is the number of commits back you need
|
||||
|
||||
This will pop up an editor with your commits and some instructions you want
|
||||
to squash commits down by replacing 'pick' with 's' to have it combined with
|
||||
the commit before it. You can squash multiple ones at the same time.
|
||||
|
||||
When you save and exit the text editor where you were squashing commits, git
|
||||
will squash them down and then present you with another editor with commit
|
||||
messages. Choose the one to apply to the squashed commit (or write a new
|
||||
one entirely.) Save and exit will complete the rebase. Use a forced push to
|
||||
your fork.
|
||||
|
||||
git push -f
|
Loading…
Reference in a new issue