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…
	
	Add table
		
		Reference in a new issue
	
	 Brian Rosner
						Brian Rosner