Converted PythonStyleGuide.md
diff --git a/PythonStyleGuide.md b/PythonStyleGuide.md
new file mode 100644
index 0000000..c7132e9
--- /dev/null
+++ b/PythonStyleGuide.md
@@ -0,0 +1,284 @@
+Melange follows the [Google Python Style Guide](http://google-styleguide.googlecode.com/svn/trunk/pyguide.html); this document describes only those respects in which Melange's style differs from what is laid out in that document.
+
+The [SoC framework](SoCOverview.md), and
+[Melange web applications](MelangeIntro.md) built upon it, are implemented in
+Python (it is one of the programming language besides Java and Go which are currently supported by
+[Google App Engine](http://code.google.com/appengine/)). The Google Python Style Guide and these amendments to it are a
+list of dos and don'ts for Python contributions to the Melange project.
+
+The rules below are not guidelines or recommendations, but strict rules. You
+may not disregard the rules we list below except as approved on a need-to-use
+basis. But note also the advice on consistency at the end of the guide.
+
+If you have questions about these guidelines, you can send mail to the
+[developer mailing list](MailingListsGuidelines#Developer_list.md).
+Please put **Python style:** in the subject line to make it easier to locate
+these discussions in the mailing list archives.
+
+Since this style guide is documented in the Melange wiki, it can be changed via
+the existing [documentation review process](DocumentationReviews.md).  However,
+changes to the style guide should not be made lightly, since
+[consistency](PythonStyleGuide#Conclusion.md) is one of the key goals
+of this style guide, and old code will not necessarily be updated for new
+style guide changes.
+
+# Summary
+
+## Python Language Rules
+
+  1. [Imports](PythonStyleGuide#Imports.md): _Import only modules and only by name **(no wildcard imports)**_
+  1. [Function Arguments](PythonStyleGuide#Function_Arguments.md): _Pass positional arguments positionally and keyword arguments by keyword._
+  1. [Threading](PythonStyleGuide#Threading.md): _**For now, do not use** (but it is on its way as part of [issue 1596](https://code.google.com/p/soc/issues/detail?id=1596))_
+
+## Python Style Rules
+
+Programs are much easier to maintain when all files have a consistent
+style. Here is the canonical Melange Python style.
+
+  1. [Indentation](PythonStyleGuide#Indentation.md): _**2** spaces (**no tabs**),_ **differs from [PEP8](http://www.python.org/dev/peps/pep-0008/)**
+  1. [Python Interpreter](PythonStyleGuide#Python_Interpreter.md): _Variable, either omitted, `#!/usr/bin/python`, or `#!/usr/bin/python2.7`_
+  1. [Copyright And License Notices](PythonStyleGuide#Copyright_And_License_Notices.md): _Include in every file._
+  1. [Imports grouping, order and sorting](PythonStyleGuide#Imports_grouping_and_order.md): _One per line, grouped and ordered by packages, sorted alphabetically_
+  1. [Naming](PythonStyleGuide#Naming.md): _`foo_bar.py` not `foo-bar.py`,_ **some differ from [PEP8](http://www.python.org/dev/peps/pep-0008/)**
+  1. [Conclusion](PythonStyleGuide#Conclusion.md): _Look at what's around you!_
+
+# Python Language Rules
+
+## Imports
+
+**What it is:** Mechanism for making use of code between modules.
+
+**Pros:** Very flexible relative to other languages. Packages, modules, classes,
+functions, and fields all may be imported.
+
+**Cons:** `from foo import *` or `import bar.baz.Spar` is very nasty and can
+lead to serious maintenance issues because it makes it hard to find module
+dependencies.
+
+**Decision:** Import only modules. Use `as` to resolve name conflicts if
+necessary. Use `from` for all imports below top-level. Use only absolute
+imports; do not use relative imports. Do not import packages, classes,
+functions, fields, or anything that is not a module.
+
+```
+import os
+import sys
+
+from models.graphics import views as graphics_views
+from models.sounds import views as sounds_views
+from sound.effects import echo
+...
+echo.echofilter(input, output, delay=0.7, atten=4)
+```
+
+Even if the module is in the same package, do not directly import the module
+without the full package name. This might cause the package to be imported
+twice and have unintended side effects.
+
+## Function Arguments
+
+**What they are:** Arguments passed to functions either by position or by name.
+
+**Pros:** Passing arguments always by name can help code be self-documenting.
+
+**Cons:** Passing positional arguments by name can make a call site appear as
+though all arguments are optional. Passing keyword arguments by position can
+make a call site appear as though all arguments are required.
+
+**Decision:** Always pass positional arguments positionally and keyword
+arguments by keyword.
+
+## Threading
+
+Melange as of January 2013 is not thread-safe. Work to support thread safety
+is happening as part of [https://code.google.com/p/soc/issues/detail?id=1596
+issue 1596 (on Google Code)], but for now avoid threading.
+
+# Python Style Rules
+
+## Indentation
+
+_Note that this differs from
+[PEP8](http://www.python.org/dev/peps/pep-0008/)
+and instead follows the original Google Python Style guide from which
+this style guide originated._
+
+Indent your code blocks with 2 spaces. Never use tabs or mix tabs and
+spaces. In cases of implied line continuation, you should align wrapped
+elements either vertically, as per the examples in the line length
+section; or using a hanging indent of **4** spaces (not 2, so as not to be
+confused with an immediately-following nested block), in which case there
+should be no argument on the first line.
+
+**Yes:**
+
+```
+# Aligned with opening delimiter 
+foo = longFunctionName(var_one, var_two,
+                       var_three, var_four)
+
+# 4-space hanging indent; nothing on first line
+foo = longFunctionName(
+    var_one, var_two, var_three,
+    var_four)
+```
+
+**No:**
+
+```
+# Stuff on first line forbidden
+foo = longFunctionName(var_one, var_two,
+    var_three, var_four)
+
+# 2-space hanging indent forbidden
+foo = longFunctionName(
+  var_one, var_two, var_three,
+  var_four)
+```
+
+### Python Interpreter
+
+Modules which are not intended for direct execution (and which have no effect if executed) should not include a shebang line.
+
+Modules intended for direct execution should begin with a shebang line specifying the Python interpreter used to execute the program, most likely `#!/usr/bin/python` or `#!/usr/bin/python2.7`.
+
+## Copyright And License Notices
+
+Every module should feature the following either at the top or just below
+the module's shebang and blank-comment-following-shebang lines.
+
+```
+# Copyright [current year] the Melange authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+```
+
+## Imports grouping and order
+
+Imports should be on separate lines, e.g.:
+
+**Yes:**
+
+```
+import os
+import sys
+```
+
+**No:**
+
+```
+import sys, os
+```
+
+Imports are always put at the top of the file, just after any module
+comments and `__doc__` strings and before module globals and constants.
+Imports should be grouped with the order being most generic to least
+generic:
+
+  * standard library imports
+  * third-party library imports
+  * Google App Engine imports
+  * django framework imports
+  * SoC framework imports
+  * SoC-based module imports
+  * application specific imports
+  * imports from "tests/" - test utilities and Melange-specific test modules
+
+Sorting should be done alphabetically.
+
+```
+import a_standard
+import b_standard
+
+import a_third_party
+import b_third_party
+
+from a_soc import f
+from a_soc import g
+from b_soc import d
+```
+
+Resolution of clashing names between soc-framework and soc-module modules should be done by prefixing the soc-module module with the name of the soc-module from which it was imported:
+
+```
+from soc.views.helper import url_patterns
+from soc.modules.gsoc.views.helper import url_patterns as gsoc_url_patterns
+```
+
+## Naming
+
+### Names to avoid
+
+  * single character names, except for counters or iterators
+  * dashes (`-`) in any package/module name
+  * `__double_leading_and_trailing_underscore__` names (reserved by Python)
+
+### Naming convention
+
+_Note that some naming conventions differ from
+[PEP8](http://www.python.org/dev/peps/pep-0008/)
+and instead follow the original Google Python Style guide from which
+this style guide originated._
+
+  * "Internal" means internal to a module or protected or private within a class.
+  * Prepending a single underscore (`_`) has some support for protecting module variables and functions (not included with `import * from`).
+  * Prepending a double underscore (`__`) to an instance variable or method effectively serves to make the variable or method private to its class (using name mangling).
+  * Place related classes and top-level functions together in a module. Unlike Java, there is no need to limit yourself to one class per module. However, make sure the classes and top-level functions in the same module have [high cohesion](http://en.wikipedia.org/wiki/Cohesion_(computer_science)).
+  * Use `CapWords` for class names, but `lower_with_under.py` for module names.
+
+### Naming examples
+
+| **Type** | **Public** | **Internal** |
+|:---------|:-----------|:-------------|
+| _Packages_ | `lower_with_under` |              |
+| _Modules_ | `lower_with_under` | `_lower_with_under` |
+| _Classes_ | `CapWords` | `_CapWords`  |
+| _Exceptions_ | `CapWords` |              |
+| _Functions_ | `firstLowerCapWords()` | `_firstLowerCapWords()` |
+| _Global/Class Constants_ | `CAPS_WITH_UNDER` | `_CAPS_WITH_UNDER` |
+| _Global/Class Variables_ | `lower_with_under` | `_lower_with_under` |
+| _Instance Variables_ | `lower_with_under` | `_lower_with_under` _(protected)_ or `__lower_with_under` _(private)_ |
+| _Method Names_<sup>*</sup> | `firstLowerCapWords()` | `_firstLowerCapWords()` _(protected)_ or `__firstLowerCapWords()` _(private)_ |
+| _Function/Method Parameters_ | `lower_with_under` |              |
+| _Local Variables_ | `lower_with_under` |              |
+
+<sup>*</sup> Consider just using
+[direct access to public attributes](PythonStyleGuide#Access_control.md)
+in preference to getters and setters, as function calls are expensive
+in Python, and `property` can be used later to turn attribute access into a
+function call without changing the access syntax.
+
+## Conclusion
+
+_BE CONSISTENT._
+
+If you are editing code, take a few minutes to look at the code around
+you and determine its style. If spaces are used around the `if` clauses,
+you should, too. If the comments have little boxes of stars around them,
+make your comments have little boxes of stars around them, too.
+
+The point of having style guidelines is to have a common vocabulary
+of coding so people can concentrate on what you are saying rather than
+on how you are saying it. We present global style rules here so people
+know the vocabulary, but local style is also important. If code you add
+to a file looks drastically different from the existing code around it,
+it throws readers out of their rhythm when they go to read it. Try to
+avoid this.
+
+
+---
+
+_Copyright 2008 Google Inc._
+_This work is licensed under a_
+[Creative Commons Attribution 2.5 License](http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-attribution-2_5.html).
+[![](http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-2_5-88x31.png)](http://creativecommons.org/licenses/by/2.5/)
\ No newline at end of file
diff --git a/PythonStyleGuide.wiki b/PythonStyleGuide.wiki
deleted file mode 100644
index 1d18a16..0000000
--- a/PythonStyleGuide.wiki
+++ /dev/null
@@ -1,284 +0,0 @@
-#summary Style guide for Python code contributed to Melange
-#labels Contents-Complete,Phase-Guidelines,Importance-Featured,Featured
-
-Melange follows the [http://google-styleguide.googlecode.com/svn/trunk/pyguide.html Google Python Style Guide]; this document describes only those respects in which Melange's style differs from what is laid out in that document.
-
-The [SoCOverview SoC framework], and
-[MelangeIntro Melange web applications] built upon it, are implemented in
-Python (it is one of the programming language besides Java and Go which are currently supported by
-[http://code.google.com/appengine/ Google App Engine]). The Google Python Style Guide and these amendments to it are a
-list of dos and don'ts for Python contributions to the Melange project.
-
-The rules below are not guidelines or recommendations, but strict rules. You
-may not disregard the rules we list below except as approved on a need-to-use
-basis. But note also the advice on consistency at the end of the guide.
-
-If you have questions about these guidelines, you can send mail to the
-[MailingListsGuidelines#Developer_list developer mailing list].
-Please put *Python style:* in the subject line to make it easier to locate
-these discussions in the mailing list archives.
-
-Since this style guide is documented in the Melange wiki, it can be changed via
-the existing [DocumentationReviews documentation review process].  However,
-changes to the style guide should not be made lightly, since
-[PythonStyleGuide#Conclusion consistency] is one of the key goals
-of this style guide, and old code will not necessarily be updated for new
-style guide changes.
-
-= Summary =
-
-== Python Language Rules ==
-
- # [PythonStyleGuide#Imports Imports]: _Import only modules and only by name *(no wildcard imports)*_
- # [PythonStyleGuide#Function_Arguments Function Arguments]: _Pass positional arguments positionally and keyword arguments by keyword._
- # [PythonStyleGuide#Threading Threading]: _*For now, do not use* (but it is on its way as part of [https://code.google.com/p/soc/issues/detail?id=1596 issue 1596])_
-
-== Python Style Rules ==
-
-Programs are much easier to maintain when all files have a consistent
-style. Here is the canonical Melange Python style.
-
- # [PythonStyleGuide#Indentation Indentation]: _*2* spaces (*no tabs*),_ *differs from [http://www.python.org/dev/peps/pep-0008/ PEP8]*
- # [PythonStyleGuide#Python_Interpreter Python Interpreter]: _Variable, either omitted, `#!/usr/bin/python`, or `#!/usr/bin/python2.7`_
- # [PythonStyleGuide#Copyright_And_License_Notices Copyright And License Notices]: _Include in every file._
- # [PythonStyleGuide#Imports_grouping_and_order Imports grouping, order and sorting]: _One per line, grouped and ordered by packages, sorted alphabetically_
- # [PythonStyleGuide#Naming Naming]: _`foo_bar.py` not `foo-bar.py`,_ *some differ from [http://www.python.org/dev/peps/pep-0008/ PEP8]*
- # [PythonStyleGuide#Conclusion Conclusion]: _Look at what's around you!_
-
-= Python Language Rules =
-
-== Imports ==
-
-*What it is:* Mechanism for making use of code between modules.
-
-*Pros:* Very flexible relative to other languages. Packages, modules, classes,
-functions, and fields all may be imported.
-
-*Cons:* `from foo import *` or `import bar.baz.Spar` is very nasty and can
-lead to serious maintenance issues because it makes it hard to find module
-dependencies.
-
-*Decision:* Import only modules. Use `as` to resolve name conflicts if
-necessary. Use `from` for all imports below top-level. Use only absolute
-imports; do not use relative imports. Do not import packages, classes,
-functions, fields, or anything that is not a module.
-
-{{{
-import os
-import sys
-
-from models.graphics import views as graphics_views
-from models.sounds import views as sounds_views
-from sound.effects import echo
-...
-echo.echofilter(input, output, delay=0.7, atten=4)
-}}} 
-
-Even if the module is in the same package, do not directly import the module
-without the full package name. This might cause the package to be imported
-twice and have unintended side effects.
-
-== Function Arguments ==
-
-*What they are:* Arguments passed to functions either by position or by name.
-
-*Pros:* Passing arguments always by name can help code be self-documenting.
-
-*Cons:* Passing positional arguments by name can make a call site appear as
-though all arguments are optional. Passing keyword arguments by position can
-make a call site appear as though all arguments are required.
-
-*Decision:* Always pass positional arguments positionally and keyword
-arguments by keyword.
-
-== Threading ==
-
-Melange as of January 2013 is not thread-safe. Work to support thread safety
-is happening as part of [https://code.google.com/p/soc/issues/detail?id=1596
-issue 1596], but for now avoid threading.
-
-= Python Style Rules =
-
-== Indentation ==
-
-_Note that this differs from
-[http://www.python.org/dev/peps/pep-0008/ PEP8]
-and instead follows the original Google Python Style guide from which
-this style guide originated._
-
-Indent your code blocks with 2 spaces. Never use tabs or mix tabs and
-spaces. In cases of implied line continuation, you should align wrapped
-elements either vertically, as per the examples in the line length
-section; or using a hanging indent of *4* spaces (not 2, so as not to be
-confused with an immediately-following nested block), in which case there
-should be no argument on the first line.
-
-*Yes:*
-
-{{{
-# Aligned with opening delimiter 
-foo = longFunctionName(var_one, var_two,
-                       var_three, var_four)
-
-# 4-space hanging indent; nothing on first line
-foo = longFunctionName(
-    var_one, var_two, var_three,
-    var_four)
-}}}
-
-*No:*
-
-{{{
-# Stuff on first line forbidden
-foo = longFunctionName(var_one, var_two,
-    var_three, var_four)
-
-# 2-space hanging indent forbidden
-foo = longFunctionName(
-  var_one, var_two, var_three,
-  var_four)
-}}}    
-
-=== Python Interpreter ==
-
-Modules which are not intended for direct execution (and which have no effect if executed) should not include a shebang line.
-
-Modules intended for direct execution should begin with a shebang line specifying the Python interpreter used to execute the program, most likely `#!/usr/bin/python` or `#!/usr/bin/python2.7`.
-
-== Copyright And License Notices ==
-
-Every module should feature the following either at the top or just below
-the module's shebang and blank-comment-following-shebang lines.
-
-{{{
-# Copyright [current year] the Melange authors.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-#   http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-}}}
-
-== Imports grouping and order ==
-
-Imports should be on separate lines, e.g.:
-
-*Yes:*
-
-{{{
-import os
-import sys
-}}}
-
-*No:*
-
-{{{
-import sys, os
-}}}    
-
-Imports are always put at the top of the file, just after any module
-comments and `__doc__` strings and before module globals and constants.
-Imports should be grouped with the order being most generic to least
-generic:
-
- * standard library imports
- * third-party library imports
- * Google App Engine imports
- * django framework imports
- * SoC framework imports
- * SoC-based module imports
- * application specific imports
- * imports from "tests/" - test utilities and Melange-specific test modules
-
-Sorting should be done alphabetically.
-
-{{{
-import a_standard
-import b_standard
-
-import a_third_party
-import b_third_party
-
-from a_soc import f
-from a_soc import g
-from b_soc import d
-}}}
-
-Resolution of clashing names between soc-framework and soc-module modules should be done by prefixing the soc-module module with the name of the soc-module from which it was imported:
-
-{{{
-from soc.views.helper import url_patterns
-from soc.modules.gsoc.views.helper import url_patterns as gsoc_url_patterns
-}}}
-
-== Naming ==
-
-=== Names to avoid ===
-
- * single character names, except for counters or iterators
- * dashes (`-`) in any package/module name
- * `__double_leading_and_trailing_underscore__` names (reserved by Python) 
-
-=== Naming convention ===
-
-_Note that some naming conventions differ from
-[http://www.python.org/dev/peps/pep-0008/ PEP8]
-and instead follow the original Google Python Style guide from which
-this style guide originated._
-
- * "Internal" means internal to a module or protected or private within a class.
- * Prepending a single underscore (`_`) has some support for protecting module variables and functions (not included with `import * from`).
- * Prepending a double underscore (`__`) to an instance variable or method effectively serves to make the variable or method private to its class (using name mangling).
- * Place related classes and top-level functions together in a module. Unlike Java, there is no need to limit yourself to one class per module. However, make sure the classes and top-level functions in the same module have [http://en.wikipedia.org/wiki/Cohesion_(computer_science) high cohesion].
- * Use `CapWords` for class names, but `lower_with_under.py` for module names.
-
-=== Naming examples ===
-
-|| *Type* || *Public* || *Internal* ||
-|| _Packages_ || `lower_with_under` || ||
-|| _Modules_ || `lower_with_under` || `_lower_with_under` ||
-|| _Classes_ || `CapWords` || `_CapWords` ||
-|| _Exceptions_ || `CapWords` || ||
-|| _Functions_ || `firstLowerCapWords()` || `_firstLowerCapWords()` ||
-|| _Global/Class Constants_ || `CAPS_WITH_UNDER` || `_CAPS_WITH_UNDER` ||
-|| _Global/Class Variables_ || `lower_with_under` || `_lower_with_under` ||
-|| _Instance Variables_ || `lower_with_under` || `_lower_with_under` _(protected)_ or `__lower_with_under` _(private)_ ||
-|| _Method Names_^*^ || `firstLowerCapWords()` || `_firstLowerCapWords()` _(protected)_ or `__firstLowerCapWords()` _(private)_ ||
-|| _Function/Method Parameters_ || `lower_with_under` || ||
-|| _Local Variables_ || `lower_with_under` || ||
-
-^*^ Consider just using
-[PythonStyleGuide#Access_control direct access to public attributes]
-in preference to getters and setters, as function calls are expensive
-in Python, and `property` can be used later to turn attribute access into a
-function call without changing the access syntax.
-
-== Conclusion ==
-
-_BE CONSISTENT._
-
-If you are editing code, take a few minutes to look at the code around
-you and determine its style. If spaces are used around the `if` clauses,
-you should, too. If the comments have little boxes of stars around them,
-make your comments have little boxes of stars around them, too.
-
-The point of having style guidelines is to have a common vocabulary
-of coding so people can concentrate on what you are saying rather than
-on how you are saying it. We present global style rules here so people
-know the vocabulary, but local style is also important. If code you add
-to a file looks drastically different from the existing code around it,
-it throws readers out of their rhythm when they go to read it. Try to
-avoid this.
-
-----
-_Copyright 2008 Google Inc._
-_This work is licensed under a_
-[http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-attribution-2_5.html Creative Commons Attribution 2.5 License].
-[http://creativecommons.org/licenses/by/2.5/ http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-2_5-88x31.png]
\ No newline at end of file