diff --git a/ContributionTerms.md b/ContributionTerms.md
new file mode 100644
index 0000000..159bbf7
--- /dev/null
+++ b/ContributionTerms.md
@@ -0,0 +1,77 @@
+The community of contributors to the [Melange](MelangeIntro.md) project
+wants to foster an environment where the [SoC framework](SoCOverview.md) and the
+web applications that use it are developed and improved to the benefit of
+pen source and free software organizations everywhere.  One
+way to foster such a friendly and harmonious environment is to adopt
+a set of community standards to which everyone agrees.
+
+These guidelines strive to encourage sense of community and mutual
+respect between Melange contributors, existing open source and free
+software organizations, and sponsoring organizations that use Melange
+and the SoC framework to provide programs like
+[Google Summer of Code](GSoC.md) <sup>TM</sup> that benefit many people.  The
+goal is to avoid situations like those described in
+[this talk](http://www.youtube.com/watch?v=ZSFDm3UYkeE).
+
+So, in order to participate in the Melange contributor community, you need
+to agree to abide by the same guidelines and standards that have been
+accepted by the rest of that community.  The Melange contributors, as a
+community, will update these guidelines as needed, as the community grows.
+
+## CLA
+
+A completed Contributor License Agreement (CLA) is needed in order to
+contribute to the Melange project.  Please choose the
+[CLA](ContributorLicenseAgreements.md) appropriate to your situation, complete
+it, and submit it by following the instructions in the selected CLA.
+
+## Reviews
+
+Contributions to the Melange project, including
+[source code](ContributionReviews#Code_reviews.md),
+[documentation](ContributionReviews#Documentation.md), and
+the like, are subject to reviews by the other contributors to the project.
+You need to agree to the [contribution review processes](ContributionReviews.md)
+developed by the Melange community in order to contribute to the Melange
+project.
+
+## Testing
+
+Source code contributions to the Melange project are subject to
+[testing guidelines](TestingGuidelines.md) that should be met _before_
+requesting a [code review](ContributionReviews#Code_reviews.md) of a new
+[patch](ContributionReviews#Patches.md) or
+[major feature in a developer branch](ContributionReviews#Branches.md).
+You need to agree to the [testing policies](TestingGuidelines#Policies.md)
+developed by the Melange community in order to contribute to the Melange
+project.
+
+## Mailing lists
+
+The Melange community uses a pair of mailing lists to communicate.
+The first, the
+[discussion mailing list](MailingListsGuidelines#General_discussion_list.md),
+is used for general announcements.  The second, the
+[developer mailing list](MailingListsGuidelines#Developer_list.md), is
+used strictly by project owners and members of the
+[SoC project](http://code.google.com/p/soc/) on
+[Google Code](http://code.google.com).  Please take a look at the
+[mailing list guidelines](MailingListsGuidelines.md).  Everyone
+participating on these mailing lists is asked to abide by them, not
+just Melange contributors.
+
+## IRC channel
+
+The Melange community communicates informally using the `#melange` channel
+on `irc.freenode.net` ([Freenode](http://freenode.net)).  Please take a look
+at the [IRC channel guidelines](IrcChannelGuidelines.md).  Everyone
+participating on the `#melange` channel is asked to abide by them, not
+just Melange contributors.
+
+
+---
+
+_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/ContributionTerms.wiki b/ContributionTerms.wiki
deleted file mode 100644
index f84c5d2..0000000
--- a/ContributionTerms.wiki
+++ /dev/null
@@ -1,78 +0,0 @@
-#summary Terms for contributing to Melange
-#labels Contents-Complete,Phase-Guidelines,Importance-Useful
-
-The community of contributors to the [MelangeIntro Melange] project
-wants to foster an environment where the [SoCOverview SoC framework] and the
-web applications that use it are developed and improved to the benefit of
-pen source and free software organizations everywhere.  One
-way to foster such a friendly and harmonious environment is to adopt
-a set of community standards to which everyone agrees.
-
-These guidelines strive to encourage sense of community and mutual
-respect between Melange contributors, existing open source and free
-software organizations, and sponsoring organizations that use Melange
-and the SoC framework to provide programs like
-[GSoC Google Summer of Code] ^TM^ that benefit many people.  The
-goal is to avoid situations like those described in
-[http://www.youtube.com/watch?v=ZSFDm3UYkeE this talk].
-
-So, in order to participate in the Melange contributor community, you need
-to agree to abide by the same guidelines and standards that have been
-accepted by the rest of that community.  The Melange contributors, as a
-community, will update these guidelines as needed, as the community grows.
-
-== CLA ==
-
-A completed Contributor License Agreement (CLA) is needed in order to
-contribute to the Melange project.  Please choose the 
-[ContributorLicenseAgreements CLA] appropriate to your situation, complete
-it, and submit it by following the instructions in the selected CLA.
-
-== Reviews ==
-
-Contributions to the Melange project, including
-[ContributionReviews#Code_reviews source code],
-[ContributionReviews#Documentation documentation], and
-the like, are subject to reviews by the other contributors to the project.
-You need to agree to the [ContributionReviews contribution review processes] 
-developed by the Melange community in order to contribute to the Melange
-project.
-
-==  Testing ==
-
-Source code contributions to the Melange project are subject to
-[TestingGuidelines testing guidelines] that should be met _before_
-requesting a [ContributionReviews#Code_reviews code review] of a new
-[ContributionReviews#Patches patch] or
-[ContributionReviews#Branches major feature in a developer branch].
-You need to agree to the [TestingGuidelines#Policies testing policies]
-developed by the Melange community in order to contribute to the Melange
-project.
-
-== Mailing lists ==
-
-The Melange community uses a pair of mailing lists to communicate.
-The first, the
-[MailingListsGuidelines#General_discussion_list discussion mailing list],
-is used for general announcements.  The second, the
-[MailingListsGuidelines#Developer_list developer mailing list], is
-used strictly by project owners and members of the
-[http://code.google.com/p/soc/ SoC project] on
-[http://code.google.com Google Code].  Please take a look at the
-[MailingListsGuidelines mailing list guidelines].  Everyone
-participating on these mailing lists is asked to abide by them, not
-just Melange contributors.
-
-== IRC channel ==
-
-The Melange community communicates informally using the `#melange` channel
-on `irc.freenode.net` ([http://freenode.net Freenode]).  Please take a look
-at the [IrcChannelGuidelines IRC channel guidelines].  Everyone
-participating on the `#melange` channel is asked to abide by them, not
-just Melange contributors.
-
-----
-_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
